2015/07/27


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

2015/7/25, 第八課, 和聲音啟動車玩一二三木頭人

第一段, Wait 與 Loop 程式格, 參上

今天的課程要用 Sound 程式格, 再搭配 Wait (沙漏) 與 Loop (迴圈) 程式格來做應用.


Wait (沙漏) 程式格是要搭配感應器來使用的. 

日常生活中, 常見的感應器應用包括有超商的自動門或廚房的自動開關垃圾桶. 在自動開關垃圾桶上面有個感應器, 它會每隔一段時間, 也許是一秒鐘, 也許更短的時間, 一直偵測有沒有人站在垃圾桶前面. 若偵測到有人, 就去把垃圾桶蓋子打開. 若這次沒偵測到人, 就等下次再偵測. 

所以說, 感應器就是一直在等待狀況發生, 然後來做特別的事.

Wait (沙漏) 程式格有哪些屬性呢?





- 搭配感應器, 可選擇使用不同的感應器. (這次要用有麥克風的).
- Port, 指定感應器接在哪個埠.
- Until, 這邊有兩個設定 (大於小於和數字|敏感度). 數字愈大, 代表敏感度愈低, 數字愈小, 敏感度則愈高. (例如: 聲音大於 10 即啟動, 對比聲音大於 90 才啟動. 前者的敏感度較高)


今天的課題就是要做一台聲音啟動車來玩一二三木頭人. 在動手做積木車之前, 先來想想程式要怎麼寫.



第二段, 一二三木頭人程式怎麼寫?

先分析一下一二三木頭人遊戲: 

當鬼撇過頭喊 “一~二~三~木頭人” 時, 大家要快步移動. 而當鬼喊完轉回頭時, 還在動的人就算被抓到了. 

對照到聲音啟動車的動作:

當沒有聲音或喊聲停止 (沒感測到聲音) 時, 不做任何動作. 而
當聽到 “一~二~三~木頭人” (感測到聲音) 時, 就轉動輪胎|馬達. 而且, 輪胎|馬達轉動一下子就好, 不能貪心跑太多步 (輪胎|馬達轉太多圈), 以免被抓到. 

來寫程式吧:

先拉一個 Wait 程式格, 設定 (i) 感應器為聲音 (ii) port 值 (iii) Until 條件.


再來是與應測器連動的動作~ 轉動輪胎|馬達. 就用 Move 程式格, 設定馬達轉動的出力與長短控制.


到這邊.. 問題來了. 這兩個程式格只是一次的動作而已吔. 若聲音拉很長, 難道要複製貼上 Wait 與 Move 程式格一百遍嗎? 

當然不是. 要讓車子能不限聲音長短的感測與動作, 這就要靠另一個還沒介紹過的程式格 ~  Loop (迴圈) 來解決了. 就把 Wait 與 Move 兩個, 放進 Loop 程式格裡. 車子就能不限聲音長短的感測與動作了. 


第三段, 動手實作聲音啟動車

車體部份, 基本就是先前做過的雙馬達驅動車. 老師幾乎不再需要提示兩兄弟怎麼做, 唯一的提醒是要他們把麥克風安裝離車遠一點. 



Willie 大致沒遇到什麼困難, 就完成他的作品, 高高興興地在旁邊玩起一二三木頭人.















Kenny 在實作車體時, 遇到兩個問題. 

(i) 他的車輪胎踫不到地面. 後來是將 NXT 主機盒墊高, 才終於讓輪胎能踫到地面. 

(ii) 他的車輪胎轉動方向錯了, 會使得車子往遠離音源的方向走. 這邊大改不易, 只好是把麥克風轉個方向, 和車輪胎轉動方向一致.




第一版, 輪胎轉動方向和音源方向相反. 車會愈跑愈遠.

第二版, 將麥克風收音方向改成同輪胎轉動方向.








[萊恩大兵的其它文章]

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 意見:

張貼留言