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

QQ登錄

只需一步,快速開始

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

bb-8機(jī)器人制作源碼(stm32f103)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:160860 發(fā)表于 2021-8-17 11:43 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. //   PA0,PA1, 對(duì)應(yīng)四個(gè)引腳對(duì)應(yīng)測(cè)速的四個(gè)角,TIME2
  2. //   PC4,PC5,電機(jī)A,   PWMA--PB6
  3. //   PC2,PC3,電機(jī)B    PWMB--PB7
  4. //   PB11--TX,  PB10--RX   藍(lán)牙
  5. //   PB5             舵機(jī)
  6. /*
  7.      OLED接線定義:
  8.                                         VCC--3.3V/5V
  9.                                         GND--GND
  10.                                         SCL--PB8
  11.                                         SDA--PB9
  12. */

  13. #include "delay.h"
  14. #include "sys.h"
  15. #include "usart.h"
  16. #include "CeSu.h"       //測(cè)速文件
  17. #include "DianJi.h"     //電機(jī)文件
  18. #include "Duoji.h"      //舵機(jī)文件
  19. #include "LanYa.h"      //藍(lán)牙文件
  20. #include "oled_iic.h"

  21. #define High_speed 90
  22. #define Low_speed 50
  23. #define DuoJi_JiaoDu_Init 85

  24. //extern int16_t LunSuDu[4];     //實(shí)際值
  25. //extern int16_t COUNT[4];       //脈沖計(jì)數(shù)

  26. extern u8 receive_data[10];
  27. extern u8 ChuLi_data[10];      //藍(lán)牙命令

  28. char   Buf[128];       

  29. int v=Low_speed,v0=0;    //默認(rèn)初始速度
  30. int angle=90;      //舵機(jī)初始角度
  31. //float i;           //測(cè)量電壓

  32. //藍(lán)牙命令處理
  33. void MingLing_ChuLi(u8 *MingLing)
  34. {
  35.        
  36.     if(MingLing[0]=='v')  //檢測(cè)電壓  
  37.                  {
  38.                         //        i=analogRead(sensor)*5;i=i/1024*3;            //analogRead(sensor),從指定的模擬引腳中讀取值。

  39.                         MingLing[0]='t';
  40.                  }              
  41.          
  42.     else if(MingLing[0]=='h')   {v=High_speed;}//高速模式  
  43.    
  44.     else if(MingLing[0]=='l')   {v=Low_speed;}//中速模式
  45.                
  46.     else if(MingLing[0]=='1')
  47.                 {
  48.                         //v0=Low_speed;
  49. //                        DuoJi_KongZhi(110);          //舵機(jī)110°
  50.                         motor(v,v);
  51.                        
  52.     }
  53.                
  54.     else if(MingLing[0]=='2') {motor(v,-v);}  //左轉(zhuǎn)
  55.                
  56.     else if(MingLing[0]=='3') {motor(-v,v);}  //右轉(zhuǎn)
  57.                
  58.     else if(MingLing[0]=='4')
  59.                 {

  60. //                        DuoJi_KongZhi(70);          //舵機(jī)110°
  61.                         motor(-v,-v);
  62.                 }                       
  63.                
  64.     else if(MingLing[0]=='5')         //舵機(jī)角度增加
  65.           {
  66.                                                 if(angle<120)
  67.                                                 {
  68.                                             angle++;
  69.                                                         MingLing[0]='0';
  70.                                                 }
  71.                                                 else {
  72.                                                         angle=120;
  73.                                                 }
  74.                                             DuoJi_KongZhi(angle);
  75.                                             delay_ms(50);
  76.                                         }   
  77.                                        
  78.     else if(MingLing[0]=='6')        //舵機(jī)角度減少
  79.           {
  80.                                                 if(angle>60)
  81.                                                 {
  82.                                             angle--;
  83.                                                         MingLing[0]='0';
  84.                                                 }
  85.                                                 else {
  86.                                                         angle=60;
  87.                                                 }
  88.                                             DuoJi_KongZhi(angle);
  89.                                             delay_ms(50);
  90.                                         }                 
  91.                                        
  92.     else if(MingLing[0]=='7')   {DuoJi_KongZhi(DuoJi_JiaoDu_Init);}                                   //舵機(jī)回到90度
  93.                
  94.     else if(MingLing[0]=='8')   {motor(v-40,v);}                             
  95.                
  96.     else if(MingLing[0]=='9')   {motor(v,v-40);}
  97.                
  98.                 else if(MingLing[0]=='t')
  99.                 {
  100.                         Dj_A_FangXiang(3);
  101.                         Dj_B_FangXiang(3);
  102.                         TIM_SetCompare1(TIM4,0);
  103.                         TIM_SetCompare2(TIM4,0);
  104.                         DuoJi_KongZhi(DuoJi_JiaoDu_Init);
  105.                 }
  106.                
  107.    
  108. }


  109. int main(void)
  110. {       
  111.    
  112.         delay_init();                     //延時(shí)函數(shù)初始化          
  113.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);         //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)
  114.         uart_init(115200);             //串口初始化為115200
  115.         OLED_Init();                         //OLED屏幕初始化                  
  116.     MOTOR_Init();                  //電機(jī)PWM控制初始化
  117.           DianJi_PWM_Init();
  118.     Uart3_Init(9600);
  119.           TIM3_PWM_Init(200-1,7200-1);   //PWM分頻
  120.     DuoJi_KongZhi(DuoJi_JiaoDu_Init);   //舵機(jī)90度;
  121.                  OLED_Clear();       
  122.          
  123.          TIM_SetCompare1(TIM4,0);
  124.          TIM_SetCompare2(TIM4,0);
  125.          
  126. //    TIM2_CAP_Init(0XFFFF,72-1);      //這里以1us頻率捕獲脈沖
  127. //           TIM4_Int_Init(1000,72);                  //不分頻。T=10MS,采集單位時(shí)間輪速   

  128.        while(1)
  129.        {
  130.                                   //超聲波測(cè)距
  131.                                  
  132.                                   //紅外循跡
  133.                            
  134.                                         //接收藍(lán)牙串口數(shù)據(jù)
  135.                                         MingLing_ChuLi(ChuLi_data);

  136.     //顯示代碼                               
  137.         sprintf(Buf,"Receive: %s",receive_data);       
  138.         OLED_ShowCH(0,0*2,(u8 *)&Buf);
  139.        
  140.         sprintf(Buf,"Data: %s",ChuLi_data);
  141.         OLED_ShowCH(0,1*2,(u8 *)&Buf);


  142.    }
  143.    
  144. }
復(fù)制代碼

代碼下載: bb-8_stm32源碼.7z (201 KB, 下載次數(shù): 7)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:328014 發(fā)表于 2021-8-18 22:19 | 只看該作者
本帖最后由 51hei團(tuán)團(tuán) 于 2021-8-18 22:42 編輯

樓主你好 能分享一下原理圖嗎?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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