超声波避障小车

视频图片:
视频介绍:

超声波避障小车

 

嗯~~在经过这几天的对于各个传感器和电机的测试后,我终于于昨天晚上将其整合,初步实现了自动避障的功能~~

 

我的这个小车是用车前的超声波测距仪来测距,当距离小于一定数值时即转弯(因为现在我只有一个传感器,所以只好统一朝左转了~~)

 

放几张图~~

9CFAEE0D27859B370F0D574527ABA14F_B500_900_500_380

9CFAEE0D27859B370F0D574527ABA14F_B500_900_500_3809CFAEE0D27859B370F0D574527ABA14F_B500_900_500_3809CFAEE0D27859B370F0D574527ABA14F_B500_900_500_380      下面把代码放出来吧~~

 

int pinI1=8;//定义I1接口

int pinI2=9;//定义I2接口

int speedpin=11;//定义EA(PWM调速)接口,left

int pinI3=6;//定义I3接口

int pinI4=7;//定义I4接口

int speedpin1=10;//定义EB(PWM调速)接口right

int input=15;//超声波输出端口(发射)连接开发板模拟0

int output=14;//超声波输入端口(接收)连接开发板模拟1

void setup()

{

pinMode(pinI1,OUTPUT);

pinMode(pinI2,OUTPUT);

pinMode(speedpin,OUTPUT);

pinMode(pinI3,OUTPUT);

pinMode(pinI4,OUTPUT);

pinMode(speedpin1,OUTPUT);

pinMode(input,INPUT);

pinMode(output,OUTPUT);

}

void loop()

{

digitalWrite(output,LOW);//使发出发出超声波信号接口低电平2us

delayMicroseconds(2);

digitalWrite(output,HIGH);//使发出发出超声波信号接口高电平10us

delayMicroseconds(10);

digitalWrite(output,LOW);//保持低电平

unsigned long distance=pulseIn(input,HIGH);//读出脉冲时间

distance=int((float)distance/29.034/2);//将时间转化为距离,声音传播速度34000cm/s,所以1cm需要29.41us

delay(50);

if(distance>20)

{

//直走

analogWrite(speedpin,760);//输入模拟值进行设定速度left max 760

analogWrite(speedpin1,709);//right max unlimit

digitalWrite(pinI4,HIGH);//使直流电机(右)顺时针转

digitalWrite(pinI3,LOW);

digitalWrite(pinI1,HIGH);//使直流电机(左)逆时针转

digitalWrite(pinI2,LOW);

}

else

{

//turn left

digitalWrite(pinI4,HIGH);

digitalWrite(pinI3,LOW);

digitalWrite(pinI1,LOW);

digitalWrite(pinI2,HIGH);

}

}

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.