• 沒有找到結果。

附錄一 機器車程式設計指令附錄

N/A
N/A
Protected

Academic year: 2021

Share "附錄一 機器車程式設計指令附錄 "

Copied!
25
0
0

加載中.... (立即查看全文)

全文

(1)

附錄一 機器車程式設計指令附錄

表一、機器車的動作指令

指令(n 為整數) 範例 說明

car.travel(n); car.travel(30); 前進 30 公分 car.travel(-n); car.travel(-50); 後退 50 公分 car.rotate(n); car.rotate(360); 逆時針轉 360 度 car.rotate(-n); car.rotate(-180); 順時針轉 180 度

car.stop(); car.stop(); 停車 表二、設定機器車馬達動力輸出指令

指令(n 為 1~7 整數) 範例 說明(數字越大動力越大)

Motor.A.setpower(n); Motor.A.setpower(5); 設定左輪動力為 5 Motor.B.setpower(n); Motor.B.setpower(1); 設定右輪動力為 1

表三、機器車的感應器指令(用來偵測外界路況)

指令 用途 說明(回傳值)

car.touch_sensor() 用來偵測是否有碰撞到物 體

true(碰到)或 false(沒 碰到)

car.light_sensor() 用來偵測路面上的顏色亮 度

0 到 100 之間的整數,亮 度越亮,數值越高

範例

