加入延遲控制 Led 燈明滅
在上面使用流水燈控制變數控制亮滅程式結果畫面中,我們發現許多燈都亮起來了,由於我們肉眼所示,好像八個燈都同時亮起來,然而,這是肉眼視覺暫留的現象,由於 loop()區則會不斷執行,而執行速度太快,以至於我們看到好像八個燈都同時亮起來。
所以我們如果將『delay(1000)』這個變數加在loop()區底層,來延遲閃滅的速度,如下表所示
表 6 加入延遲函式
delay(1000) ;
我們將下表程式編譯完成後,上傳到開發板進行測試。
表 7 使用流水燈控制變數控制亮滅程式完整版
使用流水燈控制變數控制亮滅程式完整版(Water_light_Array_All_OK)
int LedPins[] = {4,5,6,7,8,9,10,11} ;
int NowLedOn = 0 ;
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin Blink_Led_Pin as an output.
for(int i=0; i <8 ; i++)
{
pinMode(LedPins[i], OUTPUT); //定義Blink_Led_Pin為輸出腳位
digitalWrite(LedPins[i], LOW); // 將腳位Blink_Led_Pin設定為低電位 turn the LED off by making the voltage LOW
}
}
// the loop function runs over and over again forever
void loop() {
for (int i =0 ; i < 8; i++)
{
if (NowLedOn == i)
{
digitalWrite(LedPins[i], HIGH); // turn on Led
}
else
{
digitalWrite(LedPins[i], LOW); // turn off Led
}
}
NowLedOn ++ ;
if (NowLedOn >=8)
NowLedOn= 0 ;
delay(1000) ;
}
程式下載:https://github.com/brucetsao/arduino_Programming_Trick
讀者也可以在作者 YouTube 頻道(https://www.youtube.com/user/UltimaBruce )中,在網址https://www.youtube.com/watch?v=cPxai727MZU&feature=youtu.be,看到本次實驗-使用流水燈控制變數控制亮滅程式完整版結果畫面。
當然、如下圖所示,我們可以看到使用流水燈控制變數控制亮滅程式完整版結果畫面。
圖 4 使用流水燈控制變數控制亮滅程式完整版結果畫面
所以我們使用了『int LedPins[] = {4,5,6,7,8,9,10,11} ;』這個陣列指令,宣告腳位變數要使用的所有腳位,在使用『int NowLedOn = 0 ;』控制燈號閃滅位置,再透過迴圈語法和 IF 判斷式控制明滅後,由於視覺暫留問題,再加入『 delay(1000) ;』讓肉眼可以辨識,我們發現,從本章開始的程式複雜度,到最後的程式精簡度,不難看出,在多腳位控制方面,我們只要善用本章所用的技巧,不僅更方便,而且臭蟲(Bugs)會更少,這是又是我們再攥寫 Arduino 程式時,常常使用的一個技巧。希望讀者閱讀本文之後,可以學到這個技巧,並可以熟用這個技巧,在往後將會把程式寫得更加穩定,系統更加龐大,複雜與功能強大,但臭蟲(Bugs)會更少。
最後有筆者的介紹哦 !
請注意!留言要自負法律責任,相關案例層出不窮,請慎重發文!