
超音波センサー
超音波センサーで距離を測るのがカッコよさそうなので試しました。
今華電子さんのこれです。70NTD(約270円)でした。
左側Tが送信スピーカー、 右側Rが受信マイク。
裏はこんな具合
説明はスイッチサイエンスさんのこちら
から、データシートは
https://cdn.sparkfun.com/datasheets/Sensors/Proximity/HCSR04.pdf
を、サンプルスケッチは
を参考にしました。要はTrigピンに10マイクロ秒のパルスを出力すると内部で8周期分の超音波が発射される。
pulseIn(EchoPin, HIGH);
という関数で待てば、
「信号が反射されて帰ってくるまでにかかった時間 t」がマイクロ秒単位で得られるということらしい。音速は「340m/s=0.034cm/μs」として、対象物までの距離をdとすれば、(マイクとスピーカーの幅からくる誤差は無視して)およそ2d =0.034*t
つまり、d=0.017t
これでスケッチ書いてみました。
#define TrigPin 6
#define EchoPin 8
unsigned long t;
float d;
void setup() {
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
digitalWrite(TrigPin, LOW);
delay(1000);
Serial.begin(9600);
}
void loop() {
t = measure();
d = 0.017 * t;
Serial.println(d,1);
delay(1000);
}
unsigned long measure(){
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
return pulseIn(EchoPin, HIGH);
}
これで、反射物までの距離を変えて、測定できていることを確認しました。