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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

用arduino nano做的蜘蛛機器人 手機APP藍牙遙控+超聲波避障

[復制鏈接]
跳轉到指定樓層
樓主
(新手)用arduino nano做的簡易蜘蛛機器人,可通過手機APP藍牙串口控制,也可用超聲波避障行走。實物圖看起來有點粗糙,畢竟是寒門子弟在家操手做的,但效果還是可以的。


1、藍牙使用的是HC-05,串口軟件用的是SPP(附件里有)

2、電機是常見的130小電機,帶減速箱。驅動也是常見的L298N.
3、電池用的是兩節串聯的18650鋰電池(電壓7.4v)
4、結構部分是從某寶上20塊買來的益智拼裝玩具蜘蛛機器人,由于單個電機驅動不能實現拐彎,
  自己改成了兩個電機驅動
5、超聲波使用的是常見的4引腳SR04,舵機用的是9g小舵機。


為方便小伙伴們的交流,源代碼已貼出,新手水平有限,望笑納。
  1. #include <Servo.h>
  2. int ENA=3,ENB=9;
  3. int IN1=4;
  4. int IN2=5;
  5. int IN3=7;
  6. int IN4=8;

  7. int trig=A0,echo=A1;//發射、接收
  8. unsigned int juli;//距離
  9. Servo dj;//舵機
  10. void setup()
  11. {
  12.   pinMode(ENA,OUTPUT);
  13.   pinMode(ENB,OUTPUT);
  14.   pinMode(IN1,OUTPUT);
  15.   pinMode(IN2,OUTPUT);
  16.   pinMode(IN3,OUTPUT);
  17.   pinMode(IN4,OUTPUT);
  18.   Serial.begin(9600);
  19.   

  20.   pinMode(trig,OUTPUT);
  21.   pinMode(echo,INPUT);
  22.   dj.attach(11);//舵機引腳
  23.   dj.write(90);//角度
  24. }
  25. void ceju()
  26. {
  27.   digitalWrite(trig,LOW); //測距
  28. delayMicroseconds(2); //延時2微秒
  29. digitalWrite(trig,1);
  30. delayMicroseconds(20);
  31. digitalWrite(trig,0);
  32. int distance = pulseIn(echo,1); //讀取高電平時間.pulseIn函數用于讀取引腳脈沖的時間長度,脈沖可以是HIGH或LOW。如果是HIGH,函數將先等引腳變為高電平,然后開始計時,一直到變為低電平為止。返回脈沖持續的時間長短, 單位為ms。如果超時還沒有讀到的話, 將返回0。
  33. distance = distance/58; //按照公式計算
  34. juli = distance; //把值賦給S
  35. Serial.println(juli); //向串口發送S的值,可以在顯示器上顯示距離
  36. if (juli<30)
  37. {
  38. delay(50); //延時
  39. }
  40.   }
  41.   void chaoshengbo()
  42.   {
  43.     dj.write(90);
  44.     ceju();
  45.     if(juli<10)
  46.     {
  47.       houtui();
  48.       delay(300);
  49.       }
  50.       if(juli>10&&juli<=40)
  51.      { turn();
  52.     }
  53.     if(juli>40)
  54.     {
  55.       qianjin();
  56.       }
  57.   }
  58.   
  59.   void turn()
  60.   { //判斷轉向函數
  61. ting(); //停止所用電機
  62. dj.write(170); //舵機轉到170度既左邊(角度與安裝方式有關)
  63. delay(500); //留時間給舵機轉向
  64. ceju(); //運行測距函數
  65. dj.write(90); //測距完成,舵機回到中位
  66. delay(600); //留時間給舵機轉向
  67. if (juli>30) {qianzuo();} //判斷左邊障礙物距離,如果距離充足,運行左轉
  68. else {
  69. dj.write(10); //否則,舵機轉動到10度,測右邊距離
  70. delay(600);
  71. ceju(); //測距
  72. dj.write(90); //中位
  73. delay(600);
  74. if(juli>30){qianyou();
  75. } //右轉
  76. else{ houtui(); //判斷右邊距離,距離充足右轉否則后退
  77. int x=random(1); //產生一個0到1的隨機數
  78. if (x=0){qianyou();}
  79. else{qianzuo();} //判斷隨機數
  80. } //否則后退,并隨機轉向
  81. }
  82. }
  83. void qianjin()
  84. {
  85.   analogWrite(ENA,250);
  86.   analogWrite(ENB,250);
  87.    digitalWrite(IN1,1);
  88.     digitalWrite(IN2,0);
  89.      digitalWrite(IN3,1);
  90.       digitalWrite(IN4,0);
  91.   }
  92.   void houtui()
  93. {
  94.   analogWrite(ENA,250);
  95.   analogWrite(ENB,250);
  96.    digitalWrite(IN1,0);
  97.     digitalWrite(IN2,1);
  98.      digitalWrite(IN3,0);
  99.       digitalWrite(IN4,1);
  100.   }
  101.   void qianzuo()
  102. {
  103.   analogWrite(ENA,0);
  104.   analogWrite(ENB,200);
  105.    digitalWrite(IN1,0);
  106.     digitalWrite(IN2,0);
  107.      digitalWrite(IN3,1);
  108.       digitalWrite(IN4,0);
  109.   }
  110.   void qianyou()
  111. {
  112.   analogWrite(ENA,200);
  113.   analogWrite(ENB,0);
  114.    digitalWrite(IN1,1);
  115.     digitalWrite(IN2,0);
  116.      digitalWrite(IN3,0);
  117.       digitalWrite(IN4,0);
  118.   }
  119.   void houzuo()
  120. {
  121.   analogWrite(ENA,0);
  122.   analogWrite(ENB,200);
  123.    digitalWrite(IN1,0);
  124.     digitalWrite(IN2,0);
  125.      digitalWrite(IN3,0);
  126.       digitalWrite(IN4,1);
  127.   }
  128.   void houyou()
  129. {
  130.   analogWrite(ENA,200);
  131.   analogWrite(ENB,0);
  132.    digitalWrite(IN1,0);
  133.     digitalWrite(IN2,1);
  134.      digitalWrite(IN3,0);
  135.       digitalWrite(IN4,0);
  136.   }
  137.   void shunshi()
  138. {
  139.   analogWrite(ENA,250);
  140.   analogWrite(ENB,250);
  141.    digitalWrite(IN1,1);
  142.     digitalWrite(IN2,0);
  143.      digitalWrite(IN3,0);
  144.       digitalWrite(IN4,1);
  145.   }
  146.   void nishi()
  147. {
  148.   analogWrite(ENA,250);
  149.   analogWrite(ENB,250);
  150.    digitalWrite(IN1,0);
  151.     digitalWrite(IN2,1);
  152.      digitalWrite(IN3,1);
  153.       digitalWrite(IN4,0);
  154.   }
  155.   void ting()
  156. {
  157.    digitalWrite(IN1,0);
  158.     digitalWrite(IN2,0);
  159.      digitalWrite(IN3,0);
  160.       digitalWrite(IN4,0);
  161.   }
  162.   
  163. void loop() {
  164.   
  165.   if(Serial.available())
  166.   {
  167.     char i=Serial.read();
  168.     switch(i)
  169.     {
  170.       case'b':qianzuo();break;
  171.       case'c':qianjin();break;
  172.       case'd':qianyou();break;
  173.       case'e':nishi();break;
  174.       case'f':ting();break;
  175.       case'g':shunshi();break;
  176.       case'h':houzuo();break;
  177.       case'i':houtui();break;
  178.       case'j':houyou();break;
  179.       case'a':chaoshengbo();break;
  180.       //case'k':gunf();break;
  181.       //case'l':gunt();break;
  182.       }
  183.     }
  184. }
