就是這東西
除了可以應用在運動學上之外,在「聲音」課程中,提到關於「聲納」等超音波的應用時,這就是一個可以實際上讓學生看到的應用。
理論上如果把這玩意兒塞進一根密閉的管子裡面的一端,想辦法改變裡面的氣體組成(例如灌二氧化碳進去)或是改變溫度(同時加一根溫度計給arduino就好)應該可以進行影響聲速因素的一些探究課程。
下面的code可以顯示距離發射接收的時間,如果固定距離改變介質,測量時間,就可以測量介質對聲音速度的影響
code
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
// HCSR04Ultrasonic/examples/UltrasonicDemo/UltrasonicDemo.pde
#include <Ultrasonic.h>
#define TRIGGER_PIN 12
#define ECHO_PIN 13
Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN);
void setup()
{
Serial.begin(9600);
lcd.begin(16, 2);
lcd.backlight();
}
void loop()
{
float cmMsec, inMsec;
long microsec = ultrasonic.timing();
cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM); // 計算距離,單位: 公分
inMsec = ultrasonic.convert(microsec, Ultrasonic::IN); // 計算距離,單位: 英吋
Serial.print("E");
Serial.print(" t=");
Serial.print(microsec);
Serial.print("ms ");
Serial.print("distance=");
Serial.print(cmMsec);
Serial.println("cm");
delay(1000);
lcd.clear();
lcd.setCursor(0 ,0);
lcd.print("t=");
lcd.print(microsec);
lcd.print("ms");
lcd.setCursor(0, 1);
lcd.print("D=");
lcd.print(cmMsec);
lcd.print("cm");
delay(1000);
}