久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6645|回復: 1
打印 上一主題 下一主題
收起左側

STM32循跡+藍牙小車制作(附源碼)

[復制鏈接]
跳轉到指定樓層
樓主
在做小車之前,首先應該明確需要的器件,其次劃分功能模塊,一個模塊一個模塊的來,在完成一個模塊之后添加另一個能保證最終小車的穩定功能實現。有兩種思路:一,以實現功能為主,不考慮后期要加什么東西,實現以后再做優化。二,先將項目整體需要做的東西全部過一遍,再一步步做出成品。我是第一種,在搭建的過程中也遇到了一些問題,如:我把電機弄好以后,咦,驅動放哪?我把驅動固定在板上以后,呀,洞洞板這面有可能使驅動引腳導電,等各種問題。所以具體采用哪種思路還需要根據實際情況來看。功能模塊

從一個流水燈開始,依次加入電機、PWM、紅外、藍牙,完成最終調試。

實物圖



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

  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)                        //接收到一次數據了
  31.                 {               
  32.                          reclen=USART2_RX_STA&0X7FFF;        //得到數據長度
  33.                           USART2_RX_BUF[reclen]=0;                 //加入結束符
  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)                        //接收到一次數據了
  73.                         {               
  74.                                 reclen=USART2_RX_STA&0X7FFF;        //得到數據長度
  75.                                 USART2_RX_BUF[reclen]=0;                 //加入結束符
  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. }
復制代碼

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

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:445480 發表于 2018-12-13 11:05 | 只看該作者
這個可以有
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日本韩国一区二区 | 久综合 | 国产999精品久久久久久绿帽 | 成人免费xxxxx在线视频 | 国产综合久久久久久鬼色 | 欧美一级免费看 | 精品国产1区2区3区 在线国产视频 | 成人免费网站在线 | 免费毛片网 | 国产在线观看一区二区 | 欧美日韩视频在线第一区 | 欧美日韩在线一区二区 | 成人国产精品免费观看视频 | 亚洲第一区国产精品 | japanhdxxxx裸体 | 亚洲视频在线一区 | 中文字幕在线观看一区二区 | 精品成人一区 | 中文字幕福利视频 | 天天成人综合网 | 国产www成人| 天堂中文在线播放 | 国产精品嫩草影院精东 | 午夜激情视频 | 黑人性hd| 成人网在线 | 欧美国产日韩在线观看 | 黄网站在线观看 | 成人精品在线观看 | 一级毛片中国 | 欧美日韩国产一区二区 | 91黄色免费看 | 成人在线免费 | 国产精品一区二区三区在线 | 国产一区二区日韩 | 一级黄色绿像片 | 天天操天天射综合网 | 精品久久久久一区二区国产 | 国产二区三区 | 日韩中文视频 | 国产成人免费 |