在做小車(chē)之前,首先應(yīng)該明確需要的器件,其次劃分功能模塊,一個(gè)模塊一個(gè)模塊的來(lái),在完成一個(gè)模塊之后添加另一個(gè)能保證最終小車(chē)的穩(wěn)定功能實(shí)現(xiàn)。有兩種思路:一,以實(shí)現(xiàn)功能為主,不考慮后期要加什么東西,實(shí)現(xiàn)以后再做優(yōu)化。二,先將項(xiàng)目整體需要做的東西全部過(guò)一遍,再一步步做出成品。我是第一種,在搭建的過(guò)程中也遇到了一些問(wèn)題,如:我把電機(jī)弄好以后,咦,驅(qū)動(dòng)放哪?我把驅(qū)動(dòng)固定在板上以后,呀,洞洞板這面有可能使驅(qū)動(dòng)引腳導(dǎo)電,等各種問(wèn)題。所以具體采用哪種思路還需要根據(jù)實(shí)際情況來(lái)看。功能模塊 從一個(gè)流水燈開(kāi)始,依次加入電機(jī)、PWM、紅外、藍(lán)牙,完成最終調(diào)試。 實(shí)物圖
1.jpg (1.45 MB, 下載次數(shù): 82)
下載附件
2018-12-13 03:28 上傳
代碼需要注意的問(wèn)題:電機(jī)與驅(qū)動(dòng)的接線及代碼中GPIO口的初始化要能對(duì)應(yīng)上,具體怎么接具體測(cè)試。 - #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ù)長(zhǎng)度
- 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; //打開(kāi)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ù)長(zhǎng)度
- USART2_RX_BUF[reclen]=0; //加入結(jié)束符
-
- if(strcmp((const char*)USART2_RX_BUF,"O")==0){
- //xunji();
- break;
- }
- USART2_RX_STA=0;
- }
- //如果左邊檢測(cè)到黑線
- //有黑線是高電平
- if(LEFT_DETECTOR == 1 && RIGHT_DETECTOR == 0){
- carLeft(100,899);
- delay_ms(500);
- //右邊檢測(cè)到黑線
- }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
|