找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5729|回复: 0
打印 上一主题 下一主题
收起左侧

STM32小车盲走程序(无探索区域四路直流电机调速 正反转等)

[复制链接]
跳转到指定楼层
楼主
四路直流电机正反转,调速程序实现STM32小车盲走,无探索区域
可适用于L298N驱动电路和H桥模块



stm32单片机源程序如下:
  1. #include "stm32f10x.h"
  2. #include "bsp_breathing.h"
  3. #include "delay.h"
  4. #include "bsp_usart1.h"
  5. /**
  6.   * @brief  主函数
  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();               //电机直走                 
  20.                         DelayS(8);                        //延时15s电机直走,到第一个拐弯处
  21.                         MORTOR_Stop();        //电机停止        
  22.                         MORTOR_Left();                        //电机左转  (转一圈4.8s = 4800ms)?
  23.                         DelayMs(600);
  24.                         MORTOR_Stop();        //电机停止
  25.                         MORTOR_Straight();                                //电机直走
  26.                         DelayMs(4500);                        //走8s到第二个拐弯处
  27.                         MORTOR_Stop();        //电机停止
  28.                         MORTOR_Right();                                        //电机右转1           (转???时间,然后再直走)
  29.                         DelayMs(600);                        //转1/4圈
  30.                         MORTOR_Stop();        //电机停止
  31.                
  32.                         MORTOR_Straight();                                 //电机直走
  33.                         DelayS(2);                        //走4s到第三个拐弯处
  34.                         MORTOR_Stop();        //电机停止
  35.                         MORTOR_Right();                        //电机右转1
  36.                         DelayMs(600);        
  37.                         MORTOR_Stop();        //电机停止
  38.                         
  39.                         MORTOR_Straight();                                 //电机直走        
  40.                         DelayMs(750);
  41.                         MORTOR_Stop();        //电机停止
  42.                         printf("#1GC1\r\n");   
  43.                         DelayS(10);
  44.                         
  45.                         
  46.                         /*返回物架1*/
  47.                         MORTOR_Back();
  48.                         DelayMs(750);
  49.                         MORTOR_Stop();        //电机停止
  50.                         MORTOR_Right();                        //电机右转1
  51.                         DelayMs(600);
  52.                         MORTOR_Stop();        //电机停止
  53.                         
  54.                         MORTOR_Straight();                                 //电机直走
  55.                         DelayS(2);
  56.                         MORTOR_Stop();        //电机停止
  57.                         MORTOR_Left();                        //电机左转  (转一圈4.8s = 4800ms)?
  58.                         DelayMs(600);
  59.                         MORTOR_Stop();        //电机停止
  60.                         
  61.                         MORTOR_Straight();                                //电机直走
  62.                         DelayMs(4500);                        //走8s到第二个拐弯处
  63.                         MORTOR_Stop();        //电机停止
  64.                         MORTOR_Right();                        //电机右转1
  65.                         DelayMs(600);
  66.                         MORTOR_Stop();        //电机停止
  67.                         
  68.                         MORTOR_Straight();                                //电机直走
  69.                         DelayMs(2500);                        
  70.                         MORTOR_Stop();        //电机停止
  71.                         MORTOR_Right();                        //电机右转1
  72.                         DelayMs(600);
  73.                         MORTOR_Stop();        //电机停止
  74.                         
  75.                         MORTOR_Straight();                                 //电机直走        
  76.                         DelayMs(1500);
  77.                         MORTOR_Stop();        //电机停止
  78.                         printf("#2GC1\r\n");
  79.                         DelayS(10);
  80.                         
  81.                         /*取元件2*/
  82.                         MORTOR_Back();
  83.                         DelayS(1);
  84.                         MORTOR_Stop();        //电机停止
  85.                         MORTOR_Right();                        //电机右转1
  86.                         DelayMs(600);
  87.                         MORTOR_Stop();        //电机停止
  88.                         
  89.                         MORTOR_Straight();                                //电机直走
  90.                         DelayMs(2500);                        
  91.                         MORTOR_Stop();        //电机停止
  92.                         MORTOR_Left();                        //电机左转  (转一圈4.8s = 4800ms)?
  93.                         DelayMs(600);
  94.                         MORTOR_Stop();        //电机停止
  95.                         
  96.                         MORTOR_Straight();                                //电机直走
  97.                         DelayMs(750);                        
  98.                         MORTOR_Stop();        //电机停止
  99.                         MORTOR_Right();                        //电机右转1
  100.                         DelayMs(600);
  101.                         MORTOR_Stop();        //电机停止
  102.                         
  103.                         MORTOR_Straight();                                //电机直走
  104.                         DelayMs(1500);                        
  105.                         MORTOR_Stop();        //电机停止
  106.                         printf("#3GC1\r\n");
  107.                         DelayS(10);
  108.                         
  109.                         /*返回物架2*/
  110.                         MORTOR_Back();
  111.                         DelayMs(1500);
  112.                         MORTOR_Stop();        //电机停止
  113.                         MORTOR_Right();                        //电机右转1
  114.                         DelayMs(600);
  115.                         MORTOR_Stop();        //电机停止
  116.                         
  117.                         MORTOR_Straight();                                //电机直走
  118.                         DelayMs(750);                        
  119.                         MORTOR_Stop();        //电机停止
  120.                         MORTOR_Right();                        //电机右转1
  121.                         DelayMs(600);
  122.                         MORTOR_Stop();        //电机停止
  123.                         
  124.                         MORTOR_Straight();                                //电机直走
  125.                         DelayMs(2500);                        
  126.                         MORTOR_Stop();        //电机停止
  127.                         MORTOR_Left();                        //电机左转  (转一圈4.8s = 4800ms)?
  128.                         DelayMs(600);
  129.                         MORTOR_Stop();        //电机停止
  130.                         
  131.                         MORTOR_Straight();                                //电机直走
  132.                         DelayS(1);                        
  133.                         MORTOR_Stop();        //电机停止
  134.                         printf("#4GC1\r\n");
  135.                         DelayS(10);
  136.                         
  137.                         /*取元件3*/
  138.                         MORTOR_Back();
  139.                         DelayS(1);
  140.                         MORTOR_Stop();        //电机停止
  141.                         MORTOR_Left();                        //电机左转  (转一圈4.8s = 4800ms)?
  142.                         DelayMs(600);
  143.                         MORTOR_Stop();        //电机停止
  144.                         
  145.                         MORTOR_Straight();                                //电机直走
  146.                         DelayMs(2500);                        
  147.                         MORTOR_Stop();        //电机停止
  148.                         MORTOR_Right();                        //电机右转1
  149.                         DelayMs(600);
  150.                         MORTOR_Stop();        //电机停止

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

  256. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
盲走程序(无探索区域).rar (499 KB, 下载次数: 67)



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表