標(biāo)題: STM32循跡+藍(lán)牙小車制作(附源碼) [打印本頁]

作者: YANHONGFEI1    時(shí)間: 2018-12-12 22:32
標(biāo)題: STM32循跡+藍(lán)牙小車制作(附源碼)
在做小車之前,首先應(yīng)該明確需要的器件,其次劃分功能模塊,一個(gè)模塊一個(gè)模塊的來,在完成一個(gè)模塊之后添加另一個(gè)能保證最終小車的穩(wěn)定功能實(shí)現(xiàn)。有兩種思路:一,以實(shí)現(xiàn)功能為主,不考慮后期要加什么東西,實(shí)現(xiàn)以后再做優(yōu)化。二,先將項(xiàng)目整體需要做的東西全部過一遍,再一步步做出成品。我是第一種,在搭建的過程中也遇到了一些問題,如:我把電機(jī)弄好以后,咦,驅(qū)動放哪?我把驅(qū)動固定在板上以后,呀,洞洞板這面有可能使驅(qū)動引腳導(dǎo)電,等各種問題。所以具體采用哪種思路還需要根據(jù)實(shí)際情況來看。功能模塊

從一個(gè)流水燈開始,依次加入電機(jī)、PWM、紅外、藍(lán)牙,完成最終調(diào)試。

實(shí)物圖



代碼需要注意的問題:電機(jī)與驅(qū)動的接線及代碼中GPIO口的初始化要能對應(yīng)上,具體怎么接具體測試。

  1. #include "sys.h"
  2. #include "usart.h"        
  3. #include "delay.h"        
  4. #include "led.h"
  5. #include "key.h"
  6. #include "motor.h"
  7. #include "detector.h"
  8. #include "usart2.h"
  9. #include "hc05.h"
  10. #include "string.h"
  11. void xunji(void);
  12. int main(void)
  13. {        
  14.         u8 sendbuf[20];         
  15.         u8 reclen=0;  
  16.         
  17.         Stm32_Clock_Init(9);
  18.         delay_init(72);
  19.         
  20.         LED_Init();
  21.         KEY_Init();
  22.         PWM_Init(899,0);//pwm頻率=72000/(899+1)=80Khz ??why先不管
  23.         detectorInit();
  24.         
  25.         uart_init(72,9600);         //串口1初始化為9600
  26.         HC05_Init();        //初始化ATK-HC05模塊  
  27.         
  28.         while(1){
  29.                
  30.                 if(USART2_RX_STA&0X8000)                        //接收到一次數(shù)據(jù)了
  31.                 {               
  32.                          reclen=USART2_RX_STA&0X7FFF;        //得到數(shù)據(jù)長度
  33.                           USART2_RX_BUF[reclen]=0;                 //加入結(jié)束符
  34.                         
  35.                         if(strcmp((const char*)USART2_RX_BUF,"X")==0){
  36.                                 xunji();
  37.                         }
  38.                         if(strcmp((const char*)USART2_RX_BUF,"F")==0)
  39.                         {        LED1=~LED1;
  40.                                 carStraight(450,899);
  41.                                 
  42.                         }
  43.                         if(strcmp((const char*)USART2_RX_BUF,"B")==0)
  44.                         {        LED1=~LED1;
  45.                                 carBack(500,899);
  46.                         }
  47.                         if(strcmp((const char*)USART2_RX_BUF,"L")==0)
  48.                         {        
  49.                                 LED1=~LED1;        //打開LED1
  50.                                 carLeft(300,899);
  51.                         }
  52.                         if(strcmp((const char*)USART2_RX_BUF,"R")==0)
  53.                         {        LED1=~LED1;
  54.                                 carRight(400,300);
  55.                         }
  56.                         if(strcmp((const char*)USART2_RX_BUF,"S")==0)
  57.                         {        LED1=~LED1;
  58.                                 carStop();
  59.                         }
  60.                          USART2_RX_STA=0;         
  61.                 }                                                                                                                                                                        
  62.         }
  63. }
  64. /*循跡代碼
  65. */
  66. void xunji(){
  67.         
  68.         u8 sendbuf[20];         
  69.         u8 reclen=0;  
  70.         while(1){
  71.                
  72.                 if(USART2_RX_STA&0X8000)                        //接收到一次數(shù)據(jù)了
  73.                         {               
  74.                                 reclen=USART2_RX_STA&0X7FFF;        //得到數(shù)據(jù)長度
  75.                                 USART2_RX_BUF[reclen]=0;                 //加入結(jié)束符
  76.                                 
  77.                                 if(strcmp((const char*)USART2_RX_BUF,"O")==0){
  78.                                         //xunji();
  79.                                         break;
  80.                                 }
  81.                                 USART2_RX_STA=0;         
  82.                 }         
  83.                 //如果左邊檢測到黑線
  84.                 //有黑線是高電平
  85.                 if(LEFT_DETECTOR == 1 && RIGHT_DETECTOR == 0){
  86.                         carLeft(100,899);
  87.                         delay_ms(500);
  88.                         //右邊檢測到黑線
  89.                 }else if(RIGHT_DETECTOR == 1 && LEFT_DETECTOR == 0){
  90.                         carRight(600,300);
  91.                         delay_ms(500);
  92.                 }else{
  93.                         carStraight(400,600);
  94.                 }
  95.         }        
  96. }
復(fù)制代碼

全部資料51hei下載地址:
BlueTooth-and-detector-Car-master.zip (180.29 KB, 下載次數(shù): 83)

作者: 春夏秋冬都是你    時(shí)間: 2018-12-13 11:05
這個(gè)可以有




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1