智能小车-Arduino中文社区 - Powered by Discuz! Archiver

3090zoh 发表于 2018-11-21 18:16

智能小车


   智能小车功能:能实现避障和寻线。原理:利用传感器收取周围环境的反馈信息,判断输出高低电位控制电机轮。器件:Arduino控制板×1         传感器拓展板×1         L298电机驱动板×1         小车车体套件×1   尼龙柱   传感器3p杜邦线若干 螺丝螺帽 控制流程:小车的红外传感器检测到黑线位置后发送给控制器,控制器判断应该要如何行走,再通过电机驱动控制电机转速和方向来改变小车的行驶方向。



file:///C:/Users/Administrator.OULPZ11IR0KQ3TG/AppData/Local/Temp/msohtmlclip1/01/clip_image001.giffile:///C:/Users/Administrator.OULPZ11IR0KQ3TG/AppData/Local/Temp/msohtmlclip1/01/clip_image002.giffile:///C:/Users/Administrator.OULPZ11IR0KQ3TG/AppData/Local/Temp/msohtmlclip1/01/clip_image003.giffile:///C:/Users/Administrator.OULPZ11IR0KQ3TG/AppData/Local/Temp/msohtmlclip1/01/clip_image004.gif
控制流程:小车的红外传感器检测到障碍物后发送给控制器,控制器判断应该要如何行走,再通过电机驱动控制电机转速和方向来改变小车的行驶方向。 避障:








程序:int sum;int summ;int ina=4;   电机正转或反转int pwma=5;   电机转速int inb=7;int pwmb=6;定义motospd函数void motospd(intsp1,int sp2){if(sp1<0)digitalWrite(ina,HIGH);elsedigitalWrite(ina,LOW);if(sp2<0)digitalWrite(inb,HIGH);elsedigitalWrite(inb,LOW);analogWrite(pwma,abs(sp1));analogWrite(pwmb,abs(sp2));} void setup() {pinMode(11,INPUT);pinMode(12,INPUT);pinMode(13,INPUT);pinMode(A2,INPUT);//zuobianpinMode(A3,INPUT);pinMode(A4,INPUT);Serial.begin(9600);pinMode(ina,OUTPUT);pinMode(inb,OUTPUT);} void loop() {sum=digitalRead(11);sum=digitalRead(12);sum=digitalRead(13);summ=digitalRead(A4);summ=digitalRead(A3);summ=digitalRead(A2);for(inti;i<3;i++){Serial.print(sum);Serial.print(summ);}避障部分if((sum==1)&&(sum==1)&&(sum==1))motospd(170,155);if((sum==0)&&(sum==1)&&(sum==1)){motospd(-150,135);delay(380);}if((sum==1)&&(sum==1)&&(sum==0)){motospd(150,-135);delay(380);}if((sum==0)&&(sum==0)&&(sum==0)){motospd(150,-135);delay(600);}if((sum==1)&&(sum==0)&&(sum==1)){motospd(150,0);delay(650);}if((sum==0)&&(sum==0)&&(sum==1)){motospd(0,150);delay(500);}if((sum==1)&&(sum==0)&&(sum==0)){motospd(150,0);delay(500);}if((sum==0)&&(sum==1)&&(sum==0)){motospd(170,155);}寻线部分if((summ==0)&&(summ==1)&&(summ==1)){motospd(120,0);delay(100);}elseif((summ==0)&&(summ==0)&&(summ==0))while(1){motospd(0,0);}elseif((summ==1)&&(summ==1)&&(summ==0)){motospd(0,120);delay(100);}elsemotospd(170,155);} 总结:通过这次对小车的设计,对Arduino有了全新的认识,看似简单实则很难。项目中遇到的问题:小车在转弯时头会卡住,可以改变红外传感器的感应距离,并调整两个电机的转速。

页: [1]
查看完整版本: 智能小车