|
|
做了一个超声波避障小车,但是程序写好后,超声波模块判断失灵,程序一直默认为有障碍物的情况执行电机驱动,确认模块无问题,程序如下,求指导。可能是程序的问题,求指正
[pre lang="arduino" line="1" file="避障小车"]int IN1=4;
int IN2=5;
int IN3=6;
int IN4=7;
int EN1=8;//使能端口1
int EN2=9;//使能端口2
const int TrigPin = 2;
const int EchoPin = 3;
float cm;
int p;
void setup(void)
{
// 设置串口通信波特率
Serial.begin(9600);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
}
void loop(void)
{
digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
cm = pulseIn(EchoPin, HIGH) / 58.0; //将回波时间换算成cm
cm = (int(cm * 100.0)) / 100.0; //保留两位小数
if(cm<=15 && cm>=2)
p=1;
else p=0;
if(p=1)
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(EN1,255);
analogWrite(EN2,255);
delay(10000);
}
if (p=0)
{
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
analogWrite(EN1,155);
analogWrite(EN2,155);
delay(500);
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
analogWrite(EN1,155);
analogWrite(EN2,155);
delay(300);
}
}[/code] |
|