“(RB-13K056)AS-4WD移動偵測避障機(jī)器人”的版本間的差異
來自ALSROBOT WiKi
(→?電控部分安裝步驟) |
(→?應(yīng)用例程) |
||
第37行: | 第37行: | ||
[[文件:4wddiankonganzhuang07.jpg|700px|縮略圖|居中|4WD偵測避障平臺安裝完成效果圖]] | [[文件:4wddiankonganzhuang07.jpg|700px|縮略圖|居中|4WD偵測避障平臺安裝完成效果圖]] | ||
? | ==應(yīng)用例程== | + | ==整機(jī)測試== |
+ | ===應(yīng)用例程=== | ||
+ | <pre style='color:blue'> | ||
+ | #include <Servo.h> | ||
+ | Servo myservo; | ||
+ | int duration; //定義變量duration用來存儲脈沖 | ||
+ | int distance; //定義變量distance用來存儲距離值 | ||
+ | int srfPin = 15; //定義srfPin為數(shù)字口15 | ||
+ | int z; //定義變量Z int val; | ||
+ | //定義變量val | ||
+ | int val1; //定義變量val1 | ||
+ | int val2; //定義變量val2 | ||
+ | void setup() | ||
+ | { | ||
+ | myservo.attach(8); //8號引腳輸出舵機(jī)控制信號 | ||
+ | Serial.begin(9600); //僅能使用9、10號引腳 | ||
+ | pinMode(9,OUTPUT); //定義I3接口 | ||
+ | pinMode(10,OUTPUT); //定義I4接口 | ||
+ | pinMode(11,OUTPUT); //定義EB(PWM調(diào)速)接口 | ||
+ | pinMode(5,OUTPUT); //定義EA(PWM調(diào)速)接口 | ||
+ | pinMode(6,OUTPUT); //定義I2接口 | ||
+ | pinMode(7,OUTPUT); //定義I1接口 | ||
+ | myservo.write(90); //使舵機(jī)轉(zhuǎn)到90度 | ||
+ | } | ||
+ | void loop() | ||
+ | { | ||
+ | delay(20); //延時20毫秒 | ||
+ | Goahead(); //調(diào)用前進(jìn)子程序 | ||
+ | val=Ultrasonic(z); //將超聲波讀取的距離值賦值給val | ||
+ | if(val<25) //判斷如果val小于25則繼續(xù)執(zhí)行 | ||
+ | { | ||
+ | Stop(); //調(diào)用停止子程序 | ||
+ | myservo.write(0); //讓舵機(jī)轉(zhuǎn)0度 | ||
+ | delay(1000); //延時1秒等待舵機(jī)到達(dá)指定位置 | ||
+ | val1=Ultrasonic(z); //將超聲波讀取的距離值賦值給 | ||
+ | val1 delay(1000); //延時1秒等待舵機(jī)到達(dá)指定位置 | ||
+ | myservo.write(179); //讓舵機(jī)轉(zhuǎn)180度 | ||
+ | delay(1000); //延時1秒等待舵機(jī)到達(dá)指定位置 | ||
+ | val2=Ultrasonic(z); //將超聲波讀取的距離值賦值給val2 | ||
+ | delay(1000); //延時1秒等待舵機(jī)到達(dá)指定位置 | ||
+ | myservo.write(83); //讓舵機(jī)轉(zhuǎn)90度 | ||
+ | delay(1000); //延時1秒 | ||
+ | if(val1<val2) | ||
+ | { | ||
+ | Turn_left(); //調(diào)用左轉(zhuǎn)子程序 | ||
+ | delay(200); //延時200毫秒 | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | Turn_right(); //調(diào)用右轉(zhuǎn)子程序 | ||
+ | delay(200); //延時200毫秒 | ||
+ | } | ||
+ | int Ultrasonic(int distance) | ||
+ | { | ||
+ | pinMode(srfPin,OUTPUT); //定義srfPin為輸出接口 | ||
+ | digitalWrite(srfPin, LOW); //高電平觸發(fā)前發(fā)送2微秒的低電平 | ||
+ | delayMicroseconds(2); | ||
+ | digitalWrite(srfPin, HIGH); //發(fā)送10微秒的高電平開始檢測 | ||
+ | delayMicroseconds(10); | ||
+ | digitalWrite(srfPin, LOW); //等待脈沖返回前發(fā)送一個低電平 | ||
+ | pinMode(srfPin, INPUT); //定義srfPin為輸入接口 | ||
+ | duration = pulseIn(srfPin, HIGH); //從URF02讀取脈沖 | ||
+ | distance = duration/58; //除以58得到距離值 | ||
+ | return distance; | ||
+ | } | ||
+ | void Goahead()//前進(jìn) | ||
+ | { | ||
+ | analogWrite(5,165); //輸入模擬值進(jìn)行設(shè)定速度 | ||
+ | digitalWrite(7,LOW); //使直流電機(jī)(右)順時針轉(zhuǎn) | ||
+ | digitalWrite(6,HIGH); | ||
+ | analogWrite(11,160); //輸入模擬值進(jìn)行設(shè)定速度 | ||
+ | digitalWrite(9,HIGH); //使直流電機(jī)(左)逆時針轉(zhuǎn) | ||
+ | digitalWrite(10,LOW); | ||
+ | } | ||
+ | void Stop()//停止 | ||
+ | { | ||
+ | digitalWrite(6,HIGH); //使直流電機(jī)(右)制動 | ||
+ | digitalWrite(7,HIGH); | ||
+ | digitalWrite(9,HIGH); //使直流電機(jī)(左)制動 | ||
+ | digitalWrite(10,HIGH); | ||
+ | } | ||
+ | void Turn_right()//右轉(zhuǎn) | ||
+ | { | ||
+ | analogWrite(5,170); //輸入模擬值進(jìn)行設(shè)定速度 | ||
+ | digitalWrite(6,LOW); //使直流電機(jī)(右)順時針轉(zhuǎn) | ||
+ | digitalWrite(7,HIGH); | ||
+ | analogWrite(11,150); //輸入模擬值進(jìn)行設(shè)定速度 | ||
+ | digitalWrite(9,HIGH); //使直流電機(jī)(左)逆時針轉(zhuǎn) | ||
+ | digitalWrite(10,LOW); | ||
+ | } | ||
+ | void Turn_left()//左轉(zhuǎn) | ||
+ | { | ||
+ | analogWrite(5,150); //輸入模擬值進(jìn)行設(shè)定速度 | ||
+ | digitalWrite(7,LOW); //使直流電機(jī)(右)順時針轉(zhuǎn) | ||
+ | digitalWrite(6,HIGH); | ||
+ | analogWrite(11,170); //輸入模擬值進(jìn)行設(shè)定速度 | ||
+ | digitalWrite(10,HIGH); //使直流電機(jī)(左)逆時針轉(zhuǎn) | ||
+ | digitalWrite(9,LOW); | ||
+ | } | ||
+ | delay(500); //延時500毫秒 | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
==產(chǎn)品相關(guān)推薦== | ==產(chǎn)品相關(guān)推薦== |
2015年8月20日 (四) 15:35的版本
目錄 |
產(chǎn)品概述
超聲波作為智能車避障的一種重要手段,以其避障實現(xiàn)便,計算簡單,易于做時控制,測量精度也能達(dá)到實用的要求,在未來汽車智能化進(jìn)程中必將得到廣泛。AS-4WD 超聲偵測自主避障機(jī)器人采用RB-URF02超聲波傳感器,可使機(jī)器人像蝙蝠一樣通過聲納來感知周圍的環(huán)境,傳感器下面安裝伺服舵機(jī)可以令其具有旋轉(zhuǎn)功從而可實現(xiàn)一個傳感器多方位測距與探測避障功能。產(chǎn)品為全鋁合金車體,結(jié)實耐用,四個馬達(dá)7.2V電壓獨立驅(qū)動,動力強(qiáng)勁,結(jié)構(gòu)合理,便于擴(kuò)展;獨立散件包裝,讓您完全體驗DIY的樂趣。
規(guī)格參數(shù)
- 驅(qū)動電機(jī)齒輪箱減速比:1:48
- 驅(qū)動電機(jī)無負(fù)載轉(zhuǎn)速:220rpm
- 車輪直徑:65mm
- 車輪寬度:25mm
- 平臺長度:206mm
- 平臺寬度:200mm
- 平臺高度:65mm
- 平臺重量:620g
- 底盤距地面距離:15mm
零件清單
安裝步驟
機(jī)械部分安裝步驟
直流電機(jī)安裝
4WD平臺兩側(cè)電機(jī)安裝方法相同,需要注意的是在安裝電機(jī)之前需要將電機(jī)連接線使用電烙鐵焊接好,并使用熱縮過加熱塑封。
平臺側(cè)板安裝
平臺端板安裝
電控部分安裝步驟
整機(jī)測試
應(yīng)用例程
#include <Servo.h> Servo myservo; int duration; //定義變量duration用來存儲脈沖 int distance; //定義變量distance用來存儲距離值 int srfPin = 15; //定義srfPin為數(shù)字口15 int z; //定義變量Z int val; //定義變量val int val1; //定義變量val1 int val2; //定義變量val2 void setup() { myservo.attach(8); //8號引腳輸出舵機(jī)控制信號 Serial.begin(9600); //僅能使用9、10號引腳 pinMode(9,OUTPUT); //定義I3接口 pinMode(10,OUTPUT); //定義I4接口 pinMode(11,OUTPUT); //定義EB(PWM調(diào)速)接口 pinMode(5,OUTPUT); //定義EA(PWM調(diào)速)接口 pinMode(6,OUTPUT); //定義I2接口 pinMode(7,OUTPUT); //定義I1接口 myservo.write(90); //使舵機(jī)轉(zhuǎn)到90度 } void loop() { delay(20); //延時20毫秒 Goahead(); //調(diào)用前進(jìn)子程序 val=Ultrasonic(z); //將超聲波讀取的距離值賦值給val if(val<25) //判斷如果val小于25則繼續(xù)執(zhí)行 { Stop(); //調(diào)用停止子程序 myservo.write(0); //讓舵機(jī)轉(zhuǎn)0度 delay(1000); //延時1秒等待舵機(jī)到達(dá)指定位置 val1=Ultrasonic(z); //將超聲波讀取的距離值賦值給 val1 delay(1000); //延時1秒等待舵機(jī)到達(dá)指定位置 myservo.write(179); //讓舵機(jī)轉(zhuǎn)180度 delay(1000); //延時1秒等待舵機(jī)到達(dá)指定位置 val2=Ultrasonic(z); //將超聲波讀取的距離值賦值給val2 delay(1000); //延時1秒等待舵機(jī)到達(dá)指定位置 myservo.write(83); //讓舵機(jī)轉(zhuǎn)90度 delay(1000); //延時1秒 if(val1<val2) { Turn_left(); //調(diào)用左轉(zhuǎn)子程序 delay(200); //延時200毫秒 } else { Turn_right(); //調(diào)用右轉(zhuǎn)子程序 delay(200); //延時200毫秒 } int Ultrasonic(int distance) { pinMode(srfPin,OUTPUT); //定義srfPin為輸出接口 digitalWrite(srfPin, LOW); //高電平觸發(fā)前發(fā)送2微秒的低電平 delayMicroseconds(2); digitalWrite(srfPin, HIGH); //發(fā)送10微秒的高電平開始檢測 delayMicroseconds(10); digitalWrite(srfPin, LOW); //等待脈沖返回前發(fā)送一個低電平 pinMode(srfPin, INPUT); //定義srfPin為輸入接口 duration = pulseIn(srfPin, HIGH); //從URF02讀取脈沖 distance = duration/58; //除以58得到距離值 return distance; } void Goahead()//前進(jìn) { analogWrite(5,165); //輸入模擬值進(jìn)行設(shè)定速度 digitalWrite(7,LOW); //使直流電機(jī)(右)順時針轉(zhuǎn) digitalWrite(6,HIGH); analogWrite(11,160); //輸入模擬值進(jìn)行設(shè)定速度 digitalWrite(9,HIGH); //使直流電機(jī)(左)逆時針轉(zhuǎn) digitalWrite(10,LOW); } void Stop()//停止 { digitalWrite(6,HIGH); //使直流電機(jī)(右)制動 digitalWrite(7,HIGH); digitalWrite(9,HIGH); //使直流電機(jī)(左)制動 digitalWrite(10,HIGH); } void Turn_right()//右轉(zhuǎn) { analogWrite(5,170); //輸入模擬值進(jìn)行設(shè)定速度 digitalWrite(6,LOW); //使直流電機(jī)(右)順時針轉(zhuǎn) digitalWrite(7,HIGH); analogWrite(11,150); //輸入模擬值進(jìn)行設(shè)定速度 digitalWrite(9,HIGH); //使直流電機(jī)(左)逆時針轉(zhuǎn) digitalWrite(10,LOW); } void Turn_left()//左轉(zhuǎn) { analogWrite(5,150); //輸入模擬值進(jìn)行設(shè)定速度 digitalWrite(7,LOW); //使直流電機(jī)(右)順時針轉(zhuǎn) digitalWrite(6,HIGH); analogWrite(11,170); //輸入模擬值進(jìn)行設(shè)定速度 digitalWrite(10,HIGH); //使直流電機(jī)(左)逆時針轉(zhuǎn) digitalWrite(9,LOW); } delay(500); //延時500毫秒 } }