基于stm32f103c8t6的蓝牙控制双电机履带小车程序代码(带oled参数显示)

[复制链接]
查看2 | 回复0 | 2020-6-4 01:20:30 | 显示全部楼层 |阅读模式
这个代码是一个项目的初始代码,可以在这个基础上扩展很多其他的东西,比如ros激光雷达、机械臂、视觉算法之类的,硬件用的lm2596降压到5V,1117降压到3.3v,298n电机驱动(tb6612也是一样的)。下载用4线的stlink就好了,蓝牙模块随便什么牌子都可以,线不连错就行,代码比较简单,分享给大家,大家有相关项目的时候可以节省下“造轮子”的时间哈哈。
完整代码: 履带车oled程序.7z (189.8 KB, 售价: 1 工控币)
1.png
部分参考代码:
main.c如下:
  1. #include "pwm.h"
  2. #include "system.h"
  3. #include "SysTick.h"
  4. #include "motor.h"
  5. #include "usart.h"
  6. #include "ALLDATA.h"
  7. #include "control.h"#include "oled.h"

  8. int main()
  9. {

  10.         SysTick_Init(72);
  11.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  
  12.         TIM2_CH34_PWM_Init(7199,0);
  13.         USART1_Init(9600);
  14. //        TIM_SetCompare1(TIM2,185);
  15.         MOTOR_Init();        OLED_Init();
  16.         
  17.         while(1)
  18.         {
  19.      motor_control();
  20.         }
  21. }
复制代码



控制函数部分如下:
  1. void motor_control (void)
  2. {
  3.   if(r==0x38)
  4.         {
  5.                 start_flag=1;
  6.         }
  7.         
  8.         else if(r==0x37)
  9.         {
  10.                 start_flag=0;
  11.                 car_stop();
  12.         }
  13.          
  14.         if(start_flag==1)
  15.         {
  16.           if(r==0x30)
  17.           {
  18.                   car_go();
  19.           }
  20.         
  21.           else if(r==0x31)
  22.           {
  23.                   car_back();
  24.           }
  25.         
  26.           else if(r==0x32)
  27.           {
  28.                   car_left();
  29.           }
  30.         
  31.           else if(r==0x33)
  32.           {
  33.                   car_right();
  34.           }
  35.         
  36.           else if(r==0x34)
  37.           {
  38.                  car_stop();
  39.           }
  40.         }
复制代码

要注意的是手机app和蓝牙通信发送的是ASCII码形式, 需要if(r==0x31)判断,而蓝牙模块与蓝牙模块配对时采用的hex16进制数据发送,直接else if(r==1)就行了。

回复

使用道具 举报

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

本版积分规则