【程式設計篇】多腳位定義的技巧- 下篇

加入延遲控制 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)會更少。

最後有筆者的介紹哦 !

曹永忠
作者

曹永忠,國立中央大學資訊管理學系博士,目前在暨南大學電機工程學系兼任助理教授與自由作家,專注於軟體工程、軟體開發與設計、物件導向程式設計......並持續發表作相關專業著作。

使用 Facebook 留言
發表回應
謹慎發言,尊重彼此。按此展開留言規則