Arduino第四課(3顆LED紅綠燈)

增加為紅 三顆LED

紅色LED,正極Arduino板數位腳位11
黃色LED,正極Arduino板數位腳位10
綠色LED,正極Arduino板數位腳位9

控制數位腳位9、10、11的輸出為高電位(5V)或低電位(0V)。來控制三種顏色LED的亮或熄滅。

0.檢查接線

設定[腳位9模式為OUTPUT]、 [腳位10模式為OUTPUT] [腳位11模式為OUTPUT],設定數位腳9、10、11為輸出。

設定[腳位9、10、11輸出1](高電位),讓三顆LED亮。

如果沒有亮,先檢查是否斷線了,再檢查是否接線有錯(LED正負極方向是否正確)。

一、使用鍵盤按鍵來控制LED

注意:

記得先檢查[輸入法]是否為[英],當輸入法不對時,鍵盤按鍵對應的值是錯的,無法正確反應動作。

按鍵盤上的[a]鍵讓綠色LED燈亮,鬆開[a]鍵讓綠色LED燈熄滅。

按鍵盤上的[空白鍵]讓紅色LED燈亮,鬆開[空白鍵]讓紅色LED燈熄滅。

按鍵盤上的[向上移]讓黃色LED燈亮,鬆開[向上鍵]讓黃色LED燈熄滅。

程式設計請參考上一節修改

二、搶答

1.甲、乙、丙三隊搶答,先按的亮燈,後按的燈不亮。

紅隊按[空白鍵]讓紅色LED燈亮,黃隊按[向上鍵]讓黃色LED燈亮, 隊按[a]讓綠色LED燈亮

程式設計請參考上一節修改

2.螢幕上加上倒數計時,時間到,再搶答。

3.螢幕上隨機出現搶答畫面(加上聲音),看(聽)到再搶答。

三、十字路口紅綠燈

a.綠、黃、紅LED輪流亮

1.[腳位(…)模式為(OUTPUT)],設定數位腳9、10、11為輸出。

2.[數位輸出:設定腳位…為1],讓數位腳9、10、11輸出為高電位,LED燈亮

3.[等待1秒],讓亮燈維持一秒

4.設定[數位輸出:設定腳位….為0],讓數位腳…輸出為 電位,LED燈熄滅

5. 輪流讓數位腳9、10、11輸出高、低電位,就可以讓綠、黃、紅LED燈輪流亮、滅的閃爍。

6. 加上[重複執行],就可以無限循環這個綠、黃、紅LED燈輪流閃爍。

程式下載:綠黃紅閃燈.sb2

延伸:

1.請學生想想要如何改變閃爍(亮、滅)時間?

2.燈愈多,程式愈長,請學生想一想可不可以縮短程式?

b. 模擬十字路口

將上一個練習的LED燈等待時間調整,就可以模擬十字路口的紅綠燈號了。

程式下載紅綠燈.sb2

c.紅燈時,螢幕要顯示倒數計時(模擬十字路口)

 

 

 

主要程式同上面的練習。

在紅燈的部分增加顯示倒數計時的改變。

增加一個[紅燈倒數]的變數。 

一開始隱藏變數不要顯示,等輪到紅燈再顯示。 

紅燈時,先設定變數值紅燈的倒數秒數(10秒),然後在螢幕上顯示變數,設數位腳11的紅燈輸出為1(高電位),將紅燈點亮。 

等待一秒後,將變數值減1  
重複10次後,隱藏變數,設數位腳11的紅燈輸出為0(低電位),紅燈熄滅。

程式下載紅燈倒數.sb2

d. 紅、綠燈時,螢幕都要顯示倒數計時

主要程式同上面的練習。

在綠燈的部分增加顯示倒數計時的改變。

增加一個[綠燈倒數]的變數。 

程式下載 紅綠燈倒數.sb2

 

延伸:

設計一個紅綠燈圖示,模擬紅綠燈的運作,配合燈號做顏色變換。

四、隨機閃燈

綠、黃、紅LED隨機點亮又熄滅

增加一個[亮燈]的變數。 

[設定變數(亮燈)為(在9到11間隨機選一個變數)],將變數值設定為9到11之間的隨機變數。

設定[亮燈]變數的腳位輸出為1(高電位),將燈點亮。 

等待一秒後,將[亮燈]變數的腳位輸出為0(低電位),將燈點熄滅。

然後重複這個[變數改變]、[亮燈]、[熄滅]。

程式下載: 隨機閃燈.sb2

延伸:

1.改變等待時間,讓隨機閃燈的時間改變。

2.上面程式特地加了一個[亮燈]變數為9~11隨機選一個數,如果不要做這個變數設定,直接將9~11隨機選一個數放進腳位輸出,可以嗎?

