2017.01.06 13:30

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

ADVERTISEMENT

表 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 使用陣列與迴圈控制燈號程式結果畫面

ADVERTISEMENT

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

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

 

int NowLedOn = 0 ;

 

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

ADVERTISEMENT

 

我們所知道,在 Arduino 開發版程式設計的地方,在 Setup()區只會執行一次,而loop()區則會不斷執行。(, , , , , , , , , )

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

ADVERTISEMENT

表 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

ADVERTISEMENT

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


圖 3 使用流水燈控制變數控制亮滅程式結果畫面

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

ADVERTISEMENT