標(biāo)題:
巡線小車(chē) 三路傳感器單片機(jī)源碼
[打印本頁(yè)]
作者:
動(dòng)物園園長(zhǎng)
時(shí)間:
2018-4-8 12:27
標(biāo)題:
巡線小車(chē) 三路傳感器單片機(jī)源碼
單片機(jī)源程序如下:
int you=18;
int zuo=14;
int zhong=16;
void setup()
{
pinMode( you, INPUT);//youbian
pinMode( zhong, INPUT);//zhognjian
pinMode( zuo, INPUT);//zuobian
pinMode( 10, OUTPUT);
pinMode( 6, OUTPUT);
pinMode( 5, OUTPUT);
pinMode( 9, OUTPUT);
}
void loop()
{
tracing();
}
void tracing()
{
if (( !( digitalRead(zhong) ) && ( digitalRead(zuo) && digitalRead(you) ) ))
{go2();}
if (( digitalRead(zhong) && ( digitalRead(zuo) && digitalRead(you) ) ))
{go6();}
if (( !( digitalRead(zhong) ) && ( !( digitalRead(zuo) ) && !( digitalRead(you) ) ) ))
{go3();}
if (( digitalRead(zhong) && ( digitalRead(you) && !( digitalRead(zuo) ) ) ))
{left();}
if (( !( digitalRead(zhong) ) && ( !( digitalRead(zuo) ) && digitalRead(you) ) ))
{left2();}
if (( digitalRead(zhong) && ( digitalRead(zuo) && !( digitalRead(you) ) ) ))
{right();}
if (( !( digitalRead(zhong) ) && ( digitalRead(zuo) && !( digitalRead(you) ) ) ))
{right2();}
}
void left()
{
int num2;
while(1){
num2=digitalRead(zhong); //循環(huán)判斷youbian傳感器度數(shù),
if(num2==1)
{ turnL(); //如果num2==0說(shuō)
delay(2);}
else
break; //檢測(cè)到num2==0說(shuō)明轉(zhuǎn)過(guò)頭了,跳出循環(huán),檢測(cè)三個(gè)傳感器的狀態(tài)再做出相應(yīng)動(dòng)作
}
}
void turnL()
{
analogWrite(5 , 150);
analogWrite(6 , 0);
analogWrite(9 , 0);
analogWrite(10 , 150);
}
void left2()
{
int num2;
while(1){
num2=digitalRead(zuo); //循環(huán)判斷youbian傳感器度數(shù),
if(num2==0)
{ turnL2(); //如果num2==0說(shuō)
delay(2);}
else
break; //檢測(cè)到num2==0說(shuō)明轉(zhuǎn)過(guò)頭了,跳出循環(huán),檢測(cè)三個(gè)傳感器的狀態(tài)再做出相應(yīng)動(dòng)作
}
}
void turnL2()
{
analogWrite(5 , 255);
analogWrite(6 , 0);
analogWrite(9 , 0);
analogWrite(10 , 255);
}
void right()
{
int num2;
while(1){
num2=digitalRead(zhong); //循環(huán)判斷youbian傳感器度數(shù),
if(num2==1)
{ turnR2(); //如果num2==0說(shuō)
delay(2);}
else
break; //檢測(cè)到num2==0說(shuō)明轉(zhuǎn)過(guò)頭了,跳出循環(huán),檢測(cè)三個(gè)傳感器的狀態(tài)再做出相應(yīng)動(dòng)作
}
}
void turnR2()
{
analogWrite(5 , 0);
analogWrite(6 , 150);
analogWrite(9 , 150);
analogWrite(10 , 0);
}
void right2()
{ int num2;
while(1){
num2=digitalRead(you); //循環(huán)判斷youbian傳感器度數(shù),
if(num2==0)
{ turnR(); //如果num2==0說(shuō)
delay(2);}
else
break; //檢測(cè)到num2==0說(shuō)明轉(zhuǎn)過(guò)頭了,跳出循環(huán),檢測(cè)三個(gè)傳感器的狀態(tài)再做出相應(yīng)動(dòng)作
}
}
void turnR()
{
analogWrite(5 , 255);
analogWrite(6 , 0);
analogWrite(9 , 255);
analogWrite(10 , 0);
}
void go2()
{
analogWrite(5 , 255);
analogWrite(6 , 0);
analogWrite(9 , 255);
analogWrite(10 , 0);
}
void go3()
{
analogWrite(5 , 255);
analogWrite(6 , 0);
analogWrite(9 , 255);
analogWrite(10 , 0);
}
void go6()
{
analogWrite(5 , 240);
analogWrite(6 , 10);
analogWrite(9 , 250);
analogWrite(10 , 10);
}
復(fù)制代碼
作者:
遇見(jiàn)獨(dú)角馬
時(shí)間:
2018-7-10 17:55
謝謝分享
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1