找回密码
 立即注册

QQ登录

只需一步,快速开始

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

STM32蓝牙遥控 编码器 舵机 小车程序

[复制链接]
跳转到指定楼层
楼主
ID:308159 发表于 2018-6-10 15:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
参加智能小车比赛,使用代码如下 供大家参考!!!

单片机源程序如下:
  1. #include "sys.h"

  2. #define K 5.55f
  3. #define L 3.14f

  4. #define pwm_zhong 97.0
  5. #define pwm_max_L 25.0
  6. #define pwm_max_R 135.0


  7. int CCR1_Val;
  8. int CCR2_Val;

  9. int Angle=87;
  10. float Velocity,Path;

  11. int number=0;
  12. int Encoder_Left,Encoder_Right;             //左右编码器的脉冲计数
  13. int Encoder_EXTI;
  14. double du;                                                                                                                                                                     

  15. //u8  TIM5CH1_CAPTURE_STA;                //输入捕获状态                                                   
  16. //u32        TIM5CH1_CAPTURE_VAL;        //输入捕获值


  17. u8 Blue[4];

  18. int main(void)
  19. {

  20.        
  21.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
  22.         USART3_RX_STA=0;
  23.         delay_init(168);  //初始化延时函数
  24.         uart_init(115200);//初始化串口波特率为115200
  25.         usart3_init(9600);

  26.         EXTIX_Init();
  27.         EXTI0_IRQHandler();
  28.        
  29.         BEEP_Init();


  30.         oled_GPIO_init();
  31.         LCD_Init();

  32.         TIM3_PWM_Init(500-1,84-1);
  33.         TIM10_PWM_Init(500-1,84-1);
  34.         TIM11_PWM_Init(500-1,84-1);
  35.         TIM13_PWM_Init(500-1,84-1);
  36.                
  37.         TIM4_PWM_Init((2000-1),840-1);
  38.           Encoder_Left=0;
  39.           Encoder_Right=0;
  40.                
  41.    while(1) //实现比较值从0-300递增,到300后从300-0递减,循环
  42.         {
  43.       OLED_Dis_Float(0,0,Angle,1);
  44.                   OLED_Dis_Float(0,18,Path,1);
  45.         //        Printnum(18,18,23,2,2);
  46.         //        LCD_Print(36,36,0,1,1);
  47. //                LCD_Print(18, 18, "mdkdkfl",7, 40);

  48.           Velocity=K*L*(Encoder_Left+Encoder_Right)/390;

  49.                
  50.                 if(Blue[0] == 'a')
  51.                 {
  52.                         Angle=100*(Blue[1]-'0')+10*(Blue[2]-'0')+(Blue[3]-'0');
  53.                         PWM_Angle();
  54.                 }
  55.                 if(Blue[0]=='d')
  56.                 {

  57.                                
  58.                                                         TIM_SetCompare1(TIM3,200);
  59.                     TIM_SetCompare1(TIM10,500);                //   8 high  9 high
  60.                                 TIM_SetCompare1(TIM11,200);
  61.                                 TIM_SetCompare1(TIM13,500);
  62.         delay_ms(300);
  63.                           Angle=30;
  64.                                 PWM_Angle();
  65.                           delay_ms(1200);
  66.                           Angle=109;
  67.         PWM_Angle();
  68.                         TIM_SetCompare1(TIM3,200);
  69.                     TIM_SetCompare1(TIM10,500);                //   8 high  9 high
  70.                                 TIM_SetCompare1(TIM11,200);
  71.                                 TIM_SetCompare1(TIM13,500);
  72.         delay_ms(500);
  73.         TIM_SetCompare1(TIM3,0);
  74.         TIM_SetCompare1(TIM10,0);                //   8 high  9 high
  75.               TIM_SetCompare1(TIM11,0);
  76.               TIM_SetCompare1(TIM13,0);
  77.                           Blue[0] = 'z';  Encoder_Left=0;
  78.                           number=0;
  79.                
  80.                 }
  81.                
  82.                 if(Blue[0] == 'b')
  83.                 {
  84.                           Angle = 100*(Blue[1]-'0')+10*(Blue[2]-'0');
  85.                                 Path=(10*(Blue[3]-'0'))/12;
  86.                           Encoder_EXTI=Path/K/L*3900;
  87.                                
  88.       while(Encoder_Left<Encoder_EXTI)
  89.                                         {
  90.                                
  91.                                                         TIM_SetCompare1(TIM3,200);
  92.                     TIM_SetCompare1(TIM10,500);                //   8 high  9 high
  93.                                 TIM_SetCompare1(TIM11,200);
  94.                                 TIM_SetCompare1(TIM13,500);
  95. //                                                                                               
  96.                                         }
  97.                           PWM_Angle();
  98.                           delay_ms(500);
  99.                           Angle=87;
  100.         PWM_Angle();
  101.         TIM_SetCompare1(TIM3,0);
  102.         TIM_SetCompare1(TIM10,0);                //   8 high  9 high
  103.               TIM_SetCompare1(TIM11,0);
  104.               TIM_SetCompare1(TIM13,0);
  105.                           Blue[0] = 'z';  Encoder_Left=0;
  106.                           number = 0;
  107.                 }
  108.                 if(Blue[0] == 'p')
  109.                 {
  110.                        
  111.                         Path=(100*(Blue[1]-'0')+10*(Blue[2]-'0')+(Blue[3]-'0'))/12;
  112.                         Encoder_EXTI=Path/K/L*3900;

  113.       while(Encoder_Left<Encoder_EXTI)
  114.                                         {
  115.                                
  116. ……………………

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

所有资料51hei提供下载:
蓝牙遥控 编码器 舵机 小车程序..rar (1.87 MB, 下载次数: 114)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:319545 发表于 2019-8-6 17:57 | 只看该作者
好资料
回复

使用道具 举报

板凳
ID:282095 发表于 2019-8-6 20:20 | 只看该作者
感觉8051就绰绰有余了啊
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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