我已经建立了一个带有arduino的电路,它使用超声波传感器来检测汽车何时靠近物体。当汽车到达一定距离时,它将改变电动机的速度,并最终在汽车撞击物体之前停止汽车。
我内部有3个条件语句,但是当达到第一个距离时,我似乎可以改变电机的速度。程序进入else if语句并且可以从串行监视器中看到,但电机只是停止而不是减速。任何帮助将不胜感激。
// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);
// Calculating the distance
distance= duration*0.034/2;
safetyDistance = distance;
if (safetyDistance <= 5){
digitalWrite(buzzer, HIGH);
digitalWrite(ledPin, HIGH);
digitalWrite(4, LOW);
digitalWrite(3, LOW);
}
else if (safetyDistance > 5 && safetyDistance <= 50 ){
digitalWrite(buzzer, HIGH);
digitalWrite(ledPin, LOW);
digitalWrite(4, HIGH);
digitalWrite(3, LOW);
analogWrite(2, 100);
digitalWrite(6, HIGH);
digitalWrite(5, LOW);
analogWrite(7, 100);
Serial.print("Warning , slow down ");
}
else{
digitalWrite(buzzer, LOW);
digitalWrite(ledPin, LOW);
digitalWrite(4, HIGH);
digitalWrite(3, LOW);
analogWrite(2, 255);
digitalWrite(6, HIGH);
digitalWrite(5, LOW);
analogWrite(7, 255);
}
// Prints the distance on the Serial Monitor
Serial.print("Distance: ");
Serial.println(distance);
}
期望的结果是当距离小于50且大于5时电动机速度减慢。
汽车停止,因为电机太慢,他们经历static friction。
如果您想移动电机,您可以:
digitalWrite(#PIN,HIGH)
analogWrite(#PIN,1023)
我希望我能提供帮助