2011-03-13

NXT藍牙遙控車程式

還記得過年前在中正清江中心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車停止,後退等。

歡迎大家一起討論相關問題。



8 則留言:

  1. 邪惡兔子天才將3:13 下午

    請問一下,
    現在電腦已經和NXT做好連線,
    電腦也可以透過藍芽下載NXT-G程式到NXT,
    但我想用電腦透過藍芽傳送字串或指令給NXT,
    不知道NXT-G要從哪寫起?
    [版主回覆02/03/2012 21:28:40]你好:

    用電腦透過藍牙傳送字串或指令,

    你需要寫兩種程式,一個是電腦端的程式,一個是NXT主機端的程式。

    根據NXT藍牙的傳送協定,你可以利用mailbox來傳送接收字串,

    所以NXT主機的NXT-G程式就是等待接收從電腦發出的藍牙訊號,寫法跟這篇文章敘述的一樣。

    回覆刪除
  2. 小笨原11:41 上午

    您好 請問一下 接收端的那個藍芽方塊 是怎麼做的??
    因為我不會做那個方塊 用自己的方式去連接藍芽
    導致接收訊號過慢 執行動作要很久!!
    請問可以教我嗎? 可以給聯絡方式嗎?
    我想問一些提高藍芽連接速度的方式!
    [版主回覆06/07/2012 22:46:43]你好:

    藍牙方塊是指loop裡面的Receive message嗎?

    你可以直接下載程式參考。

    藍牙本來反應就比較慢,還要看看你如何寫程式,

    建議你可以將你的程式寄給我。順便說明『提高藍牙連接速度』的意思。

    聯絡方式,我們現在不就是在聯絡嗎?

    歡迎直接留言,或是email聯絡。

    touch_classroom@yahoo.com.tw

    回覆刪除
  3. 小笨原11:14 上午

    其實我有下載過您的程式了 但在放進主機時發生了問題

    好像是某物件不見了 而那個物件就是我所說的方塊

    您的程式跟目前放在這裡的圖片 差別在 藍芽的圖案

    程式部分把藍芽取代成方塊了!!
    [版主回覆06/09/2012 20:41:51]你好:

    我想你用的應該是NXT-G 1.1版,

    所以藍牙命令方塊不同,

    我的程式是2.0版寫的,使用的是浮點數的藍牙命令方塊,只要改成你的整數藍牙命令方塊即可。

    回覆刪除
  4. 小笨原11:17 上午

    後來我也有想過 把那個方塊拿掉

    然後改用像圖片一樣的藍芽連接

    但接線的地方 總會變成 虛線

    請問需要做什麼處理嗎?

    程式和提升速度問題 我待會用寄信的給您
    [版主回覆06/09/2012 20:43:32]你好:

    接線需要連到正確的地方,否則當然變成虛線。


    回覆刪除
  5. 小笨原10:44 上午

    謝謝 看來是我誤會您的程式了!!

    我已經成功接起來了
    [版主回覆06/10/2012 11:05:36]你好:

    我想是我的圖片讓你會錯意了,紅色線是TEXT,連接到Variable;綠色線是LOGIC,連接到Loop的接頭。

    如果連接正確,就不會有虛線。

    恭喜你連接成功!

    回覆刪除
  6. 小笨原11:13 上午

    您好 請問原地左右轉的話要如何設定才會順暢??

    我的藍芽訊號是 G=前進 S=停子 L=左轉 R=右轉

    按下橘色按鈕=G 什麼都不按=S 左鍵=L 右鍵=R

    這樣設定下 前進相當正常 但在旋轉時 就是會卡卡的

    請問要如何解決??
    [版主回覆03/02/2013 22:46:52]
    你好:

    卡卡的意思是遙控動作反應不良,還是轉彎動作不順?

    在文章的附圖中,以Switch Block判斷按鍵,可以將Pressed改為Bumped,或是在發送端加上延遲時間的命令方塊,避免一次送出太多藍牙訊息,造成藍牙塞車或誤判。

    最好還是提供你的程式及操作狀況的影片,比較容易推論問題的所在。

    祝你成功,歡迎討論!

    回覆刪除
  7. 小笨原9:57 下午

    您好 我有寄程式過去了 麻煩幫我看一下哪裡有問題
    [版主回覆03/07/2013 13:45:51]

    你好:

    已經收到程式。

    回覆刪除
  8. 小笨原8:41 上午

    忘記說了 按下轉彎的時候 會轉 但動作卡卡的
    [版主回覆03/07/2013 13:51:35]

    動作卡卡是指反應不順的問題嗎?

    我已經看過你的程式,接收端大致OK,

    至於發送端,或許是因為你的Switch Block設定為"Pressed",

    所以當按下按鍵時,藍牙會送出太多個訊號,反倒造成藍牙塞車。

    建議可以將"Pressed"改為"Bumped",確保每次按下按鍵時,需要等到放開按鍵,才會送出藍牙訊號。

    請你再試試看,祝你成功!

    回覆刪除

探奇歡迎大家留言討論!謝謝分享你的意見。