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

當然、如下圖所示,我們可以看到流水燈範例程式結果畫面,

【程式設計篇】多腳位定義的技巧- 上篇
▲圖 3 流水燈範例程式結果畫面

使用陣列簡化程式

如下圖所示,我們發現我們使用八個 Leds 燈,而燈號成為連續數字,所以我們如果使用陣列變數來代表腳位,可以更有效管理這些腳位。

【程式設計篇】多腳位定義的技巧- 上篇
▲圖 4 流水燈連接電路圖

我們在上表:流水燈範例程式,我們用 define 變數來代表腳位,但由於一個腳位一個變數,八個腳位就有八個變數,所以每一個腳位變動都必須要透過變數來重設腳位的高低電位來控制 Led 燈暗或燈亮。在C語言當中,我們常用迴圈指令來簡化處理連續數字或陣列,整個程式會更加簡化(曹永忠, 吳佳駿, 許智誠, & 蔡英德, 2016a, 2016b, 2016c, 2016d, 2016e, 2016f, 2016g, 2016h)。 讀者回頭看上表所示之流水燈範例程式,我們發現,雖然用 define 變數簡化了腳位變動時,只需變更#define 變數後面的值,但是這僅僅簡化了腳位變動後需改變程式內容的地方,但是大量的腳位,還是需要更龐大的處理程式。所以我們使用了『int LedPins[]』這個指令,來替代{4,5,6,7,8,9,10,11}共八個腳位,把程式開頭處加入:

int LedPins[] = {4,5,6,7,8,9,10,11} ;

我們再將下表腳位定義與下表腳位定義,使用迴圈的技術。

表 3 腳位定義

pinMode(Led1_Pin, OUTPUT);    //定義Blink_Led_Pin為輸出腳位

  pinMode(Led2_Pin, OUTPUT);    //定義Blink_Led_Pin為輸出腳位

  pinMode(Led3_Pin, OUTPUT);    //定義Blink_Led_Pin為輸出腳位

  pinMode(Led4_Pin, OUTPUT);    //定義Blink_Led_Pin為輸出腳位

  pinMode(Led5_Pin, OUTPUT);    //定義Blink_Led_Pin為輸出腳位

  pinMode(Led6_Pin, OUTPUT);    //定義Blink_Led_Pin為輸出腳位

  pinMode(Led7_Pin, OUTPUT);    //定義Blink_Led_Pin為輸出腳位

  pinMode(Led8_Pin, OUTPUT);    //定義Blink_Led_Pin為輸出腳位

表 4 腳位初始化

digitalWrite(Led1_Pin, LOW);    // 將腳位Blink_Led_Pin設定為低電位  turn the LED off by making the voltage LOW

  digitalWrite(Led2_Pin, LOW);    // 將腳位Blink_Led_Pin設定為低電位  turn the LED off by making the voltage LOW

  digitalWrite(Led3_Pin, LOW);    // 將腳位Blink_Led_Pin設定為低電位  turn the LED off by making the voltage LOW

  digitalWrite(Led4_Pin, LOW);    // 將腳位Blink_Led_Pin設定為低電位  turn the LED off by making the voltage LOW

  digitalWrite(Led5_Pin, LOW);    // 將腳位Blink_Led_Pin設定為低電位  turn the LED off by making the voltage LOW

  digitalWrite(Led6_Pin, LOW);    // 將腳位Blink_Led_Pin設定為低電位  turn the LED off by making the voltage LOW

  digitalWrite(Led7_Pin, LOW);    // 將腳位Blink_Led_Pin設定為低電位  turn the LED off by making the voltage LOW

  digitalWrite(Led8_Pin, LOW);    // 將腳位Blink_Led_Pin設定為低電位  turn the LED off by making the voltage LOW

我們透過 for(i)迴圈,來將下列設定程式包括進去

pinMode(LedPins[i], OUTPUT);    //定義Blink_Led_Pin為輸出腳位

digitalWrite(LedPins[i], LOW);    // 將腳位Blink_Led_Pin設定為低電位  turn the LED off by making the voltage LOW

所以程式就成下列程式:

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

        }

 

我們發現,十六行的程式簡化成四行,依樣達到相同效果。

我們將使用陣列與迴圈設定腳位程式,上傳到開發板進行測試。

表 5 使用陣列與迴圈設定腳位程式

使用陣列與迴圈設定腳位程式(Water_light_Array_for_Setup)

int LedPins[] = {4,5,6,7,8,9,10,11} ;

// 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() {

 

}

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

下一頁有作者介紹和後續哦

曹永忠
作者

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

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