久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

藍(lán)牙控制小車 尋跡 避障整合版 單片機(jī)代碼下載

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:188903 發(fā)表于 2017-4-12 17:07 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
藍(lán)牙控制小車單片機(jī)代碼,帶尋跡 避障等功能的整合版,51hei提供下載.



單片機(jī)源代碼:
  1. /****************************************************************************
  2. 藍(lán)牙控制程序:
  3. P1_0           接前進(jìn)
  4. P1_1           接后退
  5. P1_2           接左轉(zhuǎn)
  6. P1_3           接右轉(zhuǎn)

  7. 插入藍(lán)牙模塊:
  8. 晶振:11.0592M晶振

  9. ****************************************************************************/

  10. #include<AT89x52.H>
  11. #include <intrins.h>

  12. //#define Left_moto_go      {P1_0=1,P1_1=0,P1_2=1,P1_3=0;}    //左邊兩個(gè)電機(jī)向前走
  13. //#define Left_moto_back    {P1_0=0,P1_1=1,P1_2=0,P1_3=1;}    //左邊兩個(gè)電機(jī)向后轉(zhuǎn)
  14. //#define Left_moto_Stop    {P1_0=0,P1_1=0,P1_2=0,P1_3=0;}    //左邊兩個(gè)電機(jī)停轉(zhuǎn)
  15. //#define Right_moto_go     {P1_4=1,P1_5=0,P1_6=1,P1_7=0;}    //右邊兩個(gè)電機(jī)向前走
  16. //#define Right_moto_back   {P1_4=0,P1_5=1,P1_6=0,P1_7=1;}    //右邊兩個(gè)電機(jī)向前走
  17. //#define Right_moto_Stop   {P1_4=0,P1_5=0,P1_6=0,P1_7=0;}    //右邊兩個(gè)電機(jī)停轉(zhuǎn)


  18. #define  TRIG0  P3_4                //右超聲波接口定義
  19. #define  ECHO0  P3_5                //右超聲波接口定義
  20. #define  TRIG1  P2_4                //中超聲波接口定義
  21. #define  ECHO1  P2_5                //中超聲波接口定義
  22. #define  TRIG2  P2_6                //左超聲波接口定義
  23. #define  ECHO2  P2_7                //左超聲波接口定義
  24. #define  TRIG3  P3_6                //后超聲波接口定義
  25. #define  ECHO3  P3_7                //后超聲波接口定義
  26. #define  Infrared_4   P1_7                            //紅外輸出信號(hào)接口定義
  27. #define  Infrared_6   P1_6                            //紅外輸出信號(hào)接口定義

  28. //#define Sevro_moto_pwm    P2_7   //接舵機(jī)信號(hào)端輸入PWM信號(hào)調(diào)節(jié)速度
  29. //#define Left_1_led        P3_4   //P3_2接四路尋跡模塊接口第一路輸出信號(hào)即中控板上面標(biāo)記為OUT1
  30. //#define Left_2_led        P3_5   //P3_3接四路尋跡模塊接口第二路輸出信號(hào)即中控板上面標(biāo)記為OUT2

  31. //#define Right_1_led       P3_6   //P3_4接四路尋跡模塊接口第三路輸出信號(hào)即中控板上面標(biāo)記為OUT3
  32. //#define Right_2_led       P3_7   //P3_5接四路尋跡模塊接口第四路輸出信號(hào)即中控板上面標(biāo)記為OUT4


  33. #define up       'A'                //前進(jìn)
  34. #define down     'B'                //后退
  35. #define left     'C'                //左轉(zhuǎn)
  36. #define right    'D'                //右轉(zhuǎn)
  37. #define stop     'F'                //停止
  38. #define gear     'G'                //擋位
  39. #define BrakeH   'H'                //開制動(dòng)
  40. #define BrakeI   'I'                //關(guān)制動(dòng)
  41. #define swrst    'S'                //軟件復(fù)位



  42. //char code str[] =  "收到指令,向前!\n";
  43. //char code str1[] = "收到指令,向后!\n";
  44. //char code str2[] = "收到指令,向左!\n";
  45. //char code str3[] = "收到指令,向右!\n";
  46. //char code str4[] = "收到指令,停止!\n";



  47. unsigned char const discode[] = { 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xBF,0xff/*-*/};
  48. //unsigned char const positon[3]= { 0xfe,0xfd,0xfb};
  49. unsigned char disbuff[3]      = { 0,0,5};
  50. unsigned char swbuffer[5][4]    = {{0,0,0,0},{1,4,5,0},{2,0,0,0},{3,0,0,0},{4,0,0,5}};//超聲波0、1、2、3,是否開自動(dòng)停止4-1,(默認(rèn)0關(guān))角度:4-2/3
  51. //unsigned char tswbuffer[5][4] = {{'1','1','1','1'},{'2','2','2','2'},{'3','3','3','3'},{'4','4','4','4'},{'5','5','5','5'}};
  52. //unsigned char code str[] = "www.mucstudio.com.cn\r\n";
  53. char    angle = 5;          //角度初始化
  54. unsigned int        dynamic_distance = 1;           //初始化前動(dòng)態(tài)距離
  55. unsigned int        dynamic_distance_down = 1;//初始化后動(dòng)態(tài)距離


  56. //unsigned char pwm_val_left  = 0;//變量定義
  57. //unsigned char push_val_left =13;//舵機(jī)歸中,產(chǎn)生約,1.5MS 信號(hào)
  58. unsigned int  time=0;           //時(shí)間變量
  59. unsigned int  timer1=0;         //時(shí)間變量
  60. unsigned int  timer=0;          //延時(shí)基準(zhǔn)變量
  61. unsigned int  anglecenter = 0;    //方向校正計(jì)數(shù)歸0
  62. unsigned int  sw[4] = {450,450,450,450};        //超聲波距離值

  63. //unsigned long S=0;              //計(jì)算出超聲波距離值
  64. //unsigned long S1=0;
  65. //unsigned long S2=0;
  66. //unsigned long S3=0;
  67. //unsigned long S4=0;

  68. bit  flag_REC=0;                //串口接收完成標(biāo)志位
  69. bit  flag    =0;                                //持續(xù)接收標(biāo)志位
  70. //bit  flag_xj =0;
  71. //bit  flag_bj =0;

  72. unsigned char  t=0;
  73. unsigned char  dat=0;
  74. unsigned char  buff[5]=0;       //接收緩沖字節(jié);
  75. unsigned char  posit = 0;

  76. /************************************************************************/
  77. //函數(shù)聲明
  78. void    delay(unsigned int);                                //延時(shí)函數(shù)
  79. //void      brakeup(void);                                  //前進(jìn)緊急制動(dòng)
  80. //void    brakedown(void);                                //后退緊急制動(dòng)
  81. void    run(void);                                              //前進(jìn)
  82. void    backrun(void);                                      //后退
  83. void    leftrun(void);                                        //左轉(zhuǎn)
  84. void    rightrun(void);                                     //右轉(zhuǎn)
  85. void    stoprun(void);                                          //前后停止
  86. void    gearrun(void);                                      //擋位:1、2、3(循環(huán))
  87. void    swrstrun(void);                                 //軟件復(fù)位
  88. void    stoplr(void);                               //停止左右轉(zhuǎn)動(dòng)
  89. void    brakeh(void);                                                               //開自動(dòng)制動(dòng)
  90. void    brakei(void);                                                               //關(guān)自動(dòng)制動(dòng)
  91. void    startModule(int);                                           //啟動(dòng)超聲波測距信號(hào)
  92. int     conut(int);                                         //計(jì)算距離
  93. void    send_str(void);                                 //數(shù)據(jù)發(fā)送
  94. void    Display(void);                                  //數(shù)碼管顯示
  95. void    Loaddata(void);                                 //啟動(dòng)超聲波測距,計(jì)算距離,載入buffer
  96. void    control(void);                                  //解析控制指令并執(zhí)行
  97. void    time1(void);                                //TIMER1中斷服務(wù)子函數(shù)interrupt 3
  98. void    receive(void);                                 //中斷接收3個(gè)字節(jié),串行口中斷 interrupt
  99. void    Init(void);                                 //初始化
  100. void    main(void);                                 /*--主函數(shù)--*/


  101. /************************************************************************/
  102. /*********************************************************************/
  103. /*--主函數(shù)--*/

  104. void main(void)
  105. {

  106. //      _nop_();
  107. //      delay(500);
  108. //      _nop_();
  109.     Init();                                 //初始化


  110. //    P1_0 = 0;
  111. //    P1_1 = 0;
  112. //    P1_2 = 0;
  113. //    P1_3 = 0;
  114. //    delay(200);
  115. //    P1_0 = 1;
  116. //    P1_1 = 1;
  117. //    P1_2 = 1;
  118. //    P1_3 = 1;




  119. //    delay(100);
  120. //    push_val_left=13;     //舵機(jī)歸中
  121. //ISP_CONTR=00100000B,SWBS=0(選擇AP區(qū)),SWRST=1(軟件復(fù)位)

  122.     while(1)                            /*無限循環(huán)*/
  123.     {
  124. //        Loaddata();             //數(shù)據(jù)采集
  125. //        send_str();             //數(shù)據(jù)發(fā)送

  126.         Display();                        //顯示1號(hào)距離
  127.     }
  128. }
  129. //        while(flag_xj)               //循線標(biāo)志位
  130. //        {
  131. //            if(flag_REC==1)
  132. //            {
  133. //                stoprun();
  134. //                break;
  135. //            }
  136. //            //有信號(hào)為0  沒有信號(hào)為1
  137. //            if(Left_2_led==0&&Right_1_led==0)
  138. //                run();

  139. //            else
  140. //            {
  141. //                if(Right_1_led==1&&Left_2_led==0)       //右邊檢測到黑線
  142. //                {
  143. //                    Left_moto_go;                          //左邊兩個(gè)電機(jī)正轉(zhuǎn)
  144. //                    Right_moto_back;                       //右邊兩個(gè)電機(jī)反轉(zhuǎn)
  145. //                }

  146. //                if(Left_2_led==1&&Right_1_led==0)       //左邊檢測到黑線
  147. //                {
  148. //                    Right_moto_go;                         //右邊兩個(gè)電機(jī)正轉(zhuǎn)
  149. //                    Left_moto_back;                    //左邊兩個(gè)電機(jī)反式開始轉(zhuǎn)
  150. //                }
  151. //            }

  152. //        }


  153. //        while(flag_bj)            /*無限循環(huán)*/
  154. //        {

  155. //            if(timer>=1000)    //100MS檢測啟動(dòng)檢測一次
  156. //            {
  157. //                timer=0;
  158. //                StartModule(); //啟動(dòng)檢測
  159. //                Conut();       //計(jì)算距離
  160. //                if(S<20)       //距離小于20CM
  161. //                {
  162. //                    stoprun();     //小車停止
  163. //                    COMM();        //方向函數(shù)
  164. //                }
  165. //                else if(S>30)      //距離大于,30CM往前走
  166. //                    run();
  167. //            }

  168. //            if(flag_REC==1)
  169. //            {
  170. //                push_val_left=13;   //舵機(jī)歸中
  171. //                stoprun();
  172. //                break;
  173. //            }
  174. //        }

  175. //延時(shí)函數(shù)
  176. void delay(unsigned int k)      //延時(shí)1.00043ms
  177. {
  178.     unsigned int x,y;
  179.     for(x=0; x<k; x++)
  180.         for(y=0; y<111; y++);
  181.     _nop_();
  182.     _nop_();
  183.     _nop_();
  184. }
  185. /************************************************************************/
  186. //機(jī)動(dòng)單元
  187. //void  brakeup(void)     //緊急制動(dòng)
  188. //{
  189. //    if((sw[1] <= 40)||(sw[0] <= 30)||(sw[2] <=30))
  190. //    {
  191. //        P1_0 = 1;                                                   //靜止前進(jìn)
  192. //              P1_1 = 0;
  193. //    }

  194. //}
  195. //void brakedown(void)
  196. //{
  197. //    if(sw[3] <= 50)                                                       //檢測前制動(dòng)
  198. //    {
  199. //        P1_1 = 1;                                                   //靜止后退
  200. //              P1_0 = 0;
  201. //    }

  202. //}
  203. void  run(void)             //前進(jìn)
  204. {
  205.     if(swbuffer[4][1]   ==  0)          //是否開動(dòng)態(tài)制動(dòng),0為關(guān)
  206.     {
  207.         P1_0 = 0;
  208.         timer = 0;
  209.     }
  210.     else
  211.     {
  212.         if((sw[1] <= dynamic_distance*30)||(sw[0] <= (dynamic_distance*20))||(sw[2] <= (dynamic_distance*20)))                                  //檢測距離||(sw[0] <= (dynamic_distance*25))||(sw[2] <= (dynamic_distance*25))
  213.         {
  214.             P1_0 = 1;                                                   //靜止前進(jìn)
  215.             delay(150);
  216.             if(--dynamic_distance <= 1)                                                                 //重置動(dòng)態(tài)距離
  217.                 dynamic_distance = 1;
  218.         }
  219.         else
  220.         {
  221.             P1_0 = 0;
  222.             timer = 0;                                                                                              //中斷停止計(jì)數(shù)值歸0
  223.             dynamic_distance = dynamic_distance + 1;
  224.             if(dynamic_distance >= 4)
  225.                 dynamic_distance = 4;
  226.         }
  227.     }

  228. //    brakeup();
  229. }

  230. void  backrun(void)     //后退
  231. {
  232.     if(swbuffer[4][1]   ==  0)          //是否開動(dòng)態(tài)制動(dòng),0為關(guān)
  233.     {
  234.         P1_1 = 0;
  235.         timer = 0;
  236.     }
  237.     else
  238.     {
  239.         if(sw[3] <= dynamic_distance_down*30)                                                       //檢測后超聲波數(shù)據(jù)
  240.         {
  241.             P1_1 = 1;                                                   //靜止后退
  242.             delay(150);
  243.             if(--dynamic_distance_down <= 1)                                                        //重置動(dòng)態(tài)距離
  244.                 dynamic_distance_down = 1;
  245.         }
  246.         else
  247.         {
  248.             P1_1 = 0;
  249.             timer = 0;                                                                                                  //中斷停止計(jì)數(shù)值歸0
  250.             if(++dynamic_distance_down >= 4)
  251.                 dynamic_distance_down = 4;
  252.         }
  253.     }
  254. //    brakedown();
  255. }

  256. void  leftrun(void)     //左轉(zhuǎn)
  257. {
  258.     P1_2 = 0;
  259. //      P1_3 = 1;

  260. //      if(Infrared == 0)
  261. //              angle = 5;
  262.     if(--angle == -1)      //角度左校正
  263.         angle = 0;
  264. //    angle = (--angle == -1) ? 0 : angle;
  265.     anglecenter = 0;                    //中校正歸0
  266. }

  267. void  rightrun(void)    //右轉(zhuǎn)
  268. {
  269.     P1_3 = 0;
  270. //    P1_2 = 1;

  271. //      if(Infrared == 0)
  272. //              angle = 5;
  273. //      else
  274.     if(++angle == 11)                       //角度右校正
  275.         angle = 10;
  276. //    angle = (++angle == 11) ? 10 : angle;
  277.     anglecenter = 0;                                                //中校正歸0
  278. }

  279. void  stoprun(void)         //前后停止
  280. {
  281.     P1_0 = 1;
  282.     P1_1 = 1;
  283.     dynamic_distance = 1;                   //重置動(dòng)態(tài)距離
  284.     dynamic_distance_down = 1;
  285. }

  286. void  gearrun(void)      //擋位:1、2、3(循環(huán))
  287. {
  288.     P1_5 = 0;
  289.     _nop_();
  290.     P1_5 = 1;
  291. }
  292. void    swrstrun(void)              //軟件復(fù)位
  293. {
  294.     ISP_CONTR=0x20;
  295. //      ISP_CONTR=0x60;

  296. }
  297. void    stoplr(void)                //停止左右轉(zhuǎn)動(dòng)
  298. {
  299.     P1_2 = 1;
  300.     P1_3 = 1;
  301. }
  302. void    brakeh(void)
  303. {
  304.     swbuffer[4][1]  =   1;                          //1為開動(dòng)態(tài)制動(dòng)
  305. }
  306. void    brakei(void)
  307. {
  308.     swbuffer[4][1]  =   0;                          //0為關(guān)動(dòng)態(tài)制動(dòng)
  309. }
  310. /************************************************************************/
  311. void  startModule(int i)              //啟動(dòng)測距信號(hào)
  312. {
  313.     if(i == 0)
  314.         TRIG0 = 1;
  315.     else if(i == 1)
  316.         TRIG1 = 1;
  317.     else if(i == 2)
  318.         TRIG2 = 1;
  319.     else if(i == 3)
  320.         TRIG3 = 1;

  321.     _nop_();
  322.     _nop_();
  323.     _nop_();
  324.     _nop_();
  325.     _nop_();
  326.     _nop_();
  327.     _nop_();
  328.     _nop_();
  329.     _nop_();
  330.     _nop_();
  331.     _nop_();
  332.     _nop_();
  333.     _nop_();
  334.     _nop_();
  335.     _nop_();
  336.     _nop_();
  337.     _nop_();
  338.     _nop_();
  339.     _nop_();
  340.     _nop_();
  341.     _nop_();

  342.     if(i == 0)
  343.         TRIG0 = 0;
  344.     else if(i == 1)
  345.         TRIG1 = 0;
  346.     else if(i == 2)
  347.         TRIG2 = 0;
  348.     else if(i == 3)
  349.         TRIG3 = 0;
  350. }
  351. /***************************************************/
  352. //計(jì)算距離
  353. int conut(int i)
  354. {
  355.     int S0 = 0;
  356.     unsigned int chaoshi = 0;

  357.     if(i == 0)
  358.         while(!ECHO0)            //當(dāng)RX為零時(shí)等待
  359.         {
  360. //            chaoshi=TH1*256+TL1;
  361. //            if(chaoshi >26571)           //超時(shí)彈出
  362. //                break;
  363.         }
  364.     else if(i == 1)
  365.         while(!ECHO1)
  366.         {
  367. //            chaoshi=TH1*256+TL1;
  368. //            if(chaoshi >26571)           //超時(shí)彈出
  369. //                break;
  370.         }
  371.     else if(i == 2)
  372.         while(!ECHO2)
  373.         {
  374. //            chaoshi=TH1*256+TL1;
  375. //            if(chaoshi >26571)           //超時(shí)彈出
  376. //                break;
  377.         }
  378.     else if(i == 3)
  379.         while(!ECHO3)
  380.         {
  381. //            chaoshi=TH1*256+TL1;
  382. //            if(chaoshi >26571)           //超時(shí)彈出
  383. //                break;
  384.         }

  385.     TR0=1;                   //開啟計(jì)數(shù)0

  386.     if(i == 0)
  387.         while(ECHO0)          //當(dāng)RX為1計(jì)數(shù)并等待
  388.         {
  389. //            if(++chaoshi >40000)
  390. //                break;
  391.         }
  392.     else if(i == 1)
  393.         while(ECHO1)
  394.         {
  395. //            if(++chaoshi >40000)           //超時(shí)彈出
  396. //                break;
  397.         }
  398.     else if(i == 2)
  399.         while(ECHO2)
  400.         {
  401. //            if(++chaoshi >40000)           //超時(shí)彈出
  402. //                break;
  403.         }
  404.     else if(i == 3)
  405.         while(ECHO3)
  406.         {
  407. //            if(++chaoshi >40000)           //超時(shí)彈出
  408. //                break;
  409.         }

  410.     TR0=0;                   //關(guān)閉計(jì)數(shù)0

  411.     time=TH0*256+TL0;        //讀取脈寬長度單位0.1MS
  412.     TH0=0;
  413.     TL0=0;

  414.     if(chaoshi >40000)           //超時(shí)彈出
  415.     {
  416.         S0 = sw[i];                          //使用上次值
  417.     }
  418.     else
  419.         S0 = ((time*1.7)/100);

  420.     if(i == 1)
  421.     {
  422.         disbuff[0]=S0%1000/100;   //更新顯示距離
  423.         disbuff[1]=S0%1000%100/10;
  424.         disbuff[2]=S0%1000%10 %10;
  425. //        disbuff[0]=angle%1000/100;   //更新顯示方向角
  426. //        disbuff[1]=angle%1000%100/10;
  427. //        disbuff[2]=angle%1000%10 %10;
  428.     }
  429.     return S0;                       //算出來是CM
  430. }
  431. /************************************************************************/
  432. //數(shù)據(jù)發(fā)送函數(shù)
  433. //void send_str()
  434. //                   // 傳送字串
  435. //    {
  436. //      char i = 0;
  437. //      while(i<=9)
  438. //     {
  439. //              SBUF = 0x10;//0x31
  440. //              while(!TI);             // 等特?cái)?shù)據(jù)傳送
  441. //              TI = 0;                 // 清除數(shù)據(jù)傳送標(biāo)志
  442. //              SBUF = '\n';//0x31
  443. //              while(!TI);             // 等特?cái)?shù)據(jù)傳送
  444. //              TI = 0;
  445. //              i++;                    // 下一個(gè)字符
  446. //     }
  447. //    }
  448. //      void send(short int dat)
  449. //{
  450. //SBUF = dat>>8;
  451. //while(TI == 0);
  452. //TI = 0;
  453. //SBUF=dat &0XFF;
  454. //while(TI == 0);
  455. //TI = 0;
  456. //}
  457. void send_str(void)
  458. {
  459.     int x = 0;
  460. //      unsigned char k = 0;

  461. //      SBUF = '\n';                        //一幀數(shù)據(jù)開始標(biāo)志
  462. //      while(!TI);             // 等特?cái)?shù)據(jù)傳送
  463. //      TI = 0;

  464.     while(x <= 4)
  465.     {
  466.         int y = 0;

  467.         while(y <= 3)
  468.         {
  469.             SBUF = swbuffer[x][y];
  470. //                      SBUF = k;
  471.             while(!TI);             // 等特?cái)?shù)據(jù)傳送
  472.             TI = 0;                 // 清除數(shù)據(jù)傳送標(biāo)志
  473.             y++;
  474.         }
  475.         x++;                    // 下一個(gè)字符
  476.     }

  477.     SBUF = '\n';                        //一幀數(shù)據(jù)完成標(biāo)志
  478.     while(!TI);             // 等特?cái)?shù)據(jù)傳送
  479.     TI = 0;                 // 清除數(shù)據(jù)傳送標(biāo)志
  480. //      SBUF = '\r';                        //一幀數(shù)據(jù)完成標(biāo)志
  481. //      while(!TI);             // 等特?cái)?shù)據(jù)傳送
  482. //      TI = 0;                 // 清除數(shù)據(jù)傳送標(biāo)志
  483. //      SBUF = 0x0d;                        //一幀數(shù)據(jù)完成標(biāo)志
  484. //      while(!TI);             // 等特?cái)?shù)據(jù)傳送
  485. //      TI = 0;                 // 清除數(shù)據(jù)傳送標(biāo)志

  486. }


  487. ///************************************************************************/
  488. //數(shù)碼管顯示
  489. void Display(void)
  490. {
  491.     if(posit==0)
  492.     {
  493.         P0=(discode[disbuff[posit]])&0x7f;   //+產(chǎn)生點(diǎn)
  494.         P2_1=0;
  495.         P2_2=1;
  496.         P2_3=1;
  497.     }
  498.     else if(posit==1)
  499.     {
  500.         P0=discode[disbuff[posit]];
  501.         P2_1=1;
  502.         P2_2=0;
  503.         P2_3=1;
  504.     }
  505.     else if(posit==2)
  506.     {
  507.         P0=discode[disbuff[posit]];
  508.         P2_1=1;
  509.         P2_2=1;
  510.         P2_3=0;
  511.     }
  512.     P2_1=1;
  513.     P2_2=1;
  514.     P2_3=1;
  515.     posit++;
  516.     if(posit == 3)
  517.         posit = 0;
  518. }

  519. /************************************************************************/
  520. //啟動(dòng)超聲波測距,計(jì)算距離,載入buffer

  521. void  Loaddata(void)
  522. {
  523.     unsigned int i= 0;

  524.     while(i <= 4)
  525.     {
  526.         if(i <= 3)
  527.         {
  528.             startModule(i);      //啟動(dòng)超聲波測距
  529.             sw[i] = conut(i);            //計(jì)算距離
  530.             swbuffer[i][1]= sw[i]%1000/100;   //載入buffer
  531.             swbuffer[i][2]= sw[i]%1000%100/10;
  532.             swbuffer[i][3]= sw[i]%1000%10 %10;
  533.         }
  534.         else if(i == 4)
  535.         {
  536. //                      swbuffer[i][1]= angle%1000/100;   //載入buffer
  537.             swbuffer[i][2]= angle%1000%100/10;
  538.             swbuffer[i][3]= angle%1000%10 %10;
  539.         }
  540.         i++;
  541.     }
  542. //    push_val_left=5;    //舵機(jī)向左轉(zhuǎn)90度
  543. //    timer=0;
  544. //    while(timer<=4000); //延時(shí)400MS讓舵機(jī)轉(zhuǎn)到其位置
  545. //    StartModule();      //啟動(dòng)超聲波測距
  546. //    Conut();            //計(jì)算距離
  547. //    S2=S;

  548. //    push_val_left=23;   //舵機(jī)向右轉(zhuǎn)90度
  549. //    timer=0;
  550. //    while(timer<=4000); //延時(shí)400MS讓舵機(jī)轉(zhuǎn)到其位置
  551. //    StartModule();      //啟動(dòng)超聲波測距
  552. //    Conut();            //計(jì)算距離
  553. //    S4=S;


  554. //    push_val_left=13;   //舵機(jī)歸中
  555. //    timer=0;
  556. //    while(timer<=4000); //延時(shí)400MS讓舵機(jī)轉(zhuǎn)到其位置
  557. //    StartModule();      //啟動(dòng)超聲波測距
  558. //    Conut();            //計(jì)算距離
  559. //    S1=S;

  560. //    if((S2<20)||(S4<20)) //只要左右各有距離小于,20CM小車后退
  561. //    {
  562. //        backrun();           //后退
  563. //        timer=0;
  564. //        while(timer<=4000);
  565. //    }

  566. //    if(S2>S4)
  567. //    {
  568. //        rightrun();     //車的左邊比車的右邊距離小  右轉(zhuǎn)



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

下載:
20.藍(lán)牙控制小車 尋跡 避障整合版.zip (99.94 KB, 下載次數(shù): 80)




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

使用道具 舉報(bào)

沙發(fā)
ID:237449 發(fā)表于 2017-10-21 21:59 | 只看該作者
這個(gè)程序不錯(cuò)
回復(fù)

使用道具 舉報(bào)

板凳
ID:238009 發(fā)表于 2017-11-20 20:08 來自手機(jī) | 只看該作者
可以
回復(fù)

使用道具 舉報(bào)

地板
ID:251942 發(fā)表于 2018-1-5 21:06 | 只看該作者
為什么我用這個(gè)代碼。小車只有一個(gè)輪子動(dòng)呢
回復(fù)

使用道具 舉報(bào)

5#
ID:274836 發(fā)表于 2018-1-17 21:11 | 只看該作者
我的不動(dòng)?能不能幫我看看
回復(fù)

使用道具 舉報(bào)

6#
ID:274836 發(fā)表于 2018-1-17 21:12 | 只看該作者
我的動(dòng)不了,大哥幫我看看謝謝。

APP整合綜合程序,步進(jìn)小車.zip

90.38 KB, 下載次數(shù): 8, 下載積分: 黑幣 -5

回復(fù)

使用道具 舉報(bào)

7#
ID:246078 發(fā)表于 2018-1-20 09:38 | 只看該作者
你好,我想問問GPS模塊能加在尋跡,避障小車上嗎
回復(fù)

使用道具 舉報(bào)

8#
ID:508963 發(fā)表于 2019-4-26 17:04 | 只看該作者
謝謝樓主
回復(fù)

使用道具 舉報(bào)

9#
ID:531672 發(fā)表于 2019-5-9 22:07 | 只看該作者
這個(gè)不錯(cuò)
回復(fù)

使用道具 舉報(bào)

10#
ID:545717 發(fā)表于 2019-5-23 20:46 | 只看該作者
已收藏,正是我所需要的。希望能夠有所收獲。
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美国产亚洲一区二区 | 美女中文字幕视频 | 少妇性l交大片免费一 | 九九国产在线观看 | 欧美伊人| 国内精品久久久久久久 | 亚洲激情一级片 | 午夜在线视频一区二区三区 | 一区二区三区视频在线观看 | 天天操伊人 | 欧产日产国产精品国产 | 成人h片在线观看 | 久久手机在线视频 | 亚洲国产精品一区二区www | 日日操操 | 99精品热视频 | 成人在线免费视频 | 亚洲国产精品激情在线观看 | 国产日韩视频 | 精品国产乱码久久久久久a丨 | 亚欧洲精品在线视频免费观看 | 亚洲女人天堂成人av在线 | 91久久看片 | 精品国产91乱码一区二区三区 | 亚洲精品播放 | 久久国产激情视频 | 国产精品久久久久婷婷二区次 | 中文字幕视频在线看 | 精品国产一区二区三区久久久久久 | 九九热这里 | 天天躁日日躁狠狠的躁天龙影院 | 久久亚洲精品久久国产一区二区 | 四季久久免费一区二区三区四区 | 69av在线视频| 日本天天操 | 日日天天 | 国内精品久久久久 | 久久久国产精品视频 | 亚洲精品1区 | www成人免费视频 | 精品久久国产老人久久综合 |