找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 12762|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

小白做的尋跡小車(chē)教程與單片機(jī)源程序,適合小白

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
第一次發(fā)帖,有什么不好的會(huì)改進(jìn)
適合小白的教程,只是簡(jiǎn)單的尋跡功能,
文件包含程序代碼,原理圖

制作出來(lái)的實(shí)物圖:


簡(jiǎn)單尋跡小車(chē)教程
  • 材料

  • 一個(gè)89c51或者89c52單片機(jī)
  • 一個(gè)4路紅外線(xiàn)多路探測(cè)系統(tǒng)
  • 兩個(gè)L298N驅(qū)動(dòng)電機(jī)
  • 四個(gè)小車(chē)馬達(dá)電機(jī)
如果有條件的話(huà),可以買(mǎi)模板
原理圖,因?yàn)槟衬吃�,只能手�?huà)了,有點(diǎn)丑,慢慢看

  • 89c52單片機(jī)是要有最小系統(tǒng)的,我的原理圖上沒(méi)有畫(huà)出來(lái),不懂的百度“最小系統(tǒng)”,本次實(shí)踐只是應(yīng)用單片機(jī)的P1端口和P3端口
  • 其中P3口是用來(lái)檢測(cè)紅外線(xiàn)信號(hào)的
P3.0連接1號(hào)紅外線(xiàn)端口
P3.1連接2號(hào)紅外線(xiàn)端口
P3.2連接3號(hào)紅外線(xiàn)端口
P3.3連接4號(hào)紅外線(xiàn)端口
(注;我這里的1234號(hào)紅外線(xiàn)端口可能和板子是的印刷字不一樣)
  • P1口是用來(lái)控制4個(gè)馬達(dá)的,
馬達(dá)1是由P1.0和P1.4控制
馬達(dá)2是由P1.1和P1.5控制
馬達(dá)3是由P1.2和P1.6控制
馬達(dá)4是由P1.3和P1.7控制
(解釋?zhuān)辉贚298N模板上,IN1輸入高電平,那么OUT1輸出高電平,如果IN1是低電平,那么OUT1也是低電平)同理
IN1----------OUT1
IN2----------OUT2
IN3----------OUT3
IN4----------OUT4
(L298N模板上有印刷IN,OUT的字樣)
如果要馬達(dá)轉(zhuǎn)動(dòng),對(duì)應(yīng)的端口輸入一個(gè)高電平,一個(gè)低電平就行了,



