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

QQ登錄

只需一步,快速開始

搜索
查看: 5747|回復(fù): 0
收起左側(cè)

STM32小車盲走程序(無探索區(qū)域四路直流電機(jī)調(diào)速 正反轉(zhuǎn)等)

[復(fù)制鏈接]
ID:204106 發(fā)表于 2017-5-23 22:56 | 顯示全部樓層 |閱讀模式
四路直流電機(jī)正反轉(zhuǎn),調(diào)速程序?qū)崿F(xiàn)STM32小車盲走,無探索區(qū)域
可適用于L298N驅(qū)動(dòng)電路和H橋模塊
0.png


stm32單片機(jī)源程序如下:
  1. #include "stm32f10x.h"
  2. #include "bsp_breathing.h"
  3. #include "delay.h"
  4. #include "bsp_usart1.h"
  5. /**
  6.   * @brief  主函數(shù)
  7.   * @param  無
  8.   * @retval 無
  9.   */
  10. int main(void)
  11. {        
  12.         DelayInit();
  13.         USART1_Config();
  14.         TIM2_PWM_Init();
  15.         TIM4_PWM_Init();
  16.         while(1)        
  17.                 {
  18.                 /*取元件1*/
  19.                         MORTOR_Straight();               //電機(jī)直走                 
  20.                         DelayS(8);                        //延時(shí)15s電機(jī)直走,到第一個(gè)拐彎處
  21.                         MORTOR_Stop();        //電機(jī)停止        
  22.                         MORTOR_Left();                        //電機(jī)左轉(zhuǎn)  (轉(zhuǎn)一圈4.8s = 4800ms)?
  23.                         DelayMs(600);
  24.                         MORTOR_Stop();        //電機(jī)停止
  25.                         MORTOR_Straight();                                //電機(jī)直走
  26.                         DelayMs(4500);                        //走8s到第二個(gè)拐彎處
  27.                         MORTOR_Stop();        //電機(jī)停止
  28.                         MORTOR_Right();                                        //電機(jī)右轉(zhuǎn)1           (轉(zhuǎn)???時(shí)間,然后再直走)
  29.                         DelayMs(600);                        //轉(zhuǎn)1/4圈
  30.                         MORTOR_Stop();        //電機(jī)停止
  31.                
  32.                         MORTOR_Straight();                                 //電機(jī)直走
  33.                         DelayS(2);                        //走4s到第三個(gè)拐彎處
  34.                         MORTOR_Stop();        //電機(jī)停止
  35.                         MORTOR_Right();                        //電機(jī)右轉(zhuǎn)1
  36.                         DelayMs(600);        
  37.                         MORTOR_Stop();        //電機(jī)停止
  38.                         
  39.                         MORTOR_Straight();                                 //電機(jī)直走        
  40.                         DelayMs(750);
  41.                         MORTOR_Stop();        //電機(jī)停止
  42.                         printf("#1GC1\r\n");   
  43.                         DelayS(10);
  44.                         
  45.                         
  46.                         /*返回物架1*/
  47.                         MORTOR_Back();
  48.                         DelayMs(750);
  49.                         MORTOR_Stop();        //電機(jī)停止
  50.                         MORTOR_Right();                        //電機(jī)右轉(zhuǎn)1
  51.                         DelayMs(600);
  52.                         MORTOR_Stop();        //電機(jī)停止
  53.                         
  54.                         MORTOR_Straight();                                 //電機(jī)直走
  55.                         DelayS(2);
  56.                         MORTOR_Stop();        //電機(jī)停止
  57.                         MORTOR_Left();                        //電機(jī)左轉(zhuǎn)  (轉(zhuǎn)一圈4.8s = 4800ms)?
  58.                         DelayMs(600);
  59.                         MORTOR_Stop();        //電機(jī)停止
  60.                         
  61.                         MORTOR_Straight();                                //電機(jī)直走
  62.                         DelayMs(4500);                        //走8s到第二個(gè)拐彎處
  63.                         MORTOR_Stop();        //電機(jī)停止
  64.                         MORTOR_Right();                        //電機(jī)右轉(zhuǎn)1
  65.                         DelayMs(600);
  66.                         MORTOR_Stop();        //電機(jī)停止
  67.                         
  68.                         MORTOR_Straight();                                //電機(jī)直走
  69.                         DelayMs(2500);                        
  70.                         MORTOR_Stop();        //電機(jī)停止
  71.                         MORTOR_Right();                        //電機(jī)右轉(zhuǎn)1
  72.                         DelayMs(600);
  73.                         MORTOR_Stop();        //電機(jī)停止
  74.                         
  75.                         MORTOR_Straight();                                 //電機(jī)直走        
  76.                         DelayMs(1500);
  77.                         MORTOR_Stop();        //電機(jī)停止
  78.                         printf("#2GC1\r\n");
  79.                         DelayS(10);
  80.                         
  81.                         /*取元件2*/
  82.                         MORTOR_Back();
  83.                         DelayS(1);
  84.                         MORTOR_Stop();        //電機(jī)停止
  85.                         MORTOR_Right();                        //電機(jī)右轉(zhuǎn)1
  86.                         DelayMs(600);
  87.                         MORTOR_Stop();        //電機(jī)停止
  88.                         
  89.                         MORTOR_Straight();                                //電機(jī)直走
  90.                         DelayMs(2500);                        
  91.                         MORTOR_Stop();        //電機(jī)停止
  92.                         MORTOR_Left();                        //電機(jī)左轉(zhuǎn)  (轉(zhuǎn)一圈4.8s = 4800ms)?
  93.                         DelayMs(600);
  94.                         MORTOR_Stop();        //電機(jī)停止
  95.                         
  96.                         MORTOR_Straight();                                //電機(jī)直走
  97.                         DelayMs(750);                        
  98.                         MORTOR_Stop();        //電機(jī)停止
  99.                         MORTOR_Right();                        //電機(jī)右轉(zhuǎn)1
  100.                         DelayMs(600);
  101.                         MORTOR_Stop();        //電機(jī)停止
  102.                         
  103.                         MORTOR_Straight();                                //電機(jī)直走
  104.                         DelayMs(1500);                        
  105.                         MORTOR_Stop();        //電機(jī)停止
  106.                         printf("#3GC1\r\n");
  107.                         DelayS(10);
  108.                         
  109.                         /*返回物架2*/
  110.                         MORTOR_Back();
  111.                         DelayMs(1500);
  112.                         MORTOR_Stop();        //電機(jī)停止
  113.                         MORTOR_Right();                        //電機(jī)右轉(zhuǎn)1
  114.                         DelayMs(600);
  115.                         MORTOR_Stop();        //電機(jī)停止
  116.                         
  117.                         MORTOR_Straight();                                //電機(jī)直走
  118.                         DelayMs(750);                        
  119.                         MORTOR_Stop();        //電機(jī)停止
  120.                         MORTOR_Right();                        //電機(jī)右轉(zhuǎn)1
  121.                         DelayMs(600);
  122.                         MORTOR_Stop();        //電機(jī)停止
  123.                         
  124.                         MORTOR_Straight();                                //電機(jī)直走
  125.                         DelayMs(2500);                        
  126.                         MORTOR_Stop();        //電機(jī)停止
  127.                         MORTOR_Left();                        //電機(jī)左轉(zhuǎn)  (轉(zhuǎn)一圈4.8s = 4800ms)?
  128.                         DelayMs(600);
  129.                         MORTOR_Stop();        //電機(jī)停止
  130.                         
  131.                         MORTOR_Straight();                                //電機(jī)直走
  132.                         DelayS(1);                        
  133.                         MORTOR_Stop();        //電機(jī)停止
  134.                         printf("#4GC1\r\n");
  135.                         DelayS(10);
  136.                         
  137.                         /*取元件3*/
  138.                         MORTOR_Back();
  139.                         DelayS(1);
  140.                         MORTOR_Stop();        //電機(jī)停止
  141.                         MORTOR_Left();                        //電機(jī)左轉(zhuǎn)  (轉(zhuǎn)一圈4.8s = 4800ms)?
  142.                         DelayMs(600);
  143.                         MORTOR_Stop();        //電機(jī)停止
  144.                         
  145.                         MORTOR_Straight();                                //電機(jī)直走
  146.                         DelayMs(2500);                        
  147.                         MORTOR_Stop();        //電機(jī)停止
  148.                         MORTOR_Right();                        //電機(jī)右轉(zhuǎn)1
  149.                         DelayMs(600);
  150.                         MORTOR_Stop();        //電機(jī)停止

  151.                         MORTOR_Straight();                                //電機(jī)直走
  152.                         DelayMs(750);                        
  153.                         MORTOR_Stop();        //電機(jī)停止
  154.                         MORTOR_Left();                        //電機(jī)左轉(zhuǎn)  (轉(zhuǎn)一圈4.8s = 4800ms)?
  155.                         DelayMs(600);
  156.                         MORTOR_Stop();        //電機(jī)停止
  157.                         
  158.                         MORTOR_Straight();                                //電機(jī)直走
  159.                         DelayS(2);                        
  160.                         MORTOR_Stop();        //電機(jī)停止
  161.                         printf("#3GC1\r\n");
  162.                         DelayS(10);
  163.                         
  164.                         /*返回物架3*/
  165.                         MORTOR_Back();
  166.                         DelayS(2);
  167.                         MORTOR_Stop();        //電機(jī)停止
  168.                         MORTOR_Left();                        //電機(jī)左轉(zhuǎn)  (轉(zhuǎn)一圈4.8s = 4800ms)?
  169.                         DelayMs(600);
  170.                         MORTOR_Stop();        //電機(jī)停止
  171.                         
  172.                         MORTOR_Straight();                                //電機(jī)直走
  173.                         DelayMs(750);                        
  174.                         MORTOR_Left();        //電機(jī)停止
  175.                         MORTOR_Right();                        //電機(jī)左轉(zhuǎn)
  176.                         DelayMs(600);
  177.                         MORTOR_Stop();        //電機(jī)停止
  178.                         
  179.                         MORTOR_Straight();                                //電機(jī)直走
  180.                         DelayS(4);                        
  181.                         MORTOR_Stop();        //電機(jī)停止
  182.                         MORTOR_Left();                //電機(jī)左轉(zhuǎn)
  183.                         DelayMs(600);
  184.                         MORTOR_Stop();        //電機(jī)停止
  185.                         
  186.                         MORTOR_Straight();                                //電機(jī)直走
  187.                         DelayMs(1750);                        
  188.                         MORTOR_Stop();        //電機(jī)停止
  189.                         MORTOR_Right();                        //電機(jī)右轉(zhuǎn)1
  190.                         DelayMs(600);
  191.                         MORTOR_Stop();        //電機(jī)停止
  192.                         
  193.                         MORTOR_Straight();                                //電機(jī)直走
  194.                         DelayMs(2500);                        
  195.                         MORTOR_Stop();        //電機(jī)停止
  196.                         printf("#5GC1\r\n");
  197.                         DelayS(10);
  198.                
  199.                 /*取元件4*/
  200.                         MORTOR_Back();
  201.                         DelayS(2);
  202.                         MORTOR_Stop();        //電機(jī)停止
  203.                         MORTOR_Right();                        //電機(jī)右轉(zhuǎn)1
  204.                         DelayMs(600);
  205.                         MORTOR_Stop();        //電機(jī)停止
  206.                         
  207.                         MORTOR_Straight();                                //電機(jī)直走
  208.                         DelayMs(2500);                        
  209.                         MORTOR_Stop();        //電機(jī)停止
  210.                         MORTOR_Right();                        //電機(jī)右轉(zhuǎn)1
  211.                         DelayMs(600);
  212.                         MORTOR_Stop();        //電機(jī)停止
  213.                         
  214.                         MORTOR_Straight();                                //電機(jī)直走
  215.                         DelayS(4);                        
  216.                         MORTOR_Stop();        //電機(jī)停止
  217.                         MORTOR_Right();                        //電機(jī)右轉(zhuǎn)1
  218.                         DelayMs(600);
  219.                         MORTOR_Stop();        //電機(jī)停止
  220.                         
  221.                         MORTOR_Straight();                                //電機(jī)直走
  222.                         DelayMs(4500);                        //走8s到第二個(gè)拐彎處
  223.                         MORTOR_Stop();        //電機(jī)停止
  224.                         MORTOR_Left();                        //電機(jī)左轉(zhuǎn)  (轉(zhuǎn)一圈4.8s = 4800ms)?
  225.                         DelayMs(600);
  226.                         MORTOR_Stop();        //電機(jī)停止
  227.                         
  228.                         MORTOR_Straight();                                //電機(jī)直走
  229.                         DelayMs(2500);                        //走8s到第二個(gè)拐彎處
  230.                         MORTOR_Stop();        //電機(jī)停止
  231.                         MORTOR_Left();                        //電機(jī)左轉(zhuǎn)  (轉(zhuǎn)一圈4.8s = 4800ms)?
  232.                         DelayMs(600);
  233.                         MORTOR_Stop();        //電機(jī)停止
  234.                         
  235.                         MORTOR_Straight();                                 //電機(jī)直走        
  236.                         DelayS(1);
  237.                         MORTOR_Stop();        //電機(jī)停止
  238.                         printf("#6GC1\r\n");
  239.                         DelayS(10);
  240.                
  241.                 /*返回物架4*/
  242.                         MORTOR_Back();
  243.                         DelayS(1);
  244.                         MORTOR_Stop();        //電機(jī)停止
  245.                         MORTOR_Left();                        //電機(jī)左轉(zhuǎn)
  246.                         DelayMs(600);
  247.                         MORTOR_Stop();        //電機(jī)停止
  248.                         
  249.                         MORTOR_Straight();                                //電機(jī)直走
  250.                         DelayMs(2500);                        //走8s到第二個(gè)拐彎處
  251.                         MORTOR_Stop();        //電機(jī)停止
  252.                         MORTOR_Right();                        //電機(jī)右轉(zhuǎn)1
  253.                         DelayMs(600);
  254.                         MORTOR_Stop();        //電機(jī)停止
  255. ……………………

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

所有資料51hei提供下載:
盲走程序(無探索區(qū)域).rar (499 KB, 下載次數(shù): 67)



相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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