復制代碼

全部資料51hei下載地址:
自制蜘蛛機器人.zip (6.87 MB, 下載次數: 61)

評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:664234 發表于 2021-1-6 23:43 | 只看該作者
請問需要降壓模塊嗎,電壓7.4有點大是不是
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲不卡一 | 中文字幕第一页在线 | 日韩成人免费视频 | 天堂成人国产精品一区 | 国产成人精品亚洲日本在线观看 | 日韩精品在线免费 | 国产精品日日摸夜夜添夜夜av | 成年人网站国产 | 久草资源在线视频 | 欧洲亚洲一区 | 亚洲高清电影 | 日韩精品无码一区二区三区 | 国产中文字幕在线观看 | 请别相信他免费喜剧电影在线观看 | 欧美一区二区三区在线观看 | 搞av.com | 一区二区在线不卡 | 日本特黄a级高清免费大片 成年人黄色小视频 | 欧美成人免费电影 | 国产成人影院 | 亚洲午夜精品视频 | 在线成人免费视频 | 狠狠躁躁夜夜躁波多野结依 | 青青草这里只有精品 | 国产在线视频一区 | 成人免费观看视频 | 国产精品99免费视频 | 久久综合入口 | 龙珠z在线观看 | 自拍偷拍亚洲视频 | 成人动漫视频网站 | 天天拍天天射 | 免费xxxx大片国产在线 | 国产一区二区三区欧美 | www.精品国产 | 天天久久 | 成人午夜激情 | 瑟瑟激情 | 中文字幕国产视频 | 国产成人精品一区二区 | 午夜精品一区二区三区在线视频 |