還記得過年前在中正清江中心NXT樂高機器人成人研習班上課,
教導大家如何使用藍牙通訊,其中藍牙遙控車的程式『突然』無效,
還好幾位學員一起解決問題,才不致使課程開天窗,真是謝謝各位老師學員的包容。
探奇當然要追根究底,看看到底為什麼這個古老的程式會出問題。
曾經懷疑是NXT-G版本不同,也懷疑是不是NXT-G用藍牙傳輸文字時的臭蟲,
結果是打字的問題.......
在這裡提醒大家,如果使用NXT-G命令方塊時,只要是選擇『Text』,就要特別小心輸入的文字內容。
別忘了文字包含Enter字元喔!所以當探奇在上課前一天檢查程式時,不小心按了Enter,又再輸入A,於是文字內容變成『A A』(兩個A中間是Enter字元),這樣的結果就造成NXT從機永遠收到錯誤的文字,於是判斷錯誤,遙控車就亂跑。
解決方式就是不要按到Enter鍵,將輸入游標移到A的後面,多按幾次Del,確保A後面沒有其他字元符號。
在這裡也同時介紹藍牙接收程式Slave的寫法,利用Display Block將接收到的藍牙訊息顯現在NXT的螢幕上,可以幫助我們除錯。
這個藍牙遙控車程式已經上傳到Google Docs,歡迎下載測試。下載連結。
操作方式很簡單,先將兩台NXT主機的藍牙配對連線,壓按Master主機的橘色按鈕、向左鍵及向右鍵,就可以遙控NXT從機前進,左轉及右轉。
你也可以擴充其他功能,例如增加主機的感應器,讓從機的NXT車停止,後退等。
歡迎大家一起討論相關問題。
請問一下,
回覆刪除現在電腦已經和NXT做好連線,
電腦也可以透過藍芽下載NXT-G程式到NXT,
但我想用電腦透過藍芽傳送字串或指令給NXT,
不知道NXT-G要從哪寫起?
[版主回覆02/03/2012 21:28:40]你好:
用電腦透過藍牙傳送字串或指令,
你需要寫兩種程式,一個是電腦端的程式,一個是NXT主機端的程式。
根據NXT藍牙的傳送協定,你可以利用mailbox來傳送接收字串,
所以NXT主機的NXT-G程式就是等待接收從電腦發出的藍牙訊號,寫法跟這篇文章敘述的一樣。
您好 請問一下 接收端的那個藍芽方塊 是怎麼做的??
回覆刪除因為我不會做那個方塊 用自己的方式去連接藍芽
導致接收訊號過慢 執行動作要很久!!
請問可以教我嗎? 可以給聯絡方式嗎?
我想問一些提高藍芽連接速度的方式!
[版主回覆06/07/2012 22:46:43]你好:
藍牙方塊是指loop裡面的Receive message嗎?
你可以直接下載程式參考。
藍牙本來反應就比較慢,還要看看你如何寫程式,
建議你可以將你的程式寄給我。順便說明『提高藍牙連接速度』的意思。
聯絡方式,我們現在不就是在聯絡嗎?
歡迎直接留言,或是email聯絡。
touch_classroom@yahoo.com.tw
其實我有下載過您的程式了 但在放進主機時發生了問題
回覆刪除好像是某物件不見了 而那個物件就是我所說的方塊
您的程式跟目前放在這裡的圖片 差別在 藍芽的圖案
程式部分把藍芽取代成方塊了!!
[版主回覆06/09/2012 20:41:51]你好:
我想你用的應該是NXT-G 1.1版,
所以藍牙命令方塊不同,
我的程式是2.0版寫的,使用的是浮點數的藍牙命令方塊,只要改成你的整數藍牙命令方塊即可。
後來我也有想過 把那個方塊拿掉
回覆刪除然後改用像圖片一樣的藍芽連接
但接線的地方 總會變成 虛線
請問需要做什麼處理嗎?
程式和提升速度問題 我待會用寄信的給您
[版主回覆06/09/2012 20:43:32]你好:
接線需要連到正確的地方,否則當然變成虛線。
謝謝 看來是我誤會您的程式了!!
回覆刪除我已經成功接起來了
[版主回覆06/10/2012 11:05:36]你好:
我想是我的圖片讓你會錯意了,紅色線是TEXT,連接到Variable;綠色線是LOGIC,連接到Loop的接頭。
如果連接正確,就不會有虛線。
恭喜你連接成功!
您好 請問原地左右轉的話要如何設定才會順暢??
回覆刪除我的藍芽訊號是 G=前進 S=停子 L=左轉 R=右轉
按下橘色按鈕=G 什麼都不按=S 左鍵=L 右鍵=R
這樣設定下 前進相當正常 但在旋轉時 就是會卡卡的
請問要如何解決??
[版主回覆03/02/2013 22:46:52]
你好:
卡卡的意思是遙控動作反應不良,還是轉彎動作不順?
在文章的附圖中,以Switch Block判斷按鍵,可以將Pressed改為Bumped,或是在發送端加上延遲時間的命令方塊,避免一次送出太多藍牙訊息,造成藍牙塞車或誤判。
最好還是提供你的程式及操作狀況的影片,比較容易推論問題的所在。
祝你成功,歡迎討論!
您好 我有寄程式過去了 麻煩幫我看一下哪裡有問題
回覆刪除[版主回覆03/07/2013 13:45:51]
你好:
已經收到程式。
忘記說了 按下轉彎的時候 會轉 但動作卡卡的
回覆刪除[版主回覆03/07/2013 13:51:35]
動作卡卡是指反應不順的問題嗎?
我已經看過你的程式,接收端大致OK,
至於發送端,或許是因為你的Switch Block設定為"Pressed",
所以當按下按鍵時,藍牙會送出太多個訊號,反倒造成藍牙塞車。
建議可以將"Pressed"改為"Bumped",確保每次按下按鍵時,需要等到放開按鍵,才會送出藍牙訊號。
請你再試試看,祝你成功!