為什麼?

程式下載隨機閃燈0.sb2

 

延伸:

燈號改變時,螢幕上顯示相對應的腳色顏色。(例如:綠燈亮時,螢幕上也同時亮綠色燈)

五、學生創作:

1.提供多組材料讓學生自由創作

2.學生尋求其他組同學合作創作更多元的作品

3.十字路口有4組紅綠燈一起動作。

4.更多隊伍(5隊、6隊)的搶答系統

5.用LED編排圖形、文字

6.模擬廣告看板

7.打地鼠(看到紅色燈亮按R鍵、黃色燈按Y鍵、綠色燈按G鍵,按對計分)

8.時鐘

9.霹靂燈:

接很多LED燈排成一排,讓這些LED燈輪流一顆顆的閃亮過去。

9.1 請學生想想如何可以接更多LED燈?

從數位腳位D0~D13,共有14個數位輸出的位置,可以接14顆LED。

可是大家常用的是D2~D13可以接12顆LED,為什麼D0和D1不用?

因為程式執行時D0和D1負責傳輸訊號,這時接在D0和D1的LED會跟著訊號傳輸亂閃。

9.2 請學生想想可以接更多LED燈嗎?

類比腳A0~A5一般用來接受類比電壓輸入,也可以當作數位輸出的數位腳D14~D19,所以可以接上LED。

這樣數位輸出最多就可以從D2~D19接18顆LED

9.3 同時接18顆LED,如果用前面練習時寫程式的方法,寫出來的程式會很長一串,想想看如何用簡短的程式來控制這麼多顆LED?

9.4  同時接18顆LED,也必須同時接18顆電阻,有沒有辦法簡化?

因為同一時間只有一個燈會亮,所以可以將系統簡化,只接一顆電阻

接線圖

將18顆LED的短腳(負極)接麵包板同一邊,再串接串接220歐姆電阻後接地(GND)。

18顆LED的長腳(正極)分別接D2~D13和A0~A5,由這18個腳位來控制輸出電位,讓LED亮或滅。

將原來是類比輸入的A0~A5也當成數位輸出的D14~D19

a.18顆LED輪亮

設定變數[亮燈]來決定該輪到哪一顆LED燈要亮。

重複18次[腳位(…)模式為OUTPUT],將D2到D19設定為數位輸出

重複18次[腳位(…) 數位輸出1]、[等待0.1秒]、[腳位(…)數位輸出0],讓D2到D19輪流亮、滅

[重複執行],讓上面LED亮、滅的動作重複進行。

程式下載18顆LED輪亮.sb2

b.18顆LED來回亮

前面的程式讓LED輪流閃過,改變一下,變成讓LED來回閃爍

請學生思考有18顆LED,為什麼重複執行只有17次?

試試看改變重複執行為18次,觀察有什麼不一樣?

程式下載18顆LED來回亮.sb2

延伸:

1.如果將[腳位(…)數位輸出1]、[等待0.1秒]、[腳位(…)數位輸出0]的[等待0.1秒]移除,結果有什麼不同?

2.可以讓程式更簡短嗎?再加入一個迴圈?

3.除了上面兩種霹靂燈的模式,試試看如何可以讓他有更多種變化?

111.2.17更新

霹靂燈(OSEP)

10.光立方

將27顆LED燈排列成3X3X3的立方體形狀,同一層的9顆LED負極焊接在一起,同一列的3顆LED正極焊接在一起。

所以三層有3組GND接頭,搭配一層9組正極,就可以用12個腳位來控制27顆LED燈了。

依序將正極接在數位腳D2~D10,負極接在數位腳D11~D13

設定變數[亮燈]來決定該輪到哪一列LED正極要輸出1。

設定變數[GND]來決定該輪到哪一層LED負極要輸出0。

重複12次[腳位(…)模式為OUTPUT],將D2到D13設定為數位輸出

要點亮LED,必須正極要輸出1,負極要輸出0

如果負極輸出為1,正極輸出為1或0都不會亮;控制GND的輸出來決定同一列中,哪一顆(哪一層)LED要亮。

用如果[ (…)就 … ]來控制負極D11~D13的輸出。

搭配D2~D10的[腳位(…)數位輸出1]、[等待0.1秒]、[腳位(…)數位輸出0],讓D2到D10輪流輸出1和0,就可以讓27顆LED依序閃亮起來。

程式下載:光立方.sb2

將輸出1和輸出0中間的等待時間去掉,閃亮速度更快

光立方(亂閃)

將GND和亮燈變數都用[隨機選一個數]來決定。

程式下載:光立方亂閃.sb2

05

roc

宜蘭縣國小資訊小站

您可能也會喜歡…