※拖更:拖延更新。
在進入正題之前,稍微聊一下自己的近況;小弟我已經在今年三月中就卸下在成功大學的研究工作,因為當時已經考上臺北科技大學並且表明要北上念書,而老闆是一個開明的人,尊重我的決定〈感謝老闆RRR~~QQ〉,爾後我就只單純以「課程助教」的身分,每週一到中正大學去帶物聯網的實驗課〈課程助教是唯一保留的工作〉,而非週一的時間基本上人都在成大,至於平日在做什麼就請容許我保密,我不想承擔太多眼光和壓力( ´Д`)y━・~~。
約莫兩週我會上一次北部,有時候會一週回去一次,看心情而定〈有朋友說我的摳摳蠻多的,事實上我確實在經濟上比較寬裕,但這幾個月因為玩太兇和已預支要買一些私人用的電子器材,導致荷包緊緊地QQ〉,所以「南北通勤」這件事算是很平常且習慣了,高鐵、臺鐵和客運的通勤方式都使用過;最喜歡的是使用客運,一來便宜,二來蠻容易入睡的XD,不過缺點是搭一次要四~五個鐘頭,但習慣後就還好了。
這禮拜是在成大的倒數第二個禮拜,有感而發才烙烙長打了一大堆心情小語,或許在成大的最後一週的更新廢話會更多吧Σ(=ω= ;) ~~。
回歸到我們的正題:廣告燈
廣告燈實體成果 |
實作目標:
- 讓LED從左到右順向發亮,再讓LED從左到右順向關閉。
硬體電路:
![]() |
廣告燈的硬體電路 |
- 這邊可以看到每一顆LED都加上限流電阻,不過經過實驗得知,其實不加限流電組也可以,但為求元件的完好,請加上一顆限流電阻以策安全。
- 也可以把LED負端全部串起聯後使用一顆限流電阻。
程式碼:
int BASE = 2 ; //第一顆 LED 接的 I/O Pin腳
int NUM = 6 ; //LED的總數
void setup()
{
for(int i = BASE ; i < BASE + NUM ; i++ ) //因為預設第一顆LED是port2,所以使用for迴圈打開port要用第一顆預設port加上總數
{
pinMode(i, OUTPUT) ; //解釋同上
}
}
void loop()
{
for(int i = BASE ; i < BASE + NUM ; i++ )
{
digitalWrite(i, HIGH) ; //設定高電位(5V)讓LED發亮
delay(200) ; //延遲0.2秒
}
for(int i = BASE ; i < BASE + NUM ; i++ )
{
digitalWrite(i, LOW) ; //設定低電位(0V)讓LED熄滅
delay(200) ; //延遲0.2秒
}
}
實作成果:
研究討論:
- 學生在課堂上實作有遇到把LED全部接在Arduino版子上的+5V,這樣的接法在硬體電路沒錯,LED本來就必須透過輸入工作電壓去推動,不過因為這是微控制器,輸入輸出都是靠各個Port和Code來處理,所以當把LED接在Arduino上5V的時候會形成一個不斷供電的封閉回路,我們就無法透過Port控制LED的運作,此問題在「Arduino Lesson 2」的硬體電路部分有提及,不熟悉的人可以再回去複習一下。
- 此實作有一個變化電路,就是轉動可變電阻讓LED達到流水燈的效果,Code上可以使用map()函式達到此效果,「Arduino Lesson 3」的可調光LED亦可使用map()函式,此函式的結構是map(variable, constant, constant, constant, constant),以一個實例為例子:map(val, 0, 1023, 0, 1, 50),就是把0~1023儲存在val這個變數裡,並讓0~1023對應到1~50的數值區間內。
沒有留言:
張貼留言