單片機(jī)源程序如下:
  1. //尋跡小車(chē)
  2. #include <reg51.h>
  3. #define hei 1                                                //紅外線(xiàn)如果探到黑色的地方,會(huì)輸出高電平
  4. #define bai 0                                                //紅外線(xiàn)如果探到白色的地方,會(huì)輸出低電平

  5. sbit s1=P3^0;                                                //p3   紅外線(xiàn)對(duì)應(yīng)端口,讀取數(shù)據(jù)
  6. sbit s2=P3^1;
  7. sbit s3=P3^2;
  8. sbit s4=P3^3;

  9. //P1口信號(hào)輸出
  10. //P1.0-P1.4控制1電機(jī)
  11. //P1.1-P1.5控制2電機(jī)
  12. //P1.2-P1.6控制3電機(jī)
  13. //P1.3-P1.7控制4電機(jī)



  14. void delay(unsigned int i)                //延時(shí)函數(shù)
  15. {
  16.         unsigned int k;
  17.         for (k=0;k<i;k++);
  18. }




  19. void main()
  20. {
  21.         while (1)
  22.                 {
  23. /**********************直走   直走  直走  直走  直走  直走  直走  直走  直走 *************************************/
  24.                         if (s1==bai && s4==bai && s2==hei && s3==hei)                //第1種,直線(xiàn)走,14為白,23為黑
  25.                                 {
  26.                                         delay(500);
  27.                                 if (s1==bai && s4==bai && s2==hei && s3==hei)
  28.                                 {                                                                                                                //p1        1 1 1 1                        分別對(duì)應(yīng)1234號(hào)馬達(dá)
  29.                                         P1=0x0f;                                                                        //                0 0 0 0                        上面是高電平,下面是低電平,四個(gè)馬達(dá)都會(huì)向前開(kāi)
  30.                                         delay(500);                                                                //延時(shí)降速,如果L298N是接12V的電源,那么馬達(dá)的速度太快了,需要降速
  31.                                         P1=0x00;                                                                        //這里降速的原理是讓馬達(dá)轉(zhuǎn)500毫秒,停一下,轉(zhuǎn)500毫秒,停一下,轉(zhuǎn)500毫秒,停一下,從而達(dá)到降速的效果
  32.                                 }                                                                                               
  33.                                 else                                                                               
  34.                                 P1=0x00;
  35.                                
  36.                 }                       
  37.        

  38. /******************                左                左                左                左                左                左                左                左                左********************************************/               
  39.                        
  40.                          else if (s1==hei)                                                        //第1種,左轉(zhuǎn),1為黑
  41.                         {
  42.                                 delay(500);
  43.                                 if (s1==hei )
  44.                                 {                                                                                                //p1  0 1 0 1                                馬達(dá)2 4向前開(kāi),馬達(dá)1 3向后開(kāi)
  45.                                         P1=0x5a;                                                        //    1 0 1 0
  46.                                         delay(1000);
  47.                                         P1=0x00;
  48.                                 }
  49.                                
  50.                                 else
  51.                                         P1=0x00;
  52.                         }               
  53.                        
  54.                        
  55.                        

  56.                          else if (s1==hei && s2==hei)                                                        //第2種,左轉(zhuǎn),1 2為黑
  57.                         {
  58.                                 delay(500);
  59.                                 if (s1==hei )
  60.                                 {                                                                                                //p1  0 1 0 1                        馬達(dá)24向前開(kāi),馬達(dá)13向后開(kāi)
  61.                                         P1=0x5a;                                                        //    1 0 1 0
  62.                                         delay(1000);
  63.                                         P1=0x00;
  64.                                 }
  65.                                
  66.                                 else
  67.                                         P1=0x00;
  68.                         }                                       
  69.                        

  70.                        
  71.                         else if (s1==bai && s3==bai && s4==bai && s2==hei)                                                        //第3種,微左轉(zhuǎn),2黑,134白
  72.                         {                                                                                                                                                                                                        //本來(lái)小車(chē)是直線(xiàn)行走的,但是稍微偏離了一點(diǎn),這時(shí)需要微調(diào)轉(zhuǎn)彎
  73.                                 delay(600);
  74.                                 if (s2==hei && s3==bai)
  75.                                         {                                                                        //P1        0 1 0 0                                        馬達(dá)2向前開(kāi),馬達(dá)3向后開(kāi),這樣做轉(zhuǎn)彎的幅度比較小,達(dá)到微調(diào)的效果
  76.                                         P1=0x5a;                                        //                0 0 1 0
  77.                                         delay(600);
  78.                                         P1=0x00;
  79.                                         }
  80.                                
  81.                                 else
  82.                                         P1=0x00;
  83.                         }
  84.                                
  85.                                
  86. /*********************右        右        右        右        右        右        右        右        右        右********************************************************/                       
  87.                                
  88.                         else if (s4==hei && s1==bai && s2==bai && s3==bai)                                                        //第3種,右轉(zhuǎn),4黑,123白
  89.                         {
  90.                                 delay(500);
  91.                                 if (s4==hei)
  92.                                 {                                                                                //P1 1 0 1 0                        馬達(dá)13向前開(kāi),馬達(dá)24向后開(kāi)
  93.                                         P1=0xa5;                                        //         0 1 0 1
  94.                                         delay(1000);
  95.                                         P1=0x00;
  96.                                 }
  97.                                 else
  98.                                         P1=0x0;
  99.                         }       
  100.                        
  101.                        
  102.                                                 else if (s4==hei && s1==bai && s2==bai && s3==hei)                                                        //第3種,右轉(zhuǎn),4黑,123白
  103.                         {
  104.                                 delay(500);
  105.                                 if (s4==hei)
  106.                                 {                                                                                //P1 1 0 1 0
  107.                                         P1=0xa5;                                        //         0 1 0 1
  108.                                         delay(1000);
  109.                                         P1=0x00;
  110.                                 }
  111.                                 else
  112.                                         P1=0x0;
  113.                         }       
  114.                        
  115.                        
  116.                         else if (s1==bai && s2==bai && s4==bai && s3==hei)                                                        //第3種,微右轉(zhuǎn),3黑,124白
  117.                         {
  118.                                 delay(600);
  119.                                 if (s3==hei && s2==bai)
  120.                                 {                                                                //P1 1 0 0 0
  121.                                         P1=0xa5;                        //         0 0 0 1
  122.                                         delay(600);
  123.                                         P1=0x00;
  124.                                 }
  125.                                 else
  126.                                         P1=0x0;
  127.                         }       
  128.                        
  129. /*****************停車(chē)         停車(chē)         停車(chē)         停車(chē)         停車(chē)         停車(chē)         停車(chē)         *********************************/               
  130.                        
  131.                        
  132.                         else if (s4==hei && s1==hei && s2==hei &&s3==hei)                                                        //第4種,停車(chē),1234黑
  133.                         {
  134.                                 delay(1200);                                                                //P1 0 0 0 0
  135.                                 P1=0x0;                                                                                        //         0 0 0 0
  136.                         }

  137.                                
  138.                        
  139.                         else if (s4==bai && s1==bai && s2==bai &&s3==bai)                                                        //第4種,停車(chē),1234黑
  140.                         {
  141.                                 delay(1200);
  142.                                 if (s4==bai && s1==bai && s2==bai &&s3==bai)
  143.                                 {                                                                                //P1        0 0 0 0
  144.                                         P1=0x0;                                                //                0 0 0 0
  145.                                 }

  146.                         }       

  147.                
  148.         }

  149.        
  150. }
  151. //如果小車(chē)的速度不是你想要的效果,只要更改delay(****)里面的數(shù)值就行

