我试图使用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
答案 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);
}