兩個超音波的使用

這個實驗要利用兩個超音波模組,分別偵測左右兩邊障礙物的距離,因為使用伺服馬達時,pin9pin10PWM會失效,因此,留這兩個腳位給伺服馬達使用。


左超音波
Arduino

右超音波
Arduino
GND
GND

GND
GND
5V
5V

5V
5V
Trig
4

Trig
2
Echo
5

Echo
3


/* 兩個超音波
 *使用兩個超音波感測器偵測左右兩邊障礙物的距離。
 */
const byte  trigPinR = 2 ; // 右邊超音波 觸發腳Trig
const byte  echoPinR = 3 ;  //右邊超音波 接收腳 Echo
unsigned long distanceR ; // 距離 cm

const byte  trigPinL = 4 ; //左邊超音波 觸發腳Trig
const byte  echoPinL = 5 ;  //左邊超音波 接收腳 Echo
unsigned long distanceL ; // 距離 cm

unsigned long pingR() {
    digitalWrite(trigPinR,HIGH) ; //觸發腳位設定為高電位
    delayMicroseconds(10);   //持續5微秒
    digitalWrite(trigPinR,LOW) ;
    return  ( pulseIn(echoPinR,HIGH)/58)  ;  // 換算成 cm 並傳回
  }


unsigned long pingL() {
    digitalWrite(trigPinL,HIGH) ; //觸發腳位設定為高電位
    delayMicroseconds(10);   //持續5微秒
    digitalWrite(trigPinL,LOW) ;
    return  ( pulseIn(echoPinL,HIGH)/58)  ;  // 換算成 cm 並傳回
  }
  
void setup() {
  // put your setup code here, to run once:
  pinMode(trigPinR,OUTPUT) ;
  pinMode(echoPinR , INPUT) ;

  pinMode(trigPinL,OUTPUT) ;
  pinMode(echoPinL , INPUT) ;
  Serial.begin(9600) ;
}

void loop() {
  // put your main code here, to run repeatedly:
    String str1 ="";
    distanceR  = pingR()  ;
    distanceL  = pingL()  ;
    str1 = " Left=" + String(distanceL) + "cm , Right=" + String(distanceR) + " cm" ;
    Serial.println(str1) ;
     delay(100) ;
}