アルディーノで超音波センサーを使ったよ。
なるべく短いパルスを出してそれからpulseIn関数で往復時間をとることができます。
2で割って片道の時間にしています。
時間×速さで距離を求めているよ。
#define trigPin 6 // Trigger Pin
#define echoPin 7 // Echo Pin
double Duration = 0; //受信した間隔
double Distance = 0; //距離
void setup() {
Serial.begin( 9600 );
pinMode( echoPin, INPUT );
pinMode( trigPin, OUTPUT );
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite( trigPin, HIGH ); //超音波を出力
delayMicroseconds( 10 );
digitalWrite( trigPin, LOW );
Duration = pulseIn( echoPin, HIGH ); //センサの開始
if (Duration > 0) {
Duration = Duration/2; //往復時間を半分にする
Distance = Duration*340*100/1000000;
Serial.print("Distance:");
Serial.print(Distance);
Serial.println(" cm");
}
delay(500);
}