1. if(car.touch_sensor()){

{

若機器車上的觸碰感應器碰撞到物 體(回傳true),則執行…

2. if (car.light_sensor() > 42){

{

如果機器車上的光感應器感應到的 路面亮度大於42,則執行…

3. while(!car.touch_sensor()){

{

若機器車「沒」碰到物體,則執行…

4. while ((car.light_sensor() > 42)&&( car.light_sensor() <

52)){

}

當機器車上的光 感應器感應的值 大於42 且小於 52,則執行…

(2)

附錄二 實體組講義示例

單元四 樂高程式設計之車子會看路

【範例四】 (檔名:Ex4)

請設計一程式,使得配備有光感應器的機器車能不斷地以逆時針方向 沿著一黑色邊橢圓軌道行走(如下面圖二十三所示) 。(光感應器起始點位 在黑線區)

圖二十三

解析:

1. 本題中,機器車要沿著黑色邊行走,就要配備「光感應器(light sensor)」 。 2. 光感應器會發出紅光打在行走的路面上,再接收路面反射值,此路面反

射值即為「亮度感應值」 ,會回傳給機器車。

3. 每個光感應器對同一顏色路面的感應結果都不同。請將檔名

「CorrectLight」的程式傳到機器車,觀察你手上這部機器車的光感應器 對不同顏色的亮度感應值。

4. 本題中牽涉到黑色與白色,以某機器車為例,黑色感應值為 42,白色感

應值為 52,情形如下頁圖二十四。

(3)

在此範圍內感應值 由42增加到52 52

最大值

42 最小值

圖二十四

5. 由於機器車走的是橢圓形軌道,而且機器車是逆時針走,因此只要車子

一超出軌道,我們就可以讓車子往左修正一點(如下圖二十五)。

6. 由於機器車一開始就是放在黑色軌道上,我們由此構思出如下圖二十六 的演算法。

圖二十五

圖二十六

7. 光感應器的函數 car.light_sensor()會傳回光感應值,因此我們要選定一個

值,來讓機器車判斷是否走出黑線。

8. 光感應值是在 42 與 52 間變換,因此我們可以選定「(42+52)/2 = 47」,

以 47 來判斷是否走出黑線。大於 47 就代表走出黑線,要往左修正;小

於 47 就代表還走在黑線上,可以繼續前進。因此可以進一步把上述的

(4)

演算法轉換成下列流程圖二十七:

car.travel(1); car.rotate(5);

car.light_sensor() > 47

true

false

true while

true if

else

圖二十七

9. 上述的流程圖可寫成下列程式:

/******************校正車子******************/

SmartCar car = new SmartCar(8.2f, 2.3f);

Thread.sleep(500);

Motor.A.setPower(3);

Motor.B.setPower(3);

/******************程式開始******************/

while (true) {

if(car.light_sensor() > 47)

{

car.rotate(5);

}

else

{

car.travel(1);

} }

/******************程式結束******************/

(5)

【習題一】 (檔名:Ex4Hw1)

請設計一程式,使得機器車能不斷地以「逆時針」方向沿著一黑色不 規則軌道「外緣」行走(如圖二十八所示) 。行走過程中,若觸碰感應器被 觸碰,機器車就要停止前進。(請參考指令附錄「表三」之 3)

〈提示一〉 :機器車可走在黑色線與白色線中間的漸層地帶。

圖二十八

(6)

〈提示二〉 :

圖二十九

〈提示三〉 :

圖三十

(7)

〈提示四〉 :

圖三十一 /******************校正車子******************/

SmartCar car = new SmartCar(8.2f, 2.3f);

Thread.sleep(500);

Motor.A.setPower(3);

Motor.B.setPower(3);

/******************程式開始******************/

/******************程式結束******************/

(8)

【習題二】 (檔名:Ex4Hw2)

承習題一:請修改習題一程式,使得機器車能不斷地以「順時針」方 向沿著原軌道「外緣」行走。行走過程中,若觸碰感應器被觸碰,機器車 就要停止前進。

圖三十二 /******************校正車子******************/

SmartCar car = new SmartCar(8.2f, 2.3f);

Thread.sleep(500);

Motor.A.setPower(3);

Motor.B.setPower(3);

/******************程式開始******************/

/******************程式結束******************/

(9)

【習題三】 (檔名:Ex4Hw3)

請設計習題一程式,使得機器車能以「順時針」方向依序通過 1、2、3、

4、5 和 6 號黑色方塊(如下圖三十三) 。通過 6 號方塊後,請讓機器車停止 前進。

圖三十三 /******************校正車子******************/

SmartCar car = new SmartCar(8.2f, 2.3f);

Thread.sleep(500);

Motor.A.setPower(3);

Motor.B.setPower(3);

/******************程式開始******************/

/******************程式結束******************/

(10)

附錄三 模擬組講義示例

單元四 機器車程式設計之車子會看路

【範例四】 (檔名:Ex4)

請設計一程式,使得配備有光感應器的機器車能不斷地以逆時針方向 沿著一黑色邊橢圓軌道行走(如下面圖二十二所示) 。(光感應器起始點位 在黑線區)

圖二十二

解析:

1. 本題中,機器車要沿著黑色邊行走,就要配備「光感應器(light sensor)」 。 2. 光感應器會感應路面的亮度,將路面亮度值傳給機器車。

3. 在模擬軟體中,光感應器對純黑的感應值為 0,對純白的感應值為 100,

如下圖二十三所示。

圖二十三

4. 由於機器車走的是橢圓形軌道,而且機器車是逆時針走,因此只要車子

一超出軌道,我們就可以讓車子往左修正一點(如下圖二十四)。

(11)

5. 由於光感應器起始點位於黑線區,我們由此構思出如下圖二十五的演算 法。

圖二十四

圖二十五

6. 光感應器的函數 car.light_sensor()會傳回光感應值,因此我們要選定一個 值,來讓機器車判斷是否走出黑線。

7. 又光感應值是在 0 與 100 之間變換,因此我們可以選定「(0+100)/2 = 50」,以 50 來判斷是否走出黑線。大於 50 就代表走出黑線,要往左修 正;小於 50 就代表還走在黑線上,可以繼續前進。因此可以進一步把 上述的演算法轉換成下列流程圖二十六:

car.travel(1); car.rotate(5);

car.light_sensor() > 50

true

false

true while

true if

else

圖二十六

(12)

8. 上述的流程圖可寫成下列程式:

/******************校正車子******************/

SmartCar car = new SmartCar(18f, 9.3f);

Thread.sleep(500);

Motor.A.setPower(3);

Motor.B.setPower(3);

/******************程式開始******************/

while (true) {

if(car.light_sensor() > 50)

{

car.rotate(5);

}

else

{

car.travel(1);

} }

/******************程式結束******************/

(13)

【習題一】 (檔名:Ex4Hw1)

請設計一程式,使得機器車能不斷地以「逆時針」方向沿著一黑色漸 層不規則軌道「外緣」行走(如圖二十七所示) 。但行走過程中,若碰撞到 紅色障礙物,機器車就要停止前進。 (請參考指令附錄「表三」之 3)

圖二十七

〈提示一〉 :機器車可走在黑色線與白色線中間的漸層地帶

圖二十八

(14)

〈提示二〉

圖二十九

〈提示三〉

圖三十

(15)

/******************校正車子******************/

SmartCar car = new SmartCar(18f, 9.3f);

Thread.sleep(500);

Motor.A.setPower(3);

Motor.B.setPower(3);

/******************程式開始******************/

/******************程式結束******************/

(16)

【習題二】 (檔名:Ex4Hw2)

承習題一:請修改習題一程式,使得機器車能不斷地以「順時針」方 向沿著原軌道「外緣」行走(如下圖三十一) 。但行走過程中,若碰撞到紅 色障礙物,機器車就要停止前進。

圖三十一

/******************校正車子******************/

SmartCar car = new SmartCar(18f, 9.3f);

Thread.sleep(500);

Motor.A.setPower(3);

Motor.B.setPower(3);

/******************程式開始******************/

/******************程式結束******************/

(17)

【習題三】 (檔名:Ex4Hw3)

請設計習題一程式,使得機器車能以「順時針」方向依序通過 1、2、3、

4、5 和 6 號藍色方塊(如下圖三十二) 。通過 6 號方塊後,請讓機器車停止 前進。 (藍色軌道的光感應值為 50)

圖三十二 /******************校正車子******************/

SmartCar car = new SmartCar(18f, 9.3f);

Thread.sleep(500);

Motor.A.setPower(3);

Motor.B.setPower(3);

/******************程式開始******************/

/******************程式結束******************/

(18)

附錄四 課堂活動觀察表

組別:______________ 單元:______________ 觀察日期:________________

※ 請儘量優缺點請都描述並舉例說明

一、教師授課情形(講解技巧、工具展示、重點掌握等)

二、學生學習情形

a. 觀念理解情形(包含工具使用的利弊)

b. 習題解題(如:哪些特別困難或完成情形)

c. 工具操作(機器車╱模擬軟體)

d. 學習氣氛(態度、興趣等)

三、學生常問的問題

四、改進建議

五、其他感想

(19)

附錄五 單元回饋表

1. 本組在本單元完成的習題有(有完成請打ˇ):

□習題一 □習題二 □習題三 2. 本組在本單元遭遇的問題有:

________________________________________________

________________________________________________

________________________________________________

3. 本組對本單元課程的建議或感想:

________________________________________________

________________________________________________

________________________________________________

(20)

附錄六 程式設計成就測驗

班級:______________ 座號:______________ 姓名______________________

(本測驗中機器車的直線進行或轉彎角度皆不會有誤差)

第一題

機器車執行下面的片段程式,車頭將會走出什麼軌跡?請將軌跡畫在右邊空格 內。

程式 軌跡

car.travel(10);

car.rotate(90);

car.travel(10);

car.rotate(-90);

car.travel(10);

car.stop( );

(21)

第二題

甲、若機器車執行下面左邊程式,車頭將會走出什麼軌跡?請將軌跡畫在右邊 空格內的虛線上。(正方形虛線邊長為5cm,兩牆之間分為 A(光感應值為 60)與 B(光感應值為 40)兩區。)

while ( !car.touch_sensor() ) {

if ( car.light_sensor() > 50 ) {

car.travel(10);

car.rotate(-90);

car.travel(10);

car.rotate(-90);

car.travel(10);

} else {

car.travel(1);

} }

car.stop();

乙、請將上述甲題程式加以修改,使得車頭可以走出如下面右圖所示粗黑線軌 跡,並將程式寫在下面左方空格。

(22)

第三題

甲、若機器車執行下面左邊程式,車頭將會走出什麼軌跡?請將軌跡劃在右邊 空格內的虛線。

程式 軌跡

int count = 0;

while ( count < 4 ) {

car.travel(20);

car.rotate(90);

count = count + 1;

}

car.stop();

乙、請將上述甲題程式加以修改,使得車頭可以走出一邊長 25 公分的「正三角 形」軌跡,並將程式寫在下方空格。(注意:一定要使用到while)

程式 軌跡

(23)

(注意:第四題為程式設計題,採「部分給分」,請各位同學儘可能填寫)

第四題

請設計一程式,使得機器車得以從起點出發,走出下圖所示之迷宮。(註:

表示機器車的起始位置與出發方向,粗黑線表示迷宮圍牆)

程式撰寫區

(24)

附錄七 實體組問卷

班級:________ 性別:______ (請各位同學用 ν 選取同意程度)

題目 非常

同意 同意 普通 不同意 非常 不同意

1. 我覺得 Eclipse 的操作環境很容易使用 □ □ □ □ □

2. 我能夠瞭解本活動中所有機器車相關的指令

(如car.travel()、car.rotate()、car.touch_sensor()等) □ □ □ □ □

3. 我能夠瞭解本活動中所有的 Java 指令

(如while、if-else、count = count + 1 等) □ □ □ □ □

4. 我能夠理解課堂中老師所舉範例的解題方法(程式架構) □ □ □ □ □

5. 我能夠理解課堂中老師所舉範例的程式碼 □ □ □ □ □

6. 給我簡單的程式碼,我可以想像出機器車可能的執行動作 □ □ □ □ □

7. 看了機器車實際執行程式後,我更能知道程式的錯誤在哪裡 □ □ □ □ □

8. 我可以自己找出程式的錯誤 □ □ □ □ □

9. 學到現在,如果題目不太難,我能夠自己想出解題的方法 □ □ □ □ □

10. 學到現在,如果題目不太難,我能夠自己寫出程式 □ □ □ □ □

11. 整體來說,我覺得範例與習題都不會很難 □ □ □ □ □

12. 我常覺得寫習題的時間不夠 □ □ □ □ □

13. 做習題時,就算已經達到老師的要求,我還是常常想要修改程

式,看看會對機器車的動作有什麼影響 □ □ □ □ □

14. 即使習題有點難,我還是嘗試著要完成程式 □ □ □ □ □

15. 看到機器車執行我寫的程式,覺得很有成就感 □ □ □ □ □

16. 我覺得這幾個星期的機器車程式設計很好玩 □ □ □ □ □

17. 我希望學習更多機器車程式設計 □ □ □ □ □

18. 我希望能進一步學習其他(不是機器車)的程式設計 □ □ □ □ □

19. 在這幾週的學習活動中,你最喜歡哪一部份?

20. 其他的感想(好、壞都可以寫)

(25)

附錄八 模擬組問卷

班級:________ 性別:______ (請各位同學用 ν 選取同意程度)

題目 非常

同意 同意 普通 不同意 非常 不同意

1. 我覺得 Eclipse 的操作環境很容易使用 □ □ □ □ □

2. 我覺得模擬軟體(LMS)的操作環境很容易使用 □ □ □ □ □

3. 我能夠瞭解本活動中所有機器車相關的指令

(如car.travel()、car.rotate()、car.touch_sensor()等) □ □ □ □ □

4. 我能夠瞭解本活動中所有的 Java 指令

(如while、if-else、count = count + 1 等) □ □ □ □ □

5. 我能夠理解課堂中老師所舉範例的解題方法(程式架構) □ □ □ □ □

6. 我能夠理解課堂中老師所舉範例的程式碼 □ □ □ □ □

7. 給我簡單的程式碼,我可以想像出機器車可能的執行動作 □ □ □ □ □

8. 看了機器車實際執行程式後,我更能知道程式的錯誤在哪裡 □ □ □ □ □

9. 我可以自己找出程式的錯誤 □ □ □ □ □

10. 學到現在,如果題目不太難,我能夠自己想出解題的方法 □ □ □ □ □

11. 學到現在,如果題目不太難,我能夠自己寫出程式 □ □ □ □ □

12. 整體來說,我覺得範例與習題都不會很難 □ □ □ □ □

13. 我常覺得寫習題的時間不夠 □ □ □ □ □

14. 做習題時,就算已經達到老師的要求,我還是常常想要修改程

式,看看會對機器車的動作有什麼影響 □ □ □ □ □

15. 即使習題有點難,我還是嘗試著要完成程式 □ □ □ □ □

16. 看到機器車執行我寫的程式,覺得很有成就感 □ □ □ □ □

17. 我覺得這幾個星期的機器車程式設計很好玩 □ □ □ □ □

18. 我希望學習更多機器車程式設計 □ □ □ □ □

19. 我希望能進一步學習其他(不是機器車)的程式設計 □ □ □ □ □

20. 在這幾週的學習活動中,你最喜歡哪一部份?

21. 其他的感想(好、壞都可以寫)

參考文獻

相關文件

( )如圖,已知康橋大樓建地有一輛吊車,吊杆頭正要吊起一重物,已知吊車的高度為 2 公 尺,若沿著吊杆延長線接觸到地面 A 點,A 點距離吊車 5 公尺,且距離重物 50 公尺,試

微算機原理與應用 第6

有人做過--個實驗:組織三組人,讓他們分別步行到十公里以外的三個 村子。

也就是設定好間隔時間(time slice)。所有的 程序放在新進先出的佇列裡面,首先CPU

• 1961 年Lawrence Roberts使用低速網路線 將劍橋與加州的電腦相連,展示廣域網路 (wide area network) 的概念..

• 訓練課程之設計格式,請參用 本分署規範之課程申請相關表件-學、術科

(2) 讚美︰小明是個電腦程 式設計愛好者。最近他參 加義工活動,為安老院設 計了一款自動開門感應

進階題 5% 設計以下功能:當 Text1 輸入完數字後,直接按 Enter 後跳到 Text2 ; 當 Text2 輸入完數字後,直接跳到 Command1 ,再接 Enter