資源描述:
《arduino循跡小車源程序.docx》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、intled1=0,led2=0,led3=0,led4=0,led5=0,led6=0,led7=0;//電壓7.8V;led1~7分別用來(lái)接收七個(gè)探頭檢測(cè)回來(lái)的值intin1=9,in2=3,in3=10,in4=11;//數(shù)字IO口9,3,10,11用來(lái)控制電機(jī)intsum=0;voidsetup(){pinMode(0,INPUT);pinMode(7,INPUT);pinMode(1,INPUT);pinMode(8,INPUT);pinMode(2,INPUT);pinMode(3,OUTPUT);pinMode(6,I
2、NPUT);pinMode(9,OUTPUT);pinMode(4,INPUT);pinMode(10,OUTPUT);pinMode(13,INPUT);pinMode(11,OUTPUT);pinMode(12,INPUT);pinMode(5,INPUT);digitalWrite(in2,LOW);digitalWrite(in4,LOW);}voidmotor(charpwmpin,charpin,intval)//給電機(jī)兩個(gè)輸入口賦PWM值{pinMode(pin,OUTPUT);analogWrite(pwmpin,v
3、al);digitalWrite(pin,LOW);}voidturn_led1_0()//in1給20,in2給低電平{//in3給250,in4給低電平motor(in1,in2,20);//PWM滿值255,差值決定轉(zhuǎn)角度,大小決定速度motor(in3,in4,250);}voidturn_led1_1(){motor(in1,in2,20);motor(in3,in4,250);}voidturn_led2_0(){motor(in1,in2,70);motor(in3,in4,250);}voidturn_led2_1(
4、){motor(in1,in2,130);motor(in3,in4,250);}voidturn_led3_0(){motor(in1,in2,180);motor(in3,in4,250);}voidturn_led3_1(){motor(in1,in2,250);motor(in3,in4,250);}voidturn_led4_0(){motor(in1,in2,250);motor(in3,in4,250);}voidturn_led4_1(){motor(in1,in2,250);motor(in3,in4,250);}
5、voidturn_led5_0(){motor(in1,in2,250);motor(in3,in4,180);}voidturn_led5_1(){motor(in1,in2,250);motor(in3,in4,130);}voidturn_led6_0(){motor(in1,in2,250);motor(in3,in4,70);}voidturn_led6_1(){motor(in1,in2,250);motor(in3,in4,20);}voidturn_led7_0(){motor(in1,in2,250);motor(
6、in3,in4,20);}voidturn_stop(){motor(in1,in2,0);motor(in1,in2,0);}voidtest()//檢測(cè)光電管探頭。是黑線返回高電平(1),白線返回低電平(0),這與實(shí)際電路相關(guān){//0,1,2,6,4,7,8是數(shù)字IO口,讀取檢測(cè)值led1=digitalRead(0);led2=digitalRead(1);led3=digitalRead(2);led4=digitalRead(6);led5=digitalRead(4);led6=digitalRead(7);led7=d
7、igitalRead(8);}intdeal()//對(duì)每個(gè)探頭賦值:從左往右-6,-4,-2,0,2,4,6記錄檢測(cè)到黑線的探頭個(gè)數(shù)并將值相加{inta=0,b=0,c=0,d=0,e=0,f=0,g=0;inti=0,value=0;test();if(led1==1){a=-6;i++;}if(led2==1){b=-4;i++;}if(led3==1){c=-2;i++;}if(led4==1){d=0;i++;}if(led5==1){e=2;i++;}if(led6==1){f=4;i++;}if(led7==1){g=6
8、;i++;}sum=a+b+c+d+e+f+g;//求平均值,較精確的確定黑線位置if(i==0)value=8;//分母不能為0,沖出跑道均沒(méi)檢測(cè)到的特殊情況,讓小車保持上一次的狀態(tài)elseif(i<3)value=sum/i;//