復(fù)制代碼



所有資料51hei提供下載:

簡(jiǎn)單尋跡小車(chē)教程.rar (14.51 MB, 下載次數(shù): 136)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏12 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:471352 發(fā)表于 2019-3-19 21:05 | 只看該作者
請(qǐng)問(wèn)這個(gè)單片機(jī)只是用最小系統(tǒng)的么?最小系統(tǒng)就夠用了是吧?
回復(fù)

使用道具 舉報(bào)

板凳
ID:471352 發(fā)表于 2019-3-19 21:06 | 只看該作者
請(qǐng)問(wèn)這個(gè)單片機(jī)最小系統(tǒng)就夠用了是吧?
回復(fù)

使用道具 舉報(bào)

地板
ID:349823 發(fā)表于 2019-6-1 17:41 來(lái)自觸屏版 | 只看該作者
這個(gè)軌道是什么樣的呀。
回復(fù)

使用道具 舉報(bào)

5#
ID:516871 發(fā)表于 2019-6-26 17:24 | 只看該作者
我發(fā)現(xiàn)這里的帖子很不活躍,2018年的帖子,2019年有人問(wèn),
回復(fù)

使用道具 舉報(bào)

6#
ID:166284 發(fā)表于 2019-6-28 10:02 | 只看該作者
還能多點(diǎn)彩圖嗎?
回復(fù)

使用道具 舉報(bào)

7#
ID:614274 發(fā)表于 2019-9-21 13:14 來(lái)自觸屏版 | 只看該作者
加內(nèi)特tom 發(fā)表于 2019-6-1 17:41
這個(gè)軌道是什么樣的呀。

應(yīng)該是中間是一條黑線(xiàn)的
回復(fù)

使用道具 舉報(bào)

8#
ID:623518 發(fā)表于 2019-10-16 00:08 來(lái)自觸屏版 | 只看該作者
電源放哪了?
回復(fù)

使用道具 舉報(bào)

9#
ID:434283 發(fā)表于 2020-2-24 11:15 | 只看該作者
很有用,謝謝老鐵
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表