void loop(){ if (BTSerial.available()>0){ pp=BTSerial.read(); Serial.println(pp); switch(pp){ case 'f': //Forward Up(); break; case 'x': //Back Down(); break; case 'a': //Turn Left Left(); break; case 'd': //Turn Right Right(); break; case 's': //Stop stop(); break; case 65: //Return distance value for(i=5;i>0;i--){ dis[i] = t%10; t/=10; } //Pack value for(i=0;i<=5;i++) BTSerial.write(dis[i]); //Return value break; default: break; } } } int Up(){ servoRight.writeMicroseconds(1300); servoLeft.writeMicroseconds(1700); //delay(1000); } int Down(){ servoRight.writeMicroseconds(1700); servoLeft.writeMicroseconds(1300); //delay(1000); //視情況調整 } int Right(){ servoRight.writeMicroseconds(1700); servoLeft.writeMicroseconds(1700); } int Left(){ servoRight.writeMicroseconds(1300); servoLeft.writeMicroseconds(1300); } int stop(){ servoRight.writeMicroseconds(1500); servoLeft.writeMicroseconds(1500); }
為了回饋各位朋友,也一併附上 motoduino 的版本。
Arduino 藍牙遙控機器人 - 直流馬達版(Motoduino)
const int Motor_E2 = 5; // digital pin 5 of Arduino (PWM) const int Motor_E1 = 6; // digital pin 6 of Arduino (PWM) const int Motor_M1 = 7; // digital pin 7 of Arduino const int Motor_M2 = 8; // digital pin 8 of Arduino char val; // variable to receive data from the serial port(bluetooth)
void setup() { // Start serial communication at 9600 Serial.begin(9600); pinMode(Motor_M1, OUTPUT); pinMode(Motor_M2, OUTPUT); }
void loop() { if(Serial.available()>0) { val = Serial.read(); switch(val) { case 'f': // car forward forward(0, 255); break; case 'd': // car backward backward(0, 255); break; case 'l': // car turn left left(0, 255); break; case 'r': // car turn right right(0, 255); break; case 's': // car stop motorstop(0, 0); break; } } }
App Inventor上前進是傳輸”f”
但Arduino上接收是”w”
兩方不一致
已修正, 謝謝您~
在使用Motoduino的情況下 如果要加入改變馬達轉速的程式 在App Inventor及Motoduino的程式需要加入哪些?
我的想法是在App Inventor中加入Slide來改變數值 然後將數值經由藍芽傳送到Motoduino
Motoduino的motorspeed再經由接收到數值來改變馬達速度
但因為剛接觸 不太知道這方面的程式該怎麼去寫 不知道能否得到提點
您好, 您的思路是正確的. 首先您必須要把 slider的 thumbposition 透過 bluetoothclient 元件發送出去. 但這時您的藍牙會有兩筆資料: 1. 控制字元 2. 馬達轉速. 我建議可以組合成同一筆資料之之後到 Arduino 端再拆開. 例如送出 “f180” 就是以 180 的速度(最大255) 來前進.
不好意思 我跟朋友全部弄好之後
藍牙配對成功 Arduino版的程式碼也沒有錯誤
可是開啟app要操控車子的時候
輪胎沒有反應 然後手機app出現 unable to write broken pipe
您好,解除配對之後再試一次看看? 您可以在程式中透過 Serial.print() 來顯示一些訊息,再從 Serial monitor 看看程式到底是卡在哪邊
抱歉 我是初學者 請問 如上例的伺服馬達程式 如果我自己組的是一般的直流馬達 我需要在哪裡做修改呢??謝謝
您好, 請參考這份投影片就可以囉. 您可以購買直流馬達控制晶片或是馬達擴充板, 後者比較貴但比較省事
請問前輩 我使用的如果是 HC-06 藍芽控制模組 請問APP 要在哪裡做修改呢??
您好, 應該不用修改喔
不好意思,請問課程中所使用伺服馬達的型號是?
您好, 只要是連續型的伺服馬達都可以用喔. 參數可能略有不同但原理都一樣.
你好 我參考了這幾篇文章 自己做了一個直流馬達的藍芽遙控車
可是卻不能動 可以幫我看看程式嗎 不知道是哪裡有錯
好的,請把您的程式碼寄到 nissin@cavedu.com 好嗎?
請問arduino due 的程式碼可以和Arduino mega 2560 共用嗎?
您好,我沒有用過 due(不好買), 但除了少數函式庫以外應該是差不多的,例如 leonardo 與 uno 就有點不一樣。您可以直接燒錄看看?
我已經成功將藍牙控制LED on/off 軟體程式在Arduino UNO板上執行,同時也另外由Arduino UNO驅動2相4線的步進馬達. 可是在合併兩個程式後,執行compiling 時,會發生未定義的問題,請問您是否有用藍牙控制2相4線步進馬達的Arduino程式碼可提供參考,謝謝!
您好,這兩個應該不相衝才對,可否把程式碼與編譯錯誤畫面寄給我看看呢 nissin@cavedu.com 3Q
老師你好
我想用語音辨識控制藍芽開關並且可以循環使用但我怎麼試還是卡住.可以指點我一下嗎??
您好,請問怎麼個卡住法,可以參考這一篇(http://pansci.asia/archives/49652),作法就是去判斷語音辨識的結果等於某個結果的話就送出’a’,因此機器人端的程式可以不用改,只要改手機端的觸發條件即可。這樣概念上與按鈕控制並無不同
不好意思我是超級新手 請問為什麼我在arduino程式碼那邊複製你上面伺服馬達的程式碼,他卻一直告訴我#include <Servo.h> 有錯誤
hello, 已於上篇回覆喔
請問老師 你的伺服馬達的程式碼好像怪怪的我怎麼用就是無法寫入我的arduino
您好, Servo.h 是 Arduino 內建的函式庫, 可以直接編譯成功才對. 請用 File / Exmaples / Servo / Sweep 這個範例來測試您的 servo 與接線是否正常好嗎?
老師你好 我是超級新手 請問一下 我是使用arduino uno r3+l298n +DC馬達 事要使用哪一種的程式碼呢? 還有l298n的接法該如何呢 他除了接在PWM角上還有除了IN1 2 3 4 還有ENA換EMB 查了一下那是帶動第一跟第二個馬達的 這樣使用有需要修改程式碼嗎?
請參考 Cooper Maa 的教學 L298N這樣的H橋晶片可以控制兩顆支流馬達,分別要用到三隻腳:Output1, Output2 與 En1. 請
我這投影片使用 L293D晶片, 您可以從中理解晶片各腳位的功能的http://www.slideshare.net/NissinAllelujahnissin/2-45102567
怕麻煩的話可以用
不好意思想自在請問一下 我看了一下 藍牙收發接收器(本系列使用JY-MCU04 或 JY-MCU05) 那使用http://goods.ruten.com.tw/item/show?21312195985411這種的藍芽能嗎?
您好, 當然可以. 請參考我們的線上教學投影片 http://www.slideshare.net/NissinAllelujahnissin/4-44394140
你好請問使用arduino uno可以嗎 都接好後 程式碼弄好 範例程式App Inventor 2 打開BTRobot.aia使用模擬器就可以了嗎 ?
您好,Arduino UNO 當然可以。
您需要讓手機先與藍芽模組配對。另外模擬器無法使用藍牙功能,所以一定要安裝到實體Android手機才行
你好伺服馬達要使用這兩種的哪一種呢 http://goods.ruten.com.tw/item/qa?21402224964231#qna
http://goods.ruten.com.tw/item/show?21437169149625
有需要修改程式嗎? 學校專題快結案了之前在湊東西有點趕想直接用伺服馬達版的 不好意思問題有點多
現在藍芽是有連到 可是伺服馬達一直不動
您好, 購買 motoduino + 兩個直流馬達就可以了. 這樣更方便, 頁面中也有 motoduino 的程式碼可以直接用
範例程式請點我下載(App Inventor中文學習網檔案庫) 我點了知她說沒有找到此網頁 請問是有搬遷到其他網站嗎?
您好,剛剛檢查了一下可以下載囉
請問檔案庫 App Inventor 2檔名:BTRobot.aia找不到頁面是發生什麼問題呢?
網址:https://sites.google.com/a/appinventor.tw/appinvetor/filepool/AI2_Arduino.zip?attredirects=0&d=1
您好,剛剛檢查了,可以下載囉
如果我是直流馬達的 但是是4顆 程式該如何改寫?
首先,請告訴我您選用哪一種直流馬達控制板或是您的電路怎麼接。從手機傳訊號給Arduino都是一樣的,差別只在於Arduino接到訊號之後要幹嘛,這個幹嘛就會根據您實體的線路而定
你好~
你們的文章寫得好詳細,很棒!
但我有一點問題想請問一下
我使用 Arduino uno版 + HC06 + SG90 servo
但在我連上後,讓馬達轉動幾下
卻突然沒有反應了
這個問題會是什麼呢?
非常的困擾QQ
另外請問一下如果接5個馬達
在電源上有什麼建議嗎?
突然沒反應… 我覺得是電力不足的可能性很高。單顆sg90的耗電量不高,所以用 USB 供電還過得去。如果您要一次用到五顆的話,就要用電池盒獨立對馬達供電啦
這類型的電池盒在光華商場很好買:http://www.educlub.com.tw/itemphoto/MV-PT-BH341_1.gif 把紅黑線拉到麵包板上的 V / GND軌,再讓馬達的電拉到同一軌上就好
你好,我參考這幾篇文章,在app寫好arduino自走車的開跟關,我已經用swtich判斷使車子自走,請問要如何使用藍芽來啟動自走車跟停止。我有使用過while來寫,是可以用app來使車子啟動,不過我無法使他跳出迴圈,不知道哪裡出問題,請問能幫我看看程式嗎?
可以的,請寄到nissin@cavedu.com
想問Arduino 藍牙遙控機器人 – 直流馬達版那個程式碼是已經有加藍芽驅動了嗎?
我是用HC-05的藍芽接收器和Arduino Mega2560+L289N馬達模組
已用 Facebook回復您喔
請問 直流馬達那邊的程式碼適用在mbot嗎?
您好, 您的 mbot 是用 scratch? 如果是 Scratch, 對程式中的腳位指定高/低電位就可以了
使用L293D的IC該如何改程式?
很簡單啊,你先把Arduino端的程式寫好,例如機器人前進的指令包成一個副程式(EX: forward(), back()… ) ,Arduino接收到App Inventor傳來的訊號再決定要執行哪個副程式就好了,架構都一樣。請參考我們的教學 https://www.slideshare.net/NissinAllelujahnissin/2-45102567
我只用1個馬達,用ARDUINO的監控式窗能控制,但弄成APP的話沒辦法控制到
那就代表 app 丟過來的值解讀不正確囉
char val,這裡有點看不懂,是要給個值嗎
val 的資料型態是字元(char),因為app 每次都是送一個字元過來
請問JY-MCU04/05跟hc-06是一樣的嗎?
網路JY-MCU04/05的資訊好少
您好,可以用 HC06執行沒問題
我看您的影片,似乎是同時按下同時發送字元給arduino,所以我想請問您,如果要同時按app的按鈕,程式改如何撰寫?arduino的部分也該如何改良。
不太懂您的意思,你手機端要改成怎樣的觸發條件?Arduino 端應該不用改喔
請問有完整的App Inventor的程式部分可提供嗎?
有啊,文章中有放檔案下載連結
請問藍芽HM-10能用嗎?
我用你的程式碼跟APP 但是不能控制車子 是什麼關係呢?
HM10 是 BLE模組,雙A計畫是用傳統藍牙。BLE系列文章我們都是用Arduino 101來呈現,請參考 http://blog.cavedu.com/?s=101
請問你們這篇文章中,Arduino 藍牙遙控機器人 – 直流馬達版的程式碼是已經有加藍芽驅動了嗎?
我是用HC-06藍芽接收器和Arduino UNO R3+L293D馬達模組,程式碼需要如何做修改呢,方便的話,麻煩提供修改的建議,謝謝
您好,請先確定您可用L293模組正確控制直流馬達,只要把接收到某個控制字元後的那個 case 的內容改為控制馬達的程式就好
請問
我複製跟教學一樣的程式,但是靜止狀態時左右輪都會小幅度的轉動…
求解
是抖動?您是用直流馬達還是如本文章的連續型伺服機?可以先試試看直接控制馬達會不會有這種情形
剛剛那個問題解決了.. 想問一點題外話
我目前uno有接溫濕度感測器,appinventor已經可以接收溫度溼度這種數字的字元。
請問appinventor的藍芽有辦法接收影像嗎?如果uno有接攝影鏡頭的話
想完成類似探勘車那樣子
藍牙要傳影像… 不太可能吧. 請改用LinkIt 7688 是最簡單的方法,在本站搜尋7688就可找到很多教學囉
請問appinventor的內建元件有可以接受影像的嗎
滿懷疑appinventor有沒有接收影像的功能..
請問這段的意思是?
case 65: //Return distance value
for(i=5;i>0;i–){
dis[i] = t%10;
t/=10;
}
//Pack value
for(i=0;i<=5;i++)
BTSerial.write(dis[i]);
//Return value
break;
default:
break;
我無法開啟App Inventor程式 可以在給個網址連結嗎?
請問您是說原始檔無法下載還是?原始檔連結測試是可以下載的。ai2.appinventor.mit.edu 開發網站由此登入喔
您好,若是想要在此車加上機械手臂做成怪手,想請問有類似的程式碼可以參考嗎
Kaguy你好:
請參閱 [雙A計劃] Part9:藍牙遙控機器手臂車
請問一下我在做藍芽自走車時遇到需要重複判斷switch有無觸發可是不知道該如何寫。
你好,圓仔:
要判斷switch有無觸發的簡易方法,就是在判別式中加上Serial.println(),然後以序列埠監控視窗來看狀態,
例如:
switch(pp){
case ‘f’: //Forward
Up();
Serial.println(f);
break;
表示如果arduino 接收到’f’字元,序列埠監控視窗就會顯示f;如果沒有,就代表沒有跑進判別式裡。
你好 請問我將程式傳進板子內後,藍芽沒連上馬達就自己跑了,請問是什麼問題
你好,yun:
文章使用的是Parallax 連續旋轉伺服機,配合BB CAR使用,是需要通電時以一字起子微調可變電阻校正的(校正至馬達停止轉動為止),如果你使用的馬達跟文章中馬達使用的是一致的話,有可能你沒有先校正馬達
你好,感謝你們的技術分享!!
我想請問一下我連接藍芽也正常,車子也有正常行走,但我輸入一個值傳送到arduino後,車子有讀取到也正常行走,但HC-06藍芽就會斷開,要在重新接上藍芽才可輸入第二個動作,有時也會斷斷續續的,請問這有可能是什麼問題?
我用的是HC-06藍芽接收器、板子是Arduino mega2560、L298P馬達模組 謝謝
這樣聽起來,有可能是供電的問題?請問L298P有獨立給電源嗎?
您好,我程式和手機app都是用一樣的,馬達也校正到不會一直自動旋轉後,手機怎麼按按鈕都無法讓馬達有反應,藍芽也可以確實連接手機,電池是用五個3號電池,怕是不是供電不夠
您好,這樣看起來供電沒問題。請先用本範例的第一個範例”控制LED”來測試,因為按鈕控制機器人基本上就是該範例的延伸(多個按鈕發送不同的訊號)