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

表 3 使用陣列與迴圈控制燈號程式

使用陣列與迴圈控制燈號程式(W Water_light_Array_control_Led)

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

              }

          }

}

程式下載:https://github.com/brucetsao/arduino_Programming_Trick

當然、如下圖所示,我們可以看到使用陣列與迴圈控制燈號程式結果畫面,

【程式設計篇】多腳位定義的技巧- 下篇
圖 2 使用陣列與迴圈控制燈號程式結果畫面

整合燈號變動變數控制流水燈亮

我們發現,上圖中,程式正常執行,但是燈號只留在第一個燈,我們看看原來使用陣列與迴圈控制燈號程式,如下表所示,我們雖然使用了『NowLedOn』這個變數,來控制燈號所亮之處:

 

int NowLedOn = 0 ;

 

但是在使用陣列與迴圈控制燈號程之後所有用到『NowLedOn』這個變數的地方,卻沒有將『NowLedOn』這個變數值進行變動,難怪燈號會一直處在初始值『0』的地方。

 

我們所知道,在 Arduino 開發版程式設計的地方,在 Setup()區只會執行一次,而loop()區則會不斷執行。(曹永忠, 許智誠, & 蔡英德, 2015a, 2015b, 2015c, 2015d, 2015e, 2015f, 2015g, 2015h, 2016a, 2016b)

所以我們如果將『NowLedOn』這個變數加在 loop()區,如下表所示

表 4 改變控制燈號變動變數

     NowLedOn ++ ;

     if (NowLedOn >=8)

          NowLedOn= 0 ;

 

我們將下表程式編譯完成後,上傳到開發板進行測試。

表 5 使用流水燈控制變數控制亮滅程式

使用流水燈控制變數控制亮滅程式(Water_light_Array_All)

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 ;

 

}

程式下載:https://github.com/brucetsao/arduino_Programming_Trick

當然、如下圖所示,我們可以看到使用流水燈控制變數控制亮滅程式結果畫面。

【程式設計篇】多腳位定義的技巧- 下篇
圖 3 使用流水燈控制變數控制亮滅程式結果畫面

下一頁還有更多精彩教學唷 !

曹永忠
作者

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

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