(新手)用arduino nano做的簡易蜘蛛機器人,可通過手機APP藍牙串口控制,也可用超聲波避障行走。實物圖看起來有點粗糙,畢竟是寒門子弟在家操手做的,但效果還是可以的。
IMG_20200214_161454.jpg (2.49 MB, 下載次數: 78)
下載附件
實拍
2020-2-14 16:54 上傳
Screenshot_20200214_162910_com.shenyaocn.android..jpg (280.45 KB, 下載次數: 95)
下載附件
自己做的APP操作界面
2020-2-14 16:54 上傳
1、藍牙使用的是HC-05,串口軟件用的是SPP(附件里有)
2、電機是常見的130小電機,帶減速箱。驅動也是常見的L298N.
3、電池用的是兩節串聯的18650鋰電池(電壓7.4v)
4、結構部分是從某寶上20塊買來的益智拼裝玩具蜘蛛機器人,由于單個電機驅動不能實現拐彎,
自己改成了兩個電機驅動
5、超聲波使用的是常見的4引腳SR04,舵機用的是9g小舵機。
為方便小伙伴們的交流,源代碼已貼出,新手水平有限,望笑納。- #include <Servo.h>
- int ENA=3,ENB=9;
- int IN1=4;
- int IN2=5;
- int IN3=7;
- int IN4=8;
- int trig=A0,echo=A1;//發射、接收
- unsigned int juli;//距離
- Servo dj;//舵機
- void setup()
- {
- pinMode(ENA,OUTPUT);
- pinMode(ENB,OUTPUT);
- pinMode(IN1,OUTPUT);
- pinMode(IN2,OUTPUT);
- pinMode(IN3,OUTPUT);
- pinMode(IN4,OUTPUT);
- Serial.begin(9600);
-
- pinMode(trig,OUTPUT);
- pinMode(echo,INPUT);
- dj.attach(11);//舵機引腳
- dj.write(90);//角度
- }
- void ceju()
- {
- digitalWrite(trig,LOW); //測距
- delayMicroseconds(2); //延時2微秒
- digitalWrite(trig,1);
- delayMicroseconds(20);
- digitalWrite(trig,0);
- int distance = pulseIn(echo,1); //讀取高電平時間.pulseIn函數用于讀取引腳脈沖的時間長度,脈沖可以是HIGH或LOW。如果是HIGH,函數將先等引腳變為高電平,然后開始計時,一直到變為低電平為止。返回脈沖持續的時間長短, 單位為ms。如果超時還沒有讀到的話, 將返回0。
- distance = distance/58; //按照公式計算
- juli = distance; //把值賦給S
- Serial.println(juli); //向串口發送S的值,可以在顯示器上顯示距離
- if (juli<30)
- {
- delay(50); //延時
- }
- }
- void chaoshengbo()
- {
- dj.write(90);
- ceju();
- if(juli<10)
- {
- houtui();
- delay(300);
- }
- if(juli>10&&juli<=40)
- { turn();
- }
- if(juli>40)
- {
- qianjin();
- }
- }
-
- void turn()
- { //判斷轉向函數
- ting(); //停止所用電機
- dj.write(170); //舵機轉到170度既左邊(角度與安裝方式有關)
- delay(500); //留時間給舵機轉向
- ceju(); //運行測距函數
- dj.write(90); //測距完成,舵機回到中位
- delay(600); //留時間給舵機轉向
- if (juli>30) {qianzuo();} //判斷左邊障礙物距離,如果距離充足,運行左轉
- else {
- dj.write(10); //否則,舵機轉動到10度,測右邊距離
- delay(600);
- ceju(); //測距
- dj.write(90); //中位
- delay(600);
- if(juli>30){qianyou();
- } //右轉
- else{ houtui(); //判斷右邊距離,距離充足右轉否則后退
- int x=random(1); //產生一個0到1的隨機數
- if (x=0){qianyou();}
- else{qianzuo();} //判斷隨機數
- } //否則后退,并隨機轉向
- }
- }
- void qianjin()
- {
- analogWrite(ENA,250);
- analogWrite(ENB,250);
- digitalWrite(IN1,1);
- digitalWrite(IN2,0);
- digitalWrite(IN3,1);
- digitalWrite(IN4,0);
- }
- void houtui()
- {
- analogWrite(ENA,250);
- analogWrite(ENB,250);
- digitalWrite(IN1,0);
- digitalWrite(IN2,1);
- digitalWrite(IN3,0);
- digitalWrite(IN4,1);
- }
- void qianzuo()
- {
- analogWrite(ENA,0);
- analogWrite(ENB,200);
- digitalWrite(IN1,0);
- digitalWrite(IN2,0);
- digitalWrite(IN3,1);
- digitalWrite(IN4,0);
- }
- void qianyou()
- {
- analogWrite(ENA,200);
- analogWrite(ENB,0);
- digitalWrite(IN1,1);
- digitalWrite(IN2,0);
- digitalWrite(IN3,0);
- digitalWrite(IN4,0);
- }
- void houzuo()
- {
- analogWrite(ENA,0);
- analogWrite(ENB,200);
- digitalWrite(IN1,0);
- digitalWrite(IN2,0);
- digitalWrite(IN3,0);
- digitalWrite(IN4,1);
- }
- void houyou()
- {
- analogWrite(ENA,200);
- analogWrite(ENB,0);
- digitalWrite(IN1,0);
- digitalWrite(IN2,1);
- digitalWrite(IN3,0);
- digitalWrite(IN4,0);
- }
- void shunshi()
- {
- analogWrite(ENA,250);
- analogWrite(ENB,250);
- digitalWrite(IN1,1);
- digitalWrite(IN2,0);
- digitalWrite(IN3,0);
- digitalWrite(IN4,1);
- }
- void nishi()
- {
- analogWrite(ENA,250);
- analogWrite(ENB,250);
- digitalWrite(IN1,0);
- digitalWrite(IN2,1);
- digitalWrite(IN3,1);
- digitalWrite(IN4,0);
- }
- void ting()
- {
- digitalWrite(IN1,0);
- digitalWrite(IN2,0);
- digitalWrite(IN3,0);
- digitalWrite(IN4,0);
- }
-
- void loop() {
-
- if(Serial.available())
- {
- char i=Serial.read();
- switch(i)
- {
- case'b':qianzuo();break;
- case'c':qianjin();break;
- case'd':qianyou();break;
- case'e':nishi();break;
- case'f':ting();break;
- case'g':shunshi();break;
- case'h':houzuo();break;
- case'i':houtui();break;
- case'j':houyou();break;
- case'a':chaoshengbo();break;
- //case'k':gunf();break;
- //case'l':gunt();break;
- }
- }
- }
復制代碼
51hei截圖20200214165254.jpg (18.75 KB, 下載次數: 72)
下載附件
2020-2-14 16:57 上傳
全部資料51hei下載地址:
自制蜘蛛機器人.zip
(6.87 MB, 下載次數: 61)
2020-2-14 16:56 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|