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

QQ登錄

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

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

搬運(yùn)色塊 巡游景點(diǎn) 巡線機(jī)器人小車的設(shè)計(jì)資料下載

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
如題!。。。。。。。。。。。


包含以下資料:
示例程序\
2017春《計(jì)算機(jī)編程能力實(shí)訓(xùn)》安排.doc
QTI巡線傳感器說(shuō)明及尋線策略.docx
《計(jì)算機(jī)編程能力實(shí)訓(xùn)》動(dòng)員-基于教育機(jī)器人.ppt
任務(wù)書(shū)1_智能搬運(yùn)機(jī)器人的設(shè)計(jì)與實(shí)現(xiàn)_17春.doc
任務(wù)書(shū)2-巡游機(jī)器人設(shè)計(jì)與實(shí)現(xiàn)_17春.doc


程序包含:
threeQTI-3個(gè)QTI傳感器的巡線程序.c
巡游-一個(gè)景點(diǎn)-基于數(shù)組實(shí)現(xiàn).c
巡游-一個(gè)景點(diǎn)-非數(shù)組實(shí)現(xiàn).c
搬運(yùn)-E點(diǎn)黑色.c


部分單片機(jī)源程序預(yù)覽如下:
  1. /************************************************
  2. 程序功能:搬運(yùn)1個(gè)色塊: E點(diǎn),黑色
  3. 舵機(jī)連接:左輪 P1_1
  4.           右輪 P1_0
  5. QTI傳感器連接:從左至右 P2_4 P2_3 P2_2 P2_1

  6. 程序編寫(xiě)調(diào)試:王淑鴻 2016-6
  7. ************************************************/

  8. #include <Boebot.h>
  9. #include <uart.h>
  10. #define uint unsigned int
  11. #define uchar unsigned char

  12. void fastforward(void);            //快速前進(jìn)1步
  13. void slowforward(void);            //慢速前進(jìn)1步
  14. void slowerback(void);                  // 慢速后退1步
  15. void turn_left(uint n);             //左轉(zhuǎn)
  16. void turn_right(uint n);            //右轉(zhuǎn)
  17. void zhixing(int n);                                //向前直行
  18. void daotui(int i);                        //后退
  19. void check_left(void);              //小幅向左  
  20. void check_right(void);             //小幅向右
  21. void Get_QTI_State(void);            //獲取傳感器返回值
  22. void Follow_Line(void);                //巡線
  23. void Get_E(void) ;                   //取E點(diǎn)物塊,取到中心線上
  24. void Put_Black(void);                         // 將中心線上的黑色色塊推到目標(biāo)位置
  25. void BackToZero(void);                                 //從中心線回到起始區(qū)域


  26. uchar QTIState;

  27. uint RIGHT90=20;
  28. uint RIGHT45=10;
  29. uint RIGHT180=35;

  30. uint LEFT90=25;
  31. uint LEFT45=13;




  32. void fastforward(void)                //快速前進(jìn)
  33. {
  34.         P1_0=1;
  35.         delay_nus(1350);
  36.         P1_0=0;
  37.         delay_nms(20);
  38.         P1_1=1;
  39.         delay_nus(1650);      
  40.         P1_1=0;
  41.         delay_nms(20);
  42. }

  43. void slowforward(void)          //慢速前進(jìn)
  44. {        P1_0=1;
  45.         delay_nus(1450);        
  46.         P1_0=0;
  47.         delay_nms(20);
  48.         P1_1=1;
  49.         delay_nus(1550);
  50.         P1_1=0;
  51.         delay_nms(20);
  52. }

  53. void slowerback(void)                // 慢速后退
  54. {
  55.         P1_0=1;
  56.         delay_nus(1550);        
  57.         P1_0=0;
  58.         delay_nms(20);
  59.         P1_1=1;
  60.         delay_nus(1450);
  61.         P1_1=0;
  62.         delay_nms(20);
  63. }

  64. void turn_left(uint n)              //左轉(zhuǎn)
  65. {
  66.          int i;
  67.      for(i=0;i<=n;i++)
  68.        {
  69.                 P1_0=1;
  70.                 delay_nus(1450);
  71.                 P1_0=0;
  72.                 delay_nms(20);
  73.                 P1_1=1;
  74.                 delay_nus(1450);
  75.                 P1_1=0;
  76.                 delay_nms(20);
  77.            }
  78. }

  79. void turn_right(uint n)            //右轉(zhuǎn)  
  80. {
  81.          int i;
  82.      for(i=0;i<=n;i++)
  83.        {
  84.                 P1_0=1;
  85.                 delay_nus(1550);
  86.                 P1_0=0;
  87.                 delay_nms(20);
  88.                 P1_1=1;
  89.                 delay_nus(1550);
  90.                 P1_1=0;
  91.                 delay_nms(20);
  92.            }
  93. }





  94. void zhixing(int n)                          //直行
  95. {
  96.         int a;
  97.         for(a=0;a<=n;a++)
  98.         fastforward();
  99. }


  100. void daotui(int n)                        //慢速倒退
  101. {
  102.         int a;
  103.         for(a=0;a<=n;a++)
  104.         slowerback();
  105. }

  106. void check_left(void)     //小幅向左
  107. {       
  108.             P1_0=1;
  109.             delay_nus(1400);         
  110.                  P1_0=0;
  111.             delay_nms(20);
  112.                 P1_1=1;
  113.                 delay_nus(1500);
  114.                 P1_1=0;
  115.                 delay_nms(20);
  116. }

  117. void check_right(void)    //小幅向右
  118. {
  119.           P1_1=1;
  120.           delay_nus(1600);         
  121.           P1_1=0;
  122.           delay_nms(20);
  123.           P1_0=1;
  124.           delay_nus(1500);
  125.           P1_0=0;
  126.           delay_nms(20);  
  127. }



  128. void Get_QTI_State(void)                       //獲取傳感器返回值
  129.         {
  130.                 QTIState=P2&0x1e;                     //P2_4  P2_3  P2_2  P2_1
  131.                 QTIState=QTIState/2;                  //右移1位               
  132.         }



  133. void Follow_Line(void)                //巡線
  134. {
  135.                                                    

  136.                 Get_QTI_State();

  137.         switch(QTIState)                         
  138.                 {
  139.                 case 4: check_left() ;break;                        //傳感器返回值:0100
  140.                 case 2: check_right();break;                        //傳感器返回值:0010
  141.                 case 8: check_left() ;break;                        //傳感器返回值:1000
  142.                 case 12: check_left() ;break;                        //傳感器返回值:1100
  143.                 case 14: check_left() ;break;                        //傳感器返回值:1110
  144.                 case 1: check_right();break;                        //傳感器返回值:0001
  145.                 case 3: check_right();break;                        //傳感器返回值:0011
  146.                 case 7: check_right();break;                        //傳感器返回值:0111
  147.                 default: slowforward();break;
  148.                 }
  149. }


  150. void Get_E(void)                          //取E點(diǎn)物塊,取到中心線上
  151. {
  152.         int i;
  153.         while(QTIState!=0x0f)                 //當(dāng)不是全黑時(shí),巡線
  154.         Follow_Line();
  155.         zhixing(6);                                                          //直行一小段,調(diào)整位置
  156.         turn_right(RIGHT90);                  //右轉(zhuǎn)90度
  157.         while(QTIState!=0x00)                 //當(dāng)不是全白時(shí),巡線
  158.         Follow_Line();
  159.         zhixing(6);
  160.     turn_right(RIGHT180);
  161.         while(QTIState!=0x0f)                 //當(dāng)不是全黑時(shí),巡線
  162.         Follow_Line();
  163.         zhixing(6);
  164.         turn_left(LEFT90);                                          //左轉(zhuǎn)90度
  165.         for(i=0;i<40;i++)
  166.                 Follow_Line();
  167.     turn_right(RIGHT180);                  
  168. }

  169. void Put_Black(void)                                 // 將中心線上的黑色色塊推到目標(biāo)位置
  170. {
  171.         int i;        
  172.         while(QTIState!=0x0f)                 //當(dāng)不是全黑時(shí),巡線
  173.         Follow_Line();
  174.         zhixing(6);
  175.         turn_right(RIGHT45);
  176.         while(QTIState!=0x00)                 //當(dāng)不是全白時(shí),巡線
  177.         Follow_Line();
  178.         zhixing(6);
  179.         while(QTIState!=0x0f)                 //當(dāng)不是全黑時(shí),巡線
  180.         Follow_Line();
  181.         daotui(20);
  182.         turn_right(RIGHT180);  
  183.         while(QTIState!=0x00)                 //當(dāng)不是全白時(shí),巡線
  184.         Follow_Line();
  185.         zhixing(6);
  186.         while(QTIState!=0x0f)                 //當(dāng)不是全黑時(shí),巡線
  187.     Follow_Line();
  188.         zhixing(6);
  189.         turn_left(LEFT45);
  190. ……………………

  191. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
課程設(shè)計(jì)-自通-機(jī)器人-17春.rar (1.59 MB, 下載次數(shù): 32)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2017-6-25 02:39 | 只看該作者
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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