アルディーノで超音波センサーを使ったよ。

なるべく短いパルスを出してそれから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);
}