標(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í)物圖
1.jpg (1.45 MB, 下載次數(shù): 82)
下載附件
2018-12-13 03:28 上傳
代碼需要注意的問題:電機(jī)與驅(qū)動的接線及代碼中GPIO口的初始化要能對應(yīng)上,具體怎么接具體測試。
- #include "sys.h"
- #include "usart.h"
- #include "delay.h"
- #include "led.h"
- #include "key.h"
- #include "motor.h"
- #include "detector.h"
- #include "usart2.h"
- #include "hc05.h"
- #include "string.h"
- void xunji(void);
- int main(void)
- {
- u8 sendbuf[20];
- u8 reclen=0;
-
- Stm32_Clock_Init(9);
- delay_init(72);
-
- LED_Init();
- KEY_Init();
- PWM_Init(899,0);//pwm頻率=72000/(899+1)=80Khz ??why先不管
- detectorInit();
-
- uart_init(72,9600); //串口1初始化為9600
- HC05_Init(); //初始化ATK-HC05模塊
-
- while(1){
-
- if(USART2_RX_STA&0X8000) //接收到一次數(shù)據(jù)了
- {
- reclen=USART2_RX_STA&0X7FFF; //得到數(shù)據(jù)長度
- USART2_RX_BUF[reclen]=0; //加入結(jié)束符
-
- if(strcmp((const char*)USART2_RX_BUF,"X")==0){
- xunji();
- }
- if(strcmp((const char*)USART2_RX_BUF,"F")==0)
- { LED1=~LED1;
- carStraight(450,899);
-
- }
- if(strcmp((const char*)USART2_RX_BUF,"B")==0)
- { LED1=~LED1;
- carBack(500,899);
- }
- if(strcmp((const char*)USART2_RX_BUF,"L")==0)
- {
- LED1=~LED1; //打開LED1
- carLeft(300,899);
- }
- if(strcmp((const char*)USART2_RX_BUF,"R")==0)
- { LED1=~LED1;
- carRight(400,300);
- }
- if(strcmp((const char*)USART2_RX_BUF,"S")==0)
- { LED1=~LED1;
- carStop();
- }
- USART2_RX_STA=0;
- }
- }
- }
- /*循跡代碼
- */
- void xunji(){
-
- u8 sendbuf[20];
- u8 reclen=0;
- while(1){
-
- if(USART2_RX_STA&0X8000) //接收到一次數(shù)據(jù)了
- {
- reclen=USART2_RX_STA&0X7FFF; //得到數(shù)據(jù)長度
- USART2_RX_BUF[reclen]=0; //加入結(jié)束符
-
- if(strcmp((const char*)USART2_RX_BUF,"O")==0){
- //xunji();
- break;
- }
- USART2_RX_STA=0;
- }
- //如果左邊檢測到黑線
- //有黑線是高電平
- if(LEFT_DETECTOR == 1 && RIGHT_DETECTOR == 0){
- carLeft(100,899);
- delay_ms(500);
- //右邊檢測到黑線
- }else if(RIGHT_DETECTOR == 1 && LEFT_DETECTOR == 0){
- carRight(600,300);
- delay_ms(500);
- }else{
- carStraight(400,600);
- }
- }
- }
復(fù)制代碼
全部資料51hei下載地址:
BlueTooth-and-detector-Car-master.zip
(180.29 KB, 下載次數(shù): 83)
2018-12-12 22:31 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者: 春夏秋冬都是你 時(shí)間: 2018-12-13 11:05
這個(gè)可以有
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |