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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 15717|回復: 11
收起左側

基于Arduino的藍牙智能小車(代碼+APP+教程)

  [復制鏈接]
ID:225013 發表于 2019-1-24 16:43 | 顯示全部樓層 |閱讀模式
以arduino為主控板,包含電機驅動模塊、藍牙模塊、語音模塊、超聲波模塊、語音模塊。實現前進后退左轉右轉(語音同步提醒),藍牙APP所有按鈕無障礙切換。
0.png


一.首先選擇我們需要使用的APP
0.png

二.進入APP選擇JDY-08設備

0.png

三,進入主界面操作
0.png

Arduino小車接收到相關的操作指令:
前進---- 0xa
后退----0xb
左---- 0xc
右--- 0xd
停止----0x10
音量+ ----0x11
音量- -----0x12
循跡----0xe
跟隨---0x13
娛樂—0xf

Arduino源程序如下:
  1. #include<SoftwareSerial.h>
  2. /*******************定義**************************/
  3. //蜂鳴器
  4. int beep_pin=A2;
  5. //電機定義端口
  6. int IN1 = 13;
  7. int IN2 = 12;
  8. int IN3 = 11;
  9. int IN4 = 10;
  10. //語音定義端口
  11. int IO1 = 4;
  12. int IO2 = 3;
  13. int IO3 = 2;
  14. int IO4 = 1;
  15. int IO5 = 0;
  16. int  pin_array[] = {IO5,IO4,IO3,IO2,IO1};
  17. int   fisrt_voice[] = {1,1,1,1,0};
  18. int  second_voice[] = {1,1,1,0,1};
  19. int   third_voice[] = {1,1,0,1,1};
  20. int  fourth_voice[] = {1,0,1,1,1};
  21. int     fif_voice[] = {0,1,1,1,1};
  22. int     six_voice[] = {0,0,1,1,0};
  23. //pwm調速端口
  24. int left_pin = 5;
  25. int right_pin = 6;
  26. int car_speed = 100;
  27. //超聲波模塊
  28. int TrigPin = A0;
  29. int EchoPin = A1;  //接收輸入的脈沖寬度,
  30. //軟串口定義
  31. SoftwareSerial  mySerial(8,9);
  32. SoftwareSerial dlSerial(SCL, SDA);
  33. unsigned char play_stop_music[] = {0x7E,0x03,0x1E,0x1D,0xEF};
  34. unsigned char play_add_music[] = {0x7E,0x03,0x15,0x16,0xEF};
  35. /*******************函數**********************/
  36. void play_addd_music()                          //語音加
  37. {
  38.   dlSerial.listen();
  39.   delay(300);
  40.   dlSerial.write(play_add_music,sizeof(play_add_music));
  41. }
  42. void beep()                                  //蜂鳴器
  43. {
  44.   tone(beep_pin,494);
  45.   delay(1000);
  46.   noTone(beep_pin);
  47.   delay(1000);
  48. }
  49. void set_speed()  //[0 ~255]                 //調速函數
  50. {
  51.     analogWrite(left_pin,car_speed);  
  52.     analogWrite(right_pin,car_speed);
  53. }
  54. void init_pin()                              //電機初始化
  55. {
  56.   pinMode(IN1,OUTPUT);
  57.   pinMode(IN2,OUTPUT);
  58.   pinMode(IN3,OUTPUT);
  59.   pinMode(IN4,OUTPUT);
  60.   return;
  61. }
  62. void left_motor_forward()                      //左電機直行
  63. {
  64.   digitalWrite(IN3,HIGH);
  65.   digitalWrite(IN4,LOW);
  66. }
  67. void left_motor_back()                           //左電機后退
  68. {
  69.   digitalWrite(IN3,LOW);
  70.   digitalWrite(IN4,HIGH);
  71. }
  72. void right_motor_forward()                        //右電機直行
  73. {
  74.   digitalWrite(IN1,HIGH);
  75.   digitalWrite(IN2,LOW);
  76. }
  77. void right_motor_back()                            //右電機后退
  78. {
  79.   digitalWrite(IN1,LOW);
  80.   digitalWrite(IN2,HIGH);
  81. }
  82. void car_forward()                                 //直行
  83. {
  84.   left_motor_forward();
  85.   right_motor_forward();
  86.   delay(1000);
  87. }
  88. void left_stop()                                    //左電機停
  89. {
  90.   digitalWrite(IN3,LOW);
  91.   digitalWrite(IN4,LOW);
  92.   }
  93.   void right_stop()                                 //右電機停
  94. {
  95.   digitalWrite(IN1,LOW);
  96.   digitalWrite(IN2,LOW);
  97. }
  98. void car_left()                                     //車左轉彎
  99. { left_motor_back();
  100.   right_motor_forward();
  101.   delay(1000);
  102. }
  103. void car_right()                                    //車右轉彎
  104. { left_motor_forward();
  105.   right_motor_back();
  106.   delay(1000);
  107. }
  108. void car_stop()                                      //車停
  109. {
  110.   digitalWrite(IN1,LOW);
  111.   digitalWrite(IN2,LOW);
  112.   digitalWrite(IN3,LOW);
  113.   digitalWrite(IN4,LOW);
  114.   delay(1000);
  115.   }
  116. void car_back()                                      //車后退
  117. {
  118.   left_motor_back();
  119.   right_motor_back();
  120.   delay(1000);
  121.   }
  122. void init_yuyin()                                       //語音初始化
  123. {  
  124.     pinMode(IO5,OUTPUT);  
  125.     pinMode(IO4,OUTPUT);  
  126.     pinMode(IO3,OUTPUT);  
  127.     pinMode(IO2,OUTPUT);  
  128.     pinMode(IO1,OUTPUT);
  129.    
  130. }

  131. void play_fisrt_voice()                                 //第一首歌
  132. {
  133.      int i = 0;
  134.      for(i = 0;i < 5;i++)
  135.      {
  136.          digitalWrite(pin_array[i],fisrt_voice[i]);
  137.      }
  138.      delay(1000);
  139. }
  140. void play_second_voice()                                 //第二首歌
  141. {
  142.      int i = 0;
  143.      for(i = 0;i < 5;i++)
  144.      {
  145.          digitalWrite(pin_array[i],second_voice[i]);
  146.      }
  147.      delay(1000);
  148. }
  149. void play_third_voice()                                 //第三首歌
  150. {
  151.      int i = 0;
  152.      for(i = 0;i < 5;i++)
  153.      {
  154.          digitalWrite(pin_array[i],third_voice[i]);
  155.      }
  156.      delay(1000);
  157. }
  158. void play_fourth_voice()                                 //第四首歌
  159. {
  160.      int i = 0;
  161.      for(i = 0;i < 5;i++)
  162.      {
  163.          digitalWrite(pin_array[i],fourth_voice[i]);
  164.      }
  165.      delay(1000);
  166. }
  167. void play_fif_voice()                                 //第五首歌
  168. {
  169.      int i = 0;
  170.      for(i = 0;i < 5;i++)
  171.      {
  172.          digitalWrite(pin_array[i],fif_voice[i]);
  173.      }
  174.      delay(1000);
  175. }
  176. void play_six_voice()                                 //第六首歌
  177. {
  178.      int i = 0;
  179.      for(i = 0;i < 5;i++)
  180.      {
  181.          digitalWrite(pin_array[i],six_voice[i]);
  182.      }
  183.      delay(1000);
  184. }
  185. float getDistance()                                   //得到距離
  186. {
  187.       float  distance;
  188.      digitalWrite(TrigPin,LOW);
  189.      delayMicroseconds(2);
  190.      digitalWrite(TrigPin,HIGH);
  191.      delayMicroseconds(10);
  192.      digitalWrite(TrigPin,LOW);
  193.      distance = pulseIn(EchoPin,HIGH) /58.00;
  194.      return distance;
  195. }
  196. void obstacle()                                       //避障
  197. {
  198.   
  199.    float  distance;
  200.    car_forward();
  201.    while(1)
  202.   {
  203.    distance = getDistance();
  204.    
  205.     if(distance < 100)
  206.     {   beep();
  207.         car_back();
  208.         delay(500);
  209.         car_left();
  210.         delay(1500);
  211.         play_six_voice();
  212.         car_forward();
  213.          mySerial.listen();
  214.         if(mySerial.available() > 0)
  215.             break;
  216.      }
  217.      else
  218.       car_forward();   
  219.   }
  220.   return ;  
  221. }
  222. void setup()                                          //setup
  223. {
  224.   // put your setup code here, to run once:
  225. init_pin();
  226. init_yuyin();
  227. set_speed();
  228. pinMode(beep_pin,OUTPUT);
  229. pinMode(TrigPin,OUTPUT);
  230. pinMode(EchoPin,INPUT);
  231. mySerial.begin(115200);
  232. dlSerial.begin(9600);
  233. }
  234. void loop()                                            //loop
  235. {
  236.   // put your main code here, to run repeatedly:
  237.     int ch = 0,i=0;
  238.     while(1)
  239.     {
  240.         mySerial.listen();
  241.         if(mySerial.available() > 0)
  242.         {
  243.               ch = mySerial.read();
  244.               switch(ch)
  245.               {
  246.                case 0xa:car_forward();play_fisrt_voice();break;
  247.                case 0xb:car_back();play_second_voice();break;
  248.                case 0xd:car_left();play_fourth_voice();break;
  249.                case 0xc:car_right();play_third_voice();break;
  250.                case 0x11:play_addd_music();break;
  251.                case 0xf:obstacle();break;
  252.                case 0x10:i++;car_stop();
  253.                          if(i==1)
  254.                          play_fif_voice();
  255.                          if(i==2)
  256.                          {
  257.                             dlSerial.listen();
  258.                             delay(300);
  259.                             dlSerial.write(play_stop_music,sizeof(play_stop_music));
  260.                             i=0;
  261.                          }
  262.                        break;
  263.                default:break;
  264.                }   
  265.         }
  266.     }
  267. }
復制代碼

所有資料51hei提供下載:
基于arduino的藍牙智能小車.zip (296.17 KB, 下載次數: 194)





評分

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

查看全部評分

回復

使用道具 舉報

ID:494764 發表于 2019-3-20 17:02 | 顯示全部樓層
寫的很規整,佩服。
回復

使用道具 舉報

ID:504448 發表于 2019-4-12 22:08 | 顯示全部樓層
請問藍牙模塊四線接哪里啊
回復

使用道具 舉報

ID:318672 發表于 2019-4-25 11:20 來自手機 | 顯示全部樓層
不錯,下載了
回復

使用道具 舉報

ID:566277 發表于 2019-6-18 23:30 | 顯示全部樓層
我很想下載啊
回復

使用道具 舉報

ID:652804 發表于 2020-2-21 21:37 | 顯示全部樓層
好資料,謝謝樓主分享。
回復

使用道具 舉報

ID:396693 發表于 2020-3-2 21:58 | 顯示全部樓層
新手,先觀望一下,謝謝
回復

使用道具 舉報

ID:726701 發表于 2020-4-11 23:23 | 顯示全部樓層
謝謝  。。。 剛好是我需要的
回復

使用道具 舉報

ID:632112 發表于 2020-5-20 16:48 | 顯示全部樓層
新手,先觀望一下,謝謝...
回復

使用道具 舉報

ID:719935 發表于 2020-5-22 00:19 | 顯示全部樓層
沒有藍牙模塊,慎重提醒,只有APP
回復

使用道具 舉報

ID:118488 發表于 2020-6-14 20:55 | 顯示全部樓層
新手,先觀望一下,謝謝
回復

使用道具 舉報

ID:727081 發表于 2020-6-17 11:45 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久久久久久久午夜片 | 国产又色又爽又黄又免费 | 成人亚洲 | 日韩国产一区二区三区 | 国产精品久久久久久网站 | 欧美成人黄色小说 | 久久精品国产久精国产 | 欧美日韩久久精品 | 国产午夜精品久久久久 | 91av国产在线视频 | 国产视频1区 | 免费在线观看一区二区 | 天天射夜夜操 | 国产日产欧产精品精品推荐蛮挑 | 国产在线精品一区二区三区 | 人人做人人澡人人爽欧美 | 国产成人jvid在线播放 | 午夜视频网站 | 国产午夜高清 | 国产 亚洲 网红 主播 | 999久久久| 国产又色又爽又黄又免费 | 亚洲精选一区二区 | 精品国产欧美在线 | 成人午夜视频在线观看 | 久久久久国产一区二区三区四区 | 亚洲网站在线观看 | 亚洲国产精品一区二区第一页 | 欧美片网站免费 | 亚洲精品乱码久久久久久按摩观 | 国产超碰人人爽人人做人人爱 | 久久伊人免费视频 | 亚洲精品日韩一区二区电影 | 在线欧美亚洲 | 国产精品久久久久久久久久三级 | 综合久久国产 | av片免费| 久久噜| 日韩精品一区二区三区中文字幕 | 日本电影免费完整观看 | 在线成人|