2015/09/30


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

2015/9/12, 第十三課, 用光源感應器做迴轉遊園車



課程才開始, 老師馬上就公佈本週的題目~ 迴轉遊園車. 

兩兄弟很興奮可以再做一台更厲害的光源感應車, 倒是萊恩大兵心中有點嘀咕~ 連續三堂課都用光源感應器做遊園車. 一回生, 二回熟. 那這第三堂課的重點要放在哪兒呢? 

第一段, Switch 程式格, 參上



老師提高音量, 壓下兩兄弟吱吱喳喳的討論聲: 上週直線遊園車的程式, 並不是最正確的作法. (蛤? 蝦毀?) 

因為... 回想直線遊園車的程式碼~ 它假設車車一開始會在淺色的地板上(而且是黑膠帶的右邊), 然後調整車頭方向, 讓車頭延伸線和黑膠帶相交, 才能放車往前走. 等車子偵測到黑膠帶, 才有預想的右轉/左轉/沿著黑膠帶走的表現.

如果一開始就把車放在黑膠帶上, 車子會怎麼走呢?

看兩兄弟滿臉茫然, 老師舉例解釋, 很多事物都會有兩種狀態~ 開/關, 大/小, 是/否, 亮/暗...

光源感應車的啟狀態, 也會有兩種~ 停在淺色地板上或停在黑膠帶上. 

寫程式時, 要先處理哪一種狀態呢? 黑膠帶? 地板? 
不用煩惱, 兩種狀態同時一起處理.

介紹第七個程式格~ Switch (切換) 程式格. 


Switch 程式格可以同時針對兩種狀態寫程式.
- 當光源感測器偵測到淺色地板時, 要做什麼事?
- 當光源感測器偵測到黑膠帶時, 又要做什麼事?

兩種狀態一次寫好, 程式會依當時狀況, 自動依情況處理. 而不會像先前直線遊園車的程式, 現況和假設的不同, 就不會處理了.

第二段, 實作和寫程式

兩兄弟已經很有經驗實作光源偵測車, 不需要老師提醒太多.

- 感應器和地板要是垂直的.
- 感應器不能離地板太遠. 
- 把感應器裝好後, 要量一下地板和黑膠帶的光源值, 寫程式時要用.






兩兄弟在製作車子的進展還不錯. Kenny 延用上週的結構做固定, 進展較快些. Willie 有嚐試新的結構, 進展較慢.



寫程式, 先拉一個 Switch 程式格到工作區.

- 選擇感應器種類 -> 光源感應器.



- 設定光源值. 



- 偵測為亮的情況要做什麼事 (左轉, Move 程式格, 轉幾圈/多久?)





- 偵測為暗的情況要做什麼事 (右轉, Move 程式格, 轉幾圈/多久?)



- 重覆執行 (Loop 程式格, 框住 Switch 程式格)



第三段, 測試與修改調整

今天的黑膠帶軌道比較嚴苛. 可想而知, 這堂課會花比較多在調整程式的效率, 讓車車跑的更快更好.



Willie 的作品

Willie 的第一版程式, 就能讓車子很順利的繞著線跑.

不能滿足於一次成功的小甜頭, 老師和 Willie 繼續討論~ 如何能讓車車沿線跑的速度更快.

- 地板的面積大, 較能容錯. 所以, 離開膠帶前往地板時, 可以跑快一點. (暗->亮, 右轉, 跑快一點)

- 膠帶的面積小, 衝太快就過頭. 所以, 離開地板前往膠帶時, 稍微跑慢一點 (亮->暗, 左轉, 跑慢一點)








Kenny 的作品

Kenny 燒錄了程式車車卻不會動. 除了老師幫忙, 連哥哥都參與進來出意見 debug. 最後是把 Mind Storm 整個環境重開機後, 重新燒錄, 才終於讓車車會偵測與前進.

//— 重開機來解決莫名的系統問題, 這方法還真是到處管用. —//











[萊恩大兵的其它文章]

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

張貼留言