使用超声波传感器找到Arduino的障碍物

时间:2017-05-19 20:50:42

标签: arduino

我试图使用2个超声波传感器为盲人制作智能手杖 检测障碍物,并在检测到障碍物时使用蜂鸣器和平板振动电机作为反馈,当障碍物时,平板电机应该打开 检测到1m - 3m之间,当蜂鸣器小于1m时检测到蜂鸣器。 最近我使用NewPing库解决了一些问题但是 代码并没有完全符合我的要求,而是在检测到物体时它会同时触发蜂鸣器和电机,如果有人可以提供帮助我会很感激。

#include <NewPing.h>

const int trigPin = 8;
const int trigPin1 = 13;
const int echoPin = 9;
const int echoPin1 = 12;
const int buzzer = 5;
const int motor = 3;

NewPing sonar1(trigPin,echoPin,maxout);
NewPing sonar2(trigPin1,echoPin1,maxout);


// defines variables
long duration;
long duration1;
int distance;
int distance1;


void setup() {

pinMode(buzzer, OUTPUT);
pinMode(motor, OUTPUT);
Serial.begin(9600);

}

void loop() {


  distance = sonar1.ping_cm();
  distance1 = sonar2.ping_cm();


 if (distance > 100 || distance1 > 100) {
   digitalWrite(buzzer,LOW);

   digitalWrite(motor,HIGH);

 }
 else if (distance <= 100 || distance1 <= 100) {

   digitalWrite(buzzer,HIGH);
   digitalWrite(motor,LOW);



 }
  Serial.print("Distance1: ");
 Serial.println(distance); 
 Serial.print("Distance2: ");
 Serial.println(distance1); 


}

这是超声波引脚:

第一个传感器(Vcc = 5V,trig = 8,echo = 9,GND = GND)

第二个传感器(Vcc = 5V,trig = 13,echo = 12,GND = GND)

这是蜂鸣器和电机引脚:

蜂鸣器= 5,GND

motor = 3,GND

1 个答案:

答案 0 :(得分:0)

分离电机和蜂鸣器的逻辑:

if (distance >= 100 && distance <= 300) {
    // Motor on
    digitalWrite(motor, HIGH);
}
else {
    // Motor off
    digitalWrite(motor, LOW);
}

if (distance1 < 100) {
    // Buzzer on
    digitalWrite(buzzer, HIGH);
}
else {
    // Buzzer off
    digitalWrite(buzzer, LOW);
}
相关问题