單片機源程序如下:
- 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); //循環判斷youbian傳感器度數,
- if(num2==1)
- { turnL(); //如果num2==0說
- delay(2);}
- else
- break; //檢測到num2==0說明轉過頭了,跳出循環,檢測三個傳感器的狀態再做出相應動作
- }
- }
- void turnL()
- {
- analogWrite(5 , 150);
- analogWrite(6 , 0);
- analogWrite(9 , 0);
- analogWrite(10 , 150);
- }
- void left2()
- {
- int num2;
- while(1){
- num2=digitalRead(zuo); //循環判斷youbian傳感器度數,
- if(num2==0)
- { turnL2(); //如果num2==0說
- delay(2);}
- else
- break; //檢測到num2==0說明轉過頭了,跳出循環,檢測三個傳感器的狀態再做出相應動作
- }
- }
- void turnL2()
- {
- analogWrite(5 , 255);
- analogWrite(6 , 0);
- analogWrite(9 , 0);
- analogWrite(10 , 255);
- }
- void right()
- {
- int num2;
- while(1){
- num2=digitalRead(zhong); //循環判斷youbian傳感器度數,
- if(num2==1)
- { turnR2(); //如果num2==0說
- delay(2);}
- else
- break; //檢測到num2==0說明轉過頭了,跳出循環,檢測三個傳感器的狀態再做出相應動作
- }
- }
- void turnR2()
- {
- analogWrite(5 , 0);
- analogWrite(6 , 150);
- analogWrite(9 , 150);
- analogWrite(10 , 0);
- }
- void right2()
- { int num2;
- while(1){
- num2=digitalRead(you); //循環判斷youbian傳感器度數,
- if(num2==0)
- { turnR(); //如果num2==0說
- delay(2);}
- else
- break; //檢測到num2==0說明轉過頭了,跳出循環,檢測三個傳感器的狀態再做出相應動作
- }
- }
- 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);
- }
復制代碼
|