magiccar 發表於 2010-2-11 10:55

單晶片魔法車07-紅外線循跡車

上一個實驗,我們終於讓魔法車左右輪可以獨立控制,擁有左右轉向的能力。但是光用聲音來控制魔法車,仍然需要我們操控,無法獨立運作 。所以,接下來的實驗我們要讓魔法車更上一層樓囉!我們要給魔法車自行判斷環境的能力囉!
https://www.youtube.com/watch?v=6AItagCimo8
實驗七:紅外線循跡車

實驗內容:我們要讓魔法車依循地面黑色軌道前進。

使用材料:實驗六的材料,紅外線發射、接收器*2組,4069反相器*1
     電阻:6.2MΩ+150Ω各2個。

電路照片:

接上紅外線模組前:我們用反相器把紅外線的信號的訊號數位化


接上紅外線模組後


超酷的魔法車-右側


超酷的魔法車-左側


程式分析:
/*實驗七:紅外線循跡車*/
#include <AT89x051.h>
void delay(unsigned int tmp);      //宣告延時函數
void Go_F();
void Go_B();
void Go_R();
void Go_L();

void main(void)      //主程式開始
{
      P3_2=1;                //啟始左側紅外線輸入功能
      P3_3=1;                //啟始右側紅外線輸入功能
      while(1){
                while(P3_3==1 && P3_2==1){      //當車體在軌道中時
                        Go_F();                   //前進
                }
                while(P3_3==0){            //當右側紅外線偵測到黑線時
                        Go_R();                  //左轉...直到回到軌道中
                }
                while(P3_2==0){            //當左側紅外線偵測到黑線時
                        Go_L();                   //右轉...直到回到軌道中
                }
      }
}
/* 副程式區 */
void Go_F()
{
      P1_2=0;
      P1_3=0;
      delay(50);
}
void Go_B()
{
      P1_2=1;
      P1_3=1;
      delay(500);
}      
void Go_R()
{
      P1_2=0;
      P1_3=1;
      delay(50);
}      
void Go_L()
{
      P1_2=1;
      P1_3=0;
      delay(50);
}      
void delay(unsigned int tmp)      //延時函數
{                                                //改變參數大小,可調整時間
      unsigned char i,j;                //宣告使用到的變數
      i=tmp;                               //把呼叫程式式中的參數100指定給變數i
      while(i)                              //只要i不為0,
      {                                       //就執行{...}中的指令
                i--;                           //把i值減1
                j=255;                     // <-+
                while(j)                         //   |
                {                                  // 用j值讓程式執行256次的迴圈,到延時效果
                  j--;                           //   |
                }                              // <-+
      }
}
是不是超級簡單!來編譯好的程式在這裏囉!

magiccar 發表於 2012-9-3 11:21

gensly123 發表於 2012-9-2 02:20 static/image/common/back.gif
我發現影片中的魔法車,紅外線並非在車頭魔鬼粘位置,好像是車身左右兩測,或車底 ...

沒錯!你的觀察力很好。我這麼做是因為魔法車車身長但左右輪距短,感測器如果離轉向軸心太遠,當遇到小彎道就容易讓後輪走到黑線之外,你可以試試看哦!

gensly123 發表於 2012-9-2 02:20

我發現影片中的魔法車,紅外線並非在車頭魔鬼粘位置,好像是車身左右兩測,或車底

gensly123 發表於 2012-7-31 16:02

想請問一下,此一紅外線感測距離地面應該多少??

magiccar 發表於 2012-8-11 23:08

gensly123 發表於 2012-7-31 16:02 static/image/common/back.gif
想請問一下,此一紅外線感測距離地面應該多少??

要看地面材質對紅外線的反射率,再去調整感測器最佳的高度。所以我們用魔鬼粘,讓學生依不同的地板,來調整感測器的位置。

v751953789 發表於 2011-2-22 14:07

好期待能做出來。

ssktowtw 發表於 2014-4-5 17:14

本帖最後由 ssktowtw 於 2014-4-5 17:32 編輯

老師~可不可以po出接線圖~我也要來做一個

另外接上紅外線模組那張圖怎麼把它變成可以插上麵包板的樣子
頁: [1]
查看完整版本: 單晶片魔法車07-紅外線循跡車