“(RB-13K049)AS-4WD語音識別移動(dòng)機(jī)器人”的版本間的差異
(→?超聲波傳感器接線) |
(→?使用方法) |
||
第68行: | 第68行: | ||
|- | |- | ||
|align="center"|超聲波模塊引腳 | |align="center"|超聲波模塊引腳 | ||
? | |align="center"|Carduino | + | |align="center"|Carduino UNO控制器 |
|- | |- | ||
|align="center"|5V | |align="center"|5V | ||
第82行: | 第82行: | ||
|align="center"|數(shù)字2腳S端 | |align="center"|數(shù)字2腳S端 | ||
|} | |} | ||
+ | ====雙H橋驅(qū)動(dòng)板接線==== | ||
+ | {|border="1" cellspacing="0" align="center" cellpadding="5" width="400px" | ||
+ | |- | ||
+ | |align="center"|雙H橋驅(qū)動(dòng)板 | ||
+ | |align="center"|Carduino UNO控制器 | ||
+ | |- | ||
+ | |align="center"|EA | ||
+ | |align="center"|數(shù)字腳10信號S | ||
+ | |- | ||
+ | |align="center"|EB | ||
+ | |align="center"|數(shù)字腳5信號S | ||
+ | |- | ||
+ | |align="center"|I1 | ||
+ | |align="center"|數(shù)字腳8信號S | ||
+ | |- | ||
+ | |align="center"|I2 | ||
+ | |align="center"|數(shù)字腳9信號S | ||
+ | |- | ||
+ | |align="center"|I3 | ||
+ | |align="center"|數(shù)字腳7信號S | ||
+ | |- | ||
+ | |align="center"|I4 | ||
+ | |align="center"|數(shù)字腳6信號S | ||
+ | |} | ||
+ | ===語音控制4WD平臺=== | ||
+ | ====基本語音控制==== | ||
+ | 第一步:打開控制器電源及4WD 機(jī)器人電源。<br/> | ||
+ | 第二步:等待藍(lán)牙配對。主從藍(lán)牙模塊黃燈都亮起表示配對成功(十秒左右)。<br/> | ||
+ | 第三步:發(fā)號施令,在說出命令后4WD 開始運(yùn)動(dòng),控制器回應(yīng)相同的命令。如說“前進(jìn)”4WD 機(jī)器人向前走,控制器回應(yīng)“前進(jìn)”。<br/> | ||
+ | ====復(fù)合語音控制==== | ||
+ | 第一次說“前進(jìn)”4WD 慢速前進(jìn)(一檔),控制器應(yīng)答“前進(jìn)”再說一次“前進(jìn)”,4WD 快速前進(jìn)(二檔)控制器應(yīng)答“加速前進(jìn)”再次說“前進(jìn)”4WD 更快速前進(jìn)(三檔)控制器應(yīng)答“全速前進(jìn)”。在“前進(jìn)”命令中執(zhí)行其他命令后4WD 從慢速前進(jìn)(一檔)開始。<br/> | ||
+ | 第一次說“停止”4WD 停止所有動(dòng)作,控制器應(yīng)答“停止”再次說“停止”4WD 機(jī)器人測試前面障礙物與超聲波探頭距離,測試完成后數(shù)據(jù)回傳給控制器進(jìn)行播報(bào)“當(dāng)前距離XX 厘米?!?lt;br/> | ||
+ | ==例子程序== | ||
+ | <pre style="color:blue"> | ||
+ | int srfPin = 2; //定義srfPin 發(fā)送引腳為2 | ||
+ | int z; //定義全局變量z | ||
+ | int Distance; //定義距離寄存器存放測試距離數(shù)據(jù) | ||
+ | int duration; //定義脈寬寄存器 | ||
+ | int data; //定義串口接收寄存器 | ||
+ | int ultrasonic(int distance) | ||
+ | { digitalWrite(srfPin, LOW); //確保在發(fā)送脈沖前保持該引腳為低電平 | ||
+ | delayMicroseconds(2); //保持低電平2ms | ||
+ | digitalWrite(srfPin, HIGH); //發(fā)送一個(gè)高脈沖開始測距 | ||
+ | delayMicroseconds(10); //保持10ms | ||
+ | digitalWrite(srfPin, LOW); //在等待脈沖返回來之前發(fā)送低電平 | ||
+ | pinMode(srfPin, INPUT); //調(diào)整超聲波引腳為輸入 | ||
+ | duration = pulseIn(srfPin, HIGH); //從SRF05 回波脈沖在讀取在微秒 | ||
+ | distance = duration/58; //除以58 就是我們要得到的厘米數(shù) | ||
+ | return distance; //返回厘米數(shù) | ||
+ | } | ||
+ | void BACK() //后退 | ||
+ | { | ||
+ | analogWrite(10,120); //輸入模擬值進(jìn)行設(shè)定速度 | ||
+ | analogWrite(5,120); | ||
+ | digitalWrite(7,LOW); //使直流電機(jī)(右)順時(shí)針轉(zhuǎn) | ||
+ | digitalWrite(6,HIGH); | ||
+ | digitalWrite(8,LOW); //使直流電機(jī)(左)逆時(shí)針轉(zhuǎn) | ||
+ | digitalWrite(9,HIGH); | ||
+ | } | ||
+ | void GO() //前進(jìn) | ||
+ | { | ||
+ | analogWrite(10,100); //輸入模擬值進(jìn)行設(shè)定速度 | ||
+ | analogWrite(5,100); | ||
+ | digitalWrite(7,HIGH); //使直流電機(jī)(右)順時(shí)針轉(zhuǎn) | ||
+ | digitalWrite(6,LOW); | ||
+ | digitalWrite(9,LOW); //使直流電機(jī)(左)逆時(shí)針轉(zhuǎn) | ||
+ | digitalWrite(8,HIGH); | ||
+ | } | ||
+ | void QUICKEN() //加速前進(jìn) | ||
+ | { | ||
+ | analogWrite(10,120); //輸入模擬值進(jìn)行設(shè)定速度 | ||
+ | analogWrite(5,120); | ||
+ | digitalWrite(7,HIGH); //使直流電機(jī)(右)順時(shí)針轉(zhuǎn) | ||
+ | digitalWrite(6,LOW); | ||
+ | digitalWrite(9,LOW); //使直流電機(jī)(左)逆時(shí)針轉(zhuǎn) | ||
+ | digitalWrite(8,HIGH); | ||
+ | } | ||
+ | void FULLSPEED() //全速前進(jìn) | ||
+ | { | ||
+ | analogWrite(10,250); //輸入模擬值進(jìn)行設(shè)定速度 | ||
+ | analogWrite(5,250); | ||
+ | digitalWrite(7,HIGH); //使直流電機(jī)(右)順時(shí)針轉(zhuǎn) | ||
+ | digitalWrite(6,LOW); | ||
+ | digitalWrite(9,LOW); //使直流電機(jī)(左)逆時(shí)針轉(zhuǎn) | ||
+ | digitalWrite(8,HIGH); | ||
+ | } | ||
+ | void LEFT() //左轉(zhuǎn) | ||
+ | { | ||
+ | analogWrite(10,170); //輸入模擬值進(jìn)行設(shè)定速度 | ||
+ | analogWrite(5,170); | ||
+ | digitalWrite(7,HIGH); //使直流電機(jī)(右)順時(shí)針轉(zhuǎn) | ||
+ | digitalWrite(6,LOW); | ||
+ | digitalWrite(8,LOW); //使直流電機(jī)(左)逆時(shí)針轉(zhuǎn) | ||
+ | digitalWrite(9,HIGH); | ||
+ | } | ||
+ | void RIGHT() //右轉(zhuǎn) | ||
+ | { | ||
+ | analogWrite(10,170); //輸入模擬值進(jìn)行設(shè)定速度 | ||
+ | analogWrite(5,170); | ||
+ | digitalWrite(7,LOW); //使直流電機(jī)(右)順時(shí)針轉(zhuǎn) | ||
+ | digitalWrite(6,HIGH); | ||
+ | digitalWrite(8,HIGH); //使直流電機(jī)(左)逆時(shí)針轉(zhuǎn) | ||
+ | digitalWrite(9,LOW); | ||
+ | } | ||
+ | void STOP() //停止 | ||
+ | { | ||
+ | analogWrite(10,0); //輸入模擬值進(jìn)行設(shè)定速度 | ||
+ | analogWrite(5,0); | ||
+ | digitalWrite(7,LOW); //使直流電機(jī)(右)順時(shí)針轉(zhuǎn) | ||
+ | digitalWrite(6,HIGH); | ||
+ | digitalWrite(8,HIGH); //使直流電機(jī)(左)逆時(shí)針轉(zhuǎn) | ||
+ | digitalWrite(9,LOW); | ||
+ | } | ||
+ | void PLAYDISTANCE() //發(fā)送超聲波數(shù)據(jù) | ||
+ | { | ||
+ | Distance = ultrasonic(z); | ||
+ | if(Distance > 0 && Distance <= 10){ //判斷測試距離為1 至10CM | ||
+ | Serial.print('a');} | ||
+ | else if(Distance > 10 && Distance <= 15){ //判斷測試距離為11 至15CM | ||
+ | Serial.print('b');} //發(fā)送字符'b' | ||
+ | else if(Distance > 15 && Distance <= 20){ | ||
+ | Serial.print('c');} | ||
+ | else if(Distance > 20 && Distance <= 25){ | ||
+ | Serial.print('d');} | ||
+ | else if(Distance > 25 && Distance <= 30){ | ||
+ | Serial.print('e');} | ||
+ | else if(Distance > 30 && Distance <= 35){ | ||
+ | Serial.print('f');} | ||
+ | else if(Distance > 35 && Distance <= 40){ | ||
+ | Serial.print('g');} | ||
+ | else if(Distance > 40 && Distance <= 45){ | ||
+ | Serial.print('h');} | ||
+ | else if(Distance > 45 && Distance <= 50){ | ||
+ | Serial.print('i');} | ||
+ | else if(Distance > 50 && Distance <= 55){ | ||
+ | Serial.print('j');} | ||
+ | else if(Distance > 55 && Distance <= 60){ | ||
+ | Serial.print('k');} | ||
+ | else if(Distance > 60 && Distance <= 65){ | ||
+ | Serial.print('l');} | ||
+ | else if(Distance > 65 && Distance <= 70){ | ||
+ | Serial.print('m');} | ||
+ | else if(Distance > 70 && Distance <= 75){ | ||
+ | Serial.print('n');} | ||
+ | else if(Distance > 75 && Distance <= 80){ | ||
+ | Serial.print('o');} | ||
+ | else if(Distance > 80 && Distance <= 85){ | ||
+ | Serial.print('p');} | ||
+ | else if(Distance > 85 && Distance <= 90){ | ||
+ | Serial.print('q');} | ||
+ | else if(Distance > 90 && Distance <= 95){ | ||
+ | Serial.print('r');} | ||
+ | else{ | ||
+ | Serial.print('~');} | ||
+ | } | ||
+ | void setup(){ | ||
+ | Serial.begin(115200); //打開串口并設(shè)置通信波特率為9600 | ||
+ | pinMode(8,OUTPUT); //定義I1 接口 | ||
+ | pinMode(9,OUTPUT); //定義I2 接口 | ||
+ | pinMode(11,OUTPUT); //定義EA(PWM 調(diào)速)接口 | ||
+ | pinMode(5,OUTPUT); //定義EB(PWM 調(diào)速)接口 | ||
+ | pinMode(6,OUTPUT); //定義I4 接口 | ||
+ | pinMode(7,OUTPUT); //定義I3 接口 | ||
+ | } | ||
+ | void loop(){ //主程序開始 | ||
+ | Distance = ultrasonic(z); //讀取超聲波值 | ||
+ | data = Serial.read(); //讀取串口數(shù)據(jù) | ||
+ | switch (data){ | ||
+ | case 'W': //前進(jìn)命令 | ||
+ | GO(); //前進(jìn)函數(shù) | ||
+ | Serial.flush(); //刷新串口緩沖區(qū)數(shù)據(jù) | ||
+ | break; | ||
+ | case 'X': //后退命令 | ||
+ | BACK(); //后退函數(shù) | ||
+ | Serial.flush(); //刷新串口緩沖區(qū)數(shù)據(jù) | ||
+ | break; | ||
+ | case 'A': //左轉(zhuǎn)命令 | ||
+ | LEFT(); //左轉(zhuǎn)函數(shù) | ||
+ | Serial.flush(); //刷新串口緩沖區(qū)數(shù)據(jù) | ||
+ | break; | ||
+ | case 'D': //右轉(zhuǎn)命令 | ||
+ | RIGHT(); //右轉(zhuǎn)函數(shù) | ||
+ | Serial.flush(); //刷新串口緩沖區(qū)數(shù)據(jù) | ||
+ | break; | ||
+ | case 'S': //停止命令 | ||
+ | STOP(); //停止函數(shù) | ||
+ | Serial.flush(); //刷新串口緩沖區(qū)數(shù)據(jù) | ||
+ | break; | ||
+ | case '1': //加速前進(jìn)命令 | ||
+ | QUICKEN(); //加速前進(jìn)函數(shù) | ||
+ | Serial.flush(); //刷新串口緩沖區(qū)數(shù)據(jù) | ||
+ | case '2': //全速前進(jìn)命令 | ||
+ | FULLSPEED(); //全速前進(jìn)函數(shù) | ||
+ | Serial.flush(); //刷新串口緩沖區(qū)數(shù)據(jù) | ||
+ | break; | ||
+ | case '#': //測試當(dāng)前距離命令 | ||
+ | PLAYDISTANCE(); //發(fā)送當(dāng)前距離函數(shù) | ||
+ | Serial.flush(); //刷新串口緩沖區(qū)數(shù)據(jù) | ||
+ | break; | ||
+ | default: | ||
+ | break; | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | ==產(chǎn)品相關(guān)推薦== | ||
+ | [[文件:erweima.png|230px|無框|右]] | ||
+ | ===產(chǎn)品購買地址=== | ||
+ | [http://gharee.com/goods-309.html AS-4WD語音控制移動(dòng)機(jī)器人平臺]<br/> | ||
+ | ===周邊產(chǎn)品推薦=== | ||
+ | [http://gharee.com/goods-407.html Arduino 4WD鋁合金移動(dòng)平臺車燈套件]<br/> | ||
+ | [http://gharee.com/goods-185.html Arduino 光電碼盤 光電測速傳感器]<br/> | ||
+ | ===相關(guān)問題解答=== | ||
+ | [http://www.makerspace.cn/forum.php?mod=viewthread&tid=4875&highlight=4WD AS-4WD 碰撞機(jī)器人如何安裝]<br/> | ||
+ | [http://www.makerspace.cn/forum.php?mod=viewthread&tid=5473&fromuid=10780 4wd 紅外線巡線壁障車調(diào)試助手沒有反應(yīng)]<br/> | ||
+ | ===相關(guān)學(xué)習(xí)資料=== | ||
+ | [http://v.youku.com/v_show/id_XMzQyODA1MzAw.html?from=y1.7-2 視頻: Arduino-4WD移動(dòng)機(jī)器人語音識別操控功能演示] | ||
+ | [http://www.makerspace.cn/forum.php?mod=viewthread&tid=3953&fromuid=10780 視頻:機(jī)器人調(diào)試助手無線操控AS-4WD輪式機(jī)器人]<br/> | ||
+ | [http://v.youku.com/v_show/id_XMjgwMjk0NDE2.html 視頻:Arduino-4WD移動(dòng)機(jī)器人尋線功能演示]<br/> | ||
+ | [http://v.youku.com/v_show/id_XMjgwMjkyNDM2.html 視頻:Arduino-4WD移動(dòng)機(jī)器人碰撞功能演示]<br/> | ||
+ | [http://v.youku.com/v_show/id_XMjgwMjk4MjU2.html 視頻:Arduino-4WD移動(dòng)機(jī)器人追光功能演示]<br/> | ||
+ | [http://v.youku.com/v_show/id_XMjgwNTg5NTI4.html 視頻:Arduino-4WD移動(dòng)機(jī)器人尋線與避障功能演示]<br/> | ||
+ | [http://v.youku.com/v_show/id_XMzQyNzk2MzM2.html 視頻:Arduino-4WD移動(dòng)機(jī)器人偵測避障功能演示]<br/> | ||
+ | [http://www.makerspace.cn/portal.php 奧松機(jī)器人技術(shù)論壇]<br/> |
2015年9月26日 (六) 13:31的版本
目錄 |
產(chǎn)品概述
2014年最新推出的AS-4WD語音識別移動(dòng)機(jī)器人是哈爾濱奧松機(jī)器人科技有限公司汲取國內(nèi)外多款移動(dòng)平臺優(yōu)點(diǎn)于一體,自主研發(fā)的語音識別的機(jī)器人。音識別是一門交叉學(xué)科。近二十年來,語音識別技術(shù)取得顯著進(jìn)步,開始從實(shí)驗(yàn)室走向市場。人們預(yù)計(jì),未來10年內(nèi),語音識別技術(shù)將進(jìn)入工業(yè)、家電、通信、汽車電子、醫(yī)療、家庭服務(wù)、消費(fèi)電子產(chǎn)品等各個(gè)領(lǐng)域。 語音識別聽寫機(jī)在一些領(lǐng)域的應(yīng)用被美國新聞界評為1997年計(jì)算機(jī)發(fā)展十件大事之一。與機(jī)器人進(jìn)行語音交流,讓機(jī)器人明白你說什么,這是人們長期以來夢寐以求的事情。AS-4WD語音識別移動(dòng)機(jī)器人就可以實(shí)現(xiàn)你的夢想,其語音識別器采用凌陽單片機(jī)控制器可以學(xué)習(xí)記錄你的聲音,并且跟你實(shí)現(xiàn)人機(jī)對話,通過識別和理解過程把語音信號轉(zhuǎn)變?yōu)橄鄳?yīng)命令,經(jīng)無線藍(lán)牙模塊傳輸給機(jī)器人,從而可以完成前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、測距播報(bào)等功能。這款平臺非常適合Arduino愛好者、各大中小學(xué)開展機(jī)器人普及教育使用,更適合學(xué)生用其參加全國大學(xué)生電子大賽、智能車競賽、足球機(jī)器人等比賽。讓你輕松感受機(jī)器人DIY無限樂趣。
產(chǎn)品清單
安裝步驟
4WD平臺安裝
步驟1:充電接口撥動(dòng)開關(guān)連接線制作
步驟2:直流電機(jī)安裝
4WD平臺兩側(cè)電機(jī)安裝方法相同,需要注意的是在安裝電機(jī)之前需要將電機(jī)連接線使用電烙鐵焊接好,并使用熱縮過加熱塑封。
步驟3:平臺側(cè)板安裝
步驟4:平臺端板安裝
步驟5:雙H橋驅(qū)動(dòng)板安裝
步驟6:充電接口撥動(dòng)開關(guān)安裝
步驟7;Carduino UNO 控制器安裝
步驟8:RB-421舵機(jī)安裝
步驟9:超聲波傳感器安裝
步驟10:組合體安裝
步驟11:4WD 輪子安裝
步驟12:插入藍(lán)牙模塊
注意:在插入藍(lán)牙模塊之前要將Carduino中下載好程序,插著藍(lán)牙模塊進(jìn)行程序下載會造成程序下載不成功問題。
凌陽61板技術(shù)參數(shù)
- 控制器供電范圍:DC5V 或DC3.3V
- 機(jī)器人供電7.4V 鋰電
- 通信接口:RS232(串口)或TTL 配合無線藍(lán)牙模組
- 波特率:115200b / s
- 擴(kuò)展功能:AD 輸入、舵機(jī)控制等
使用方法
凌陽61控制板供電
整機(jī)供電三粒五號電池或外接5V 電源。
語音訓(xùn)練
按一下KEY3 鍵開始按照語音提示進(jìn)行語音訓(xùn)練。
訓(xùn)練采用應(yīng)答形式,每條指令訓(xùn)練兩次,每條命令的訓(xùn)練方法是相同的,以第一條命令“前進(jìn)”為例說明:
第一步:控制器提示“前進(jìn)”
第二部:我們對著話筒說“前進(jìn)”
第三部:語音控制器提示“再說一遍”
第四部:我們再次對著話筒說“前進(jìn)”
到此第一條命令訓(xùn)練完畢。如果訓(xùn)練成功控制器會自動(dòng)進(jìn)入嚇一跳命令的訓(xùn)練,如果環(huán)境很吵或前后你說的話偏差太大,控制器會提示“沒有聲音”或者“沒有聽清”這樣這條命令就會從新訓(xùn)練。當(dāng)所有的命令訓(xùn)練完畢,控制器會提示“準(zhǔn)備好了”。此時(shí)命令已經(jīng)存儲完畢,斷電后開啟不用從新訓(xùn)練,如果在訓(xùn)練過程中斷電,則再次上電時(shí)會從新從第一條訓(xùn)練。
按鍵說明
KEY1:按下KEY1 鍵播放控制器內(nèi)所有語音(控制器自檢功能)
KEY2:緊急停止命令等同語音“停止”命令
KEY3:從新進(jìn)行語音訓(xùn)練(當(dāng)識別靈敏度降低或更換法令人時(shí)使用)
凌陽61 接線說明
控制器————無線藍(lán)牙模塊
IOB7(RXD) ——PIN5(TXD)
IOB10(TXD)——PIN4(RXD)
IOB+(5V) ———PIN1(5V)
IOB-(GND)———PIN2(GND)
4WD 平臺部分接線
超聲波傳感器接線
超聲波模塊引腳 | Carduino UNO控制器 |
5V | 數(shù)字2腳VCC端 |
GND | 數(shù)字2腳GND端 |
OUTPUT | 空 |
INPUT | 數(shù)字2腳S端 |
雙H橋驅(qū)動(dòng)板接線
雙H橋驅(qū)動(dòng)板 | Carduino UNO控制器 |
EA | 數(shù)字腳10信號S |
EB | 數(shù)字腳5信號S |
I1 | 數(shù)字腳8信號S |
I2 | 數(shù)字腳9信號S |
I3 | 數(shù)字腳7信號S |
I4 | 數(shù)字腳6信號S |
語音控制4WD平臺
基本語音控制
第一步:打開控制器電源及4WD 機(jī)器人電源。
第二步:等待藍(lán)牙配對。主從藍(lán)牙模塊黃燈都亮起表示配對成功(十秒左右)。
第三步:發(fā)號施令,在說出命令后4WD 開始運(yùn)動(dòng),控制器回應(yīng)相同的命令。如說“前進(jìn)”4WD 機(jī)器人向前走,控制器回應(yīng)“前進(jìn)”。
復(fù)合語音控制
第一次說“前進(jìn)”4WD 慢速前進(jìn)(一檔),控制器應(yīng)答“前進(jìn)”再說一次“前進(jìn)”,4WD 快速前進(jìn)(二檔)控制器應(yīng)答“加速前進(jìn)”再次說“前進(jìn)”4WD 更快速前進(jìn)(三檔)控制器應(yīng)答“全速前進(jìn)”。在“前進(jìn)”命令中執(zhí)行其他命令后4WD 從慢速前進(jìn)(一檔)開始。
第一次說“停止”4WD 停止所有動(dòng)作,控制器應(yīng)答“停止”再次說“停止”4WD 機(jī)器人測試前面障礙物與超聲波探頭距離,測試完成后數(shù)據(jù)回傳給控制器進(jìn)行播報(bào)“當(dāng)前距離XX 厘米?!?br />
例子程序
int srfPin = 2; //定義srfPin 發(fā)送引腳為2 int z; //定義全局變量z int Distance; //定義距離寄存器存放測試距離數(shù)據(jù) int duration; //定義脈寬寄存器 int data; //定義串口接收寄存器 int ultrasonic(int distance) { digitalWrite(srfPin, LOW); //確保在發(fā)送脈沖前保持該引腳為低電平 delayMicroseconds(2); //保持低電平2ms digitalWrite(srfPin, HIGH); //發(fā)送一個(gè)高脈沖開始測距 delayMicroseconds(10); //保持10ms digitalWrite(srfPin, LOW); //在等待脈沖返回來之前發(fā)送低電平 pinMode(srfPin, INPUT); //調(diào)整超聲波引腳為輸入 duration = pulseIn(srfPin, HIGH); //從SRF05 回波脈沖在讀取在微秒 distance = duration/58; //除以58 就是我們要得到的厘米數(shù) return distance; //返回厘米數(shù) } void BACK() //后退 { analogWrite(10,120); //輸入模擬值進(jìn)行設(shè)定速度 analogWrite(5,120); digitalWrite(7,LOW); //使直流電機(jī)(右)順時(shí)針轉(zhuǎn) digitalWrite(6,HIGH); digitalWrite(8,LOW); //使直流電機(jī)(左)逆時(shí)針轉(zhuǎn) digitalWrite(9,HIGH); } void GO() //前進(jìn) { analogWrite(10,100); //輸入模擬值進(jìn)行設(shè)定速度 analogWrite(5,100); digitalWrite(7,HIGH); //使直流電機(jī)(右)順時(shí)針轉(zhuǎn) digitalWrite(6,LOW); digitalWrite(9,LOW); //使直流電機(jī)(左)逆時(shí)針轉(zhuǎn) digitalWrite(8,HIGH); } void QUICKEN() //加速前進(jìn) { analogWrite(10,120); //輸入模擬值進(jìn)行設(shè)定速度 analogWrite(5,120); digitalWrite(7,HIGH); //使直流電機(jī)(右)順時(shí)針轉(zhuǎn) digitalWrite(6,LOW); digitalWrite(9,LOW); //使直流電機(jī)(左)逆時(shí)針轉(zhuǎn) digitalWrite(8,HIGH); } void FULLSPEED() //全速前進(jìn) { analogWrite(10,250); //輸入模擬值進(jìn)行設(shè)定速度 analogWrite(5,250); digitalWrite(7,HIGH); //使直流電機(jī)(右)順時(shí)針轉(zhuǎn) digitalWrite(6,LOW); digitalWrite(9,LOW); //使直流電機(jī)(左)逆時(shí)針轉(zhuǎn) digitalWrite(8,HIGH); } void LEFT() //左轉(zhuǎn) { analogWrite(10,170); //輸入模擬值進(jìn)行設(shè)定速度 analogWrite(5,170); digitalWrite(7,HIGH); //使直流電機(jī)(右)順時(shí)針轉(zhuǎn) digitalWrite(6,LOW); digitalWrite(8,LOW); //使直流電機(jī)(左)逆時(shí)針轉(zhuǎn) digitalWrite(9,HIGH); } void RIGHT() //右轉(zhuǎn) { analogWrite(10,170); //輸入模擬值進(jìn)行設(shè)定速度 analogWrite(5,170); digitalWrite(7,LOW); //使直流電機(jī)(右)順時(shí)針轉(zhuǎn) digitalWrite(6,HIGH); digitalWrite(8,HIGH); //使直流電機(jī)(左)逆時(shí)針轉(zhuǎn) digitalWrite(9,LOW); } void STOP() //停止 { analogWrite(10,0); //輸入模擬值進(jìn)行設(shè)定速度 analogWrite(5,0); digitalWrite(7,LOW); //使直流電機(jī)(右)順時(shí)針轉(zhuǎn) digitalWrite(6,HIGH); digitalWrite(8,HIGH); //使直流電機(jī)(左)逆時(shí)針轉(zhuǎn) digitalWrite(9,LOW); } void PLAYDISTANCE() //發(fā)送超聲波數(shù)據(jù) { Distance = ultrasonic(z); if(Distance > 0 && Distance <= 10){ //判斷測試距離為1 至10CM Serial.print('a');} else if(Distance > 10 && Distance <= 15){ //判斷測試距離為11 至15CM Serial.print('b');} //發(fā)送字符'b' else if(Distance > 15 && Distance <= 20){ Serial.print('c');} else if(Distance > 20 && Distance <= 25){ Serial.print('d');} else if(Distance > 25 && Distance <= 30){ Serial.print('e');} else if(Distance > 30 && Distance <= 35){ Serial.print('f');} else if(Distance > 35 && Distance <= 40){ Serial.print('g');} else if(Distance > 40 && Distance <= 45){ Serial.print('h');} else if(Distance > 45 && Distance <= 50){ Serial.print('i');} else if(Distance > 50 && Distance <= 55){ Serial.print('j');} else if(Distance > 55 && Distance <= 60){ Serial.print('k');} else if(Distance > 60 && Distance <= 65){ Serial.print('l');} else if(Distance > 65 && Distance <= 70){ Serial.print('m');} else if(Distance > 70 && Distance <= 75){ Serial.print('n');} else if(Distance > 75 && Distance <= 80){ Serial.print('o');} else if(Distance > 80 && Distance <= 85){ Serial.print('p');} else if(Distance > 85 && Distance <= 90){ Serial.print('q');} else if(Distance > 90 && Distance <= 95){ Serial.print('r');} else{ Serial.print('~');} } void setup(){ Serial.begin(115200); //打開串口并設(shè)置通信波特率為9600 pinMode(8,OUTPUT); //定義I1 接口 pinMode(9,OUTPUT); //定義I2 接口 pinMode(11,OUTPUT); //定義EA(PWM 調(diào)速)接口 pinMode(5,OUTPUT); //定義EB(PWM 調(diào)速)接口 pinMode(6,OUTPUT); //定義I4 接口 pinMode(7,OUTPUT); //定義I3 接口 } void loop(){ //主程序開始 Distance = ultrasonic(z); //讀取超聲波值 data = Serial.read(); //讀取串口數(shù)據(jù) switch (data){ case 'W': //前進(jìn)命令 GO(); //前進(jìn)函數(shù) Serial.flush(); //刷新串口緩沖區(qū)數(shù)據(jù) break; case 'X': //后退命令 BACK(); //后退函數(shù) Serial.flush(); //刷新串口緩沖區(qū)數(shù)據(jù) break; case 'A': //左轉(zhuǎn)命令 LEFT(); //左轉(zhuǎn)函數(shù) Serial.flush(); //刷新串口緩沖區(qū)數(shù)據(jù) break; case 'D': //右轉(zhuǎn)命令 RIGHT(); //右轉(zhuǎn)函數(shù) Serial.flush(); //刷新串口緩沖區(qū)數(shù)據(jù) break; case 'S': //停止命令 STOP(); //停止函數(shù) Serial.flush(); //刷新串口緩沖區(qū)數(shù)據(jù) break; case '1': //加速前進(jìn)命令 QUICKEN(); //加速前進(jìn)函數(shù) Serial.flush(); //刷新串口緩沖區(qū)數(shù)據(jù) case '2': //全速前進(jìn)命令 FULLSPEED(); //全速前進(jìn)函數(shù) Serial.flush(); //刷新串口緩沖區(qū)數(shù)據(jù) break; case '#': //測試當(dāng)前距離命令 PLAYDISTANCE(); //發(fā)送當(dāng)前距離函數(shù) Serial.flush(); //刷新串口緩沖區(qū)數(shù)據(jù) break; default: break; } }
產(chǎn)品相關(guān)推薦
產(chǎn)品購買地址
周邊產(chǎn)品推薦
Arduino 4WD鋁合金移動(dòng)平臺車燈套件
Arduino 光電碼盤 光電測速傳感器
相關(guān)問題解答
AS-4WD 碰撞機(jī)器人如何安裝
4wd 紅外線巡線壁障車調(diào)試助手沒有反應(yīng)
相關(guān)學(xué)習(xí)資料
視頻: Arduino-4WD移動(dòng)機(jī)器人語音識別操控功能演示
視頻:機(jī)器人調(diào)試助手無線操控AS-4WD輪式機(jī)器人
視頻:Arduino-4WD移動(dòng)機(jī)器人尋線功能演示
視頻:Arduino-4WD移動(dòng)機(jī)器人碰撞功能演示
視頻:Arduino-4WD移動(dòng)機(jī)器人追光功能演示
視頻:Arduino-4WD移動(dòng)機(jī)器人尋線與避障功能演示
視頻:Arduino-4WD移動(dòng)機(jī)器人偵測避障功能演示
奧松機(jī)器人技術(shù)論壇