2015/11/02


本篇的主角是萊恩大兵的兩個兒子 Willie 和 Kenny. 萊恩大兵為他們兩個安排了 LEGO NXT 機器人的家教.


2015/10/3, 第十六課, 自動車庫門, 迴圈程式格進階應用


做了好多堂課的車子, 本週不要再做車子了, 不做車子那要做啥? 



老師公佈題目~ 自動車庫門. (嗯, 在搞笑嗎? 還是和車子脫不了關係.)



其實這次課程重點是在互動. 不像先前的課程直接依感測器的數值連動馬達/輪胎. 自動車庫門則是整合多種感應器與輸出裝置 (聲音, 螢幕), 來做到便利的功能.





第一段, 拆解自動車庫門的動作


無論寫程式或做積木作品, 動手前最重要一件事就是~ 想清楚. 


想清楚了流程與動作細節, 才能設計適當的程式/演算法與積木結構. 兩兄弟描述坐車進入自動停車場的情境與步驟: 開車進入 -> 停在欄杆前 -> 按鈕取票 -> 欄杆升起 -> 車開入 -> 欄杆落下. (差不多就這些, 一個不漏.)



老師專業的補充:


(1) 開車進入, 車被柵欄擋住. 

車停在柵欄前, 取票機會有文字與聲音提示, 要你按鈕取票.
若柵欄前面沒有車時, 則取票機不會做文字與聲音的提示.

所以, 要有感測器去偵測柵欄前面有無車子. 若有車子, 則取票機發出提示 (螢幕與聲音). 若沒有車子, 則取票機不動作.


(2) 取票入場.

取了票, 取票機會記錄入場時間, 同時拉起柵欄.

所以, 取票的動作 (可用按開關代替抽票) 要和柵欄的動作連動在一起 (取票 = 開啟柵欄)


(3) 車入場後, 柵欄落下, 取票機不再提示.

車入場後, 柵欄即會落下. 此時取票機不再發出提示, 轉為等待狀態. (車入場後, 柵欄何時該落下才不會砸到車? 這邊老師把狀況簡化, 要兩兄弟在按鈕後等上幾秒, 當作車子已入場)

所以, 要等一段時間後, 柵欄自動落下. 並且要關閉取票機的提示, 轉成等待狀態.



第二段, 程式演算法與積木實作




動作都分析清楚了, 要怎麼轉成程式呢? 老師帶兩兄弟從另一角度來"看"自動車庫門的動作:

(1) 在沒有車的時候, 取票機一直 (迴圈) 在偵測 (超音波感測器) 柵欄前面有沒有車子.


(2) 當偵測到有車子時, 取票機會一直 (迴圈) 發出提示 (聲音, 螢幕), 直到使用者按了按鈕 (觸踫感測器) 為止 (跳出迴圈).


(3) 按了按鈕 (觸踫感測器), 柵欄拉起來. 等候數秒鐘後, 將柵欄放下來, 並關掉取票機提示, 轉變為等待狀態 (迴圈). 


//-- 這邊有兩個程式思維的亮點: 

1. 可以在某些條件成立的情況下跳出迴圈 (Loop 程式格) 以及 2. 迴圈也可以套迴圈. --//


動手實作. 自動車庫門是結合馬達, 觸踫與超音波感應器的複雜結構. 老師沒做什麼示範, 即讓兩兄弟動手做積木. 而兩兄弟卡關的問題很妙, 竟然是問柵欄要怎麼做? 老師的回答很簡單~ 用一根橫桿來代表欄桿即可. 更好的作法是用以前在動力機械課程學過的平行四邊形連桿結構, 會更有收攏與展開柵欄的表現.








第三段, 測試, 修改與調整


Willie 的作品


哥哥用平行四邊形連桿結構來製作柵欄, 柵欄收疊展放的效果很好, 而比較沒處理好的問題是整線, 纏在橫桿上顯得有點亂.




第一版 (超音波感測器放太高, 結果偵測不到車)










第二版 (將超音波感測器裝低一點, 解決偵測不到車的問題. 但整線變得更亂了.)




從動圖可以看出整線不佳的困擾. 車子通過柵欄時, 有被線擋住.



外層的迴圈是無限執行的.


内層迴圈設有跳出條件, 會在觸控感應器被按下時跳出迴圈.







Kenny 的作品


弟弟的柵欄有點簡單, 就是一根橫桿來示意.
因為馬達是水平放置的, 整線的問題沒像哥哥遇到的那般困難. 從本文開頭的動圖可以看出, 車子其實也差點卡到線, 只是弟弟的柵欄比較寬, 所以車子比較好通過.











弟弟的程式第一次跑時, 柵欄升起卻不會降下來. 檢查程式才發現是 Move 程式格裡面的 port 寫錯了.



兩兄弟的作品合照






[萊恩大兵的其它文章]

LEGO NXT 機器人 學習記錄

學習記錄, LEGO NXT 機器人, (1) 聲控自走車 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (2) 簡易程式控制車 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (3) 第一隻程式與荷蘭風車 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (4) 雙馬達驅動車 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (5) 萬向輪與三輪車 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (6) 模仿動作的學習機器人 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (7) 拉小提琴的音樂機器人 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (8) 和聲音啟動車玩一二三木頭人 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (9) 用觸踫感應器做賽馬比賽 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (10) 用超音波感應器玩鬼抓人 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (11) 用光源感應器讓車車折返跑 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (12) 用光源感應器做直線遊園車 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (13) 用光源感應器做迴轉遊園車 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (14) 踫踫車, 感應器與程式格進階應用 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (15) 絕地逢生車, 感應器與程式格進階應用 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (16) 自動車庫門, 迴圈程式格進階應用 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (17) 摩天輪, 減速齒輪組進階應用 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (18) 直線競速車, 加速齒輪組進階應用 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (19) 倒車入庫 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (20) 伸縮毛毛蟲 (LEGO, NXT)
學習記錄, LEGO NXT 機器人, (21) 學習手臂 (LEGO, NXT)

0 意見:

張貼留言