【Arduino入門】LED跑馬燈設計教程

在Arduino UNO上設計跑馬燈時,“for”迴圈是一個非常實用的工具。首先,將LED燈接至Arduino板上的數位輸出引腳。接著,在Arduino的程式碼中使用”for”迴圈來控制每個LED燈的亮與滅。例如,設定一個迴圈從0跑到4(在程式中0也是一個值,所以設定到4即可),對應到五顆LED燈。在迴圈內部,使用digitalWrite()函數來開啟某個LED燈,然後延遲一小段時間,再關閉該LED燈。這樣,當迴圈重複執行時,LED燈就會依序亮起和熄滅,創造出跑馬燈的效果。重要的是確保迴圈可以持續地執行,這樣LED燈才會不斷地依序閃爍,形成連續的視覺效果。透過調整延遲時間和迴圈的範圍,可以創造出不同的跑馬燈模式。

實驗準備材料

  • LED x 5顆
  • 220Ω電阻 x 5顆
  • 杜邦線 x  6條
  • 麵包板 x 1片

設計邏輯想法

  1.  將5顆LED分別接線在Arduino UNO的8,9,10,11,12號腳位,使得8號燈依次亮暗至12號燈。
  2. 到12號燈亮完後,再重頭由8號燈開始亮起迴圈。

程式流程圖

 

程式設計(1)

先使用即想即設計的方式來設計程式,讓各腳位輪流亮滅,至最後12腳位後,再重頭亮起迴圈。

但是否有更簡易的方式來縮短程式碼呢?答案是有的,這時我們就要來借用這”for”迴圈指令了,如程式設計(2)說明。

				
					int LED1 = 8;    //宣告變數
int LED2 = 9;
int LED3 = 10;
int LED4 = 11;
int LED5 = 12;
int dt = 1000;

void setup() {
  // put your setup code here, to run once:
  pinMode(LED1, OUTPUT);    //設定各腳為輸出
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
  pinMode(LED4, OUTPUT);
  pinMode(LED5, OUTPUT);  
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(LED1, HIGH);   //由LED1亮至LED5
  delay(dt);
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, HIGH);
  delay(dt);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, HIGH);
  delay(dt);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, HIGH);
  delay(dt);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, HIGH);
  delay(dt);
  digitalWrite(LED5, LOW);

}

				
			

程式設計(2)

從程式設計(1)的loop中的程式碼中,大家是否有查覺到有段的程式是相同,只是這LED的號碼變了,那我們可不可用計數器的概念來讓Arduino來幫我們計算數字,請它依每次LED停留時間結束後就往下個數字算。

這時就要用到這“for”迴圈指令,它會照我們給它的設定而依次輪流執行。

程式解釋:

  1. 在一開頭我們先宣告一個整數變數為”i”。
  2. 在setup腳位設定裏頭,就可以使用這”for”迴圈指令,括號中將i一開始為LED1,中間設定i要是<=LED5,那它加1,直到LED5,大括號裏頭就是要它來執行的動作,第一次為LED1,將它設定為OUTPUT,再回到迴圈中加1,成了LED2,再將它設定為OUTPUT,直到LED5。
  3. 在loop裏頭,我們依此類推,使用for迴圈來陸續執行LED1~5的亮暗動作,這樣子就完成同程式設計(1),是否很方便呢!
				
					const byte LED1 = 8;  //宣告變數給LED1~5
const byte LED5 = 12;
int i;          //宣告一個整數i,以做為計數用
int dt = 1000;  //宣告dt為1000,做為delay time用

void setup() {
  // put your setup code here, to run once:
  for (i = LED1; i <= LED5; i++) {  //使用for迴圈指令依次將LED1~5設定為輸出
    pinMode(i, OUTPUT);
  }
}

void loop() {
  // put your main code here, to run repeatedly:
  for (i = LED1; i <= LED5; i++) {  //用for迴圈指令將LED1~5依次亮暗
    digitalWrite(i, HIGH);
    delay(dt);
    digitalWrite(i, LOW);
  }
}

				
			

實物接線

LED燈與電阻的詳細接線方式,可以參考上篇”如何用按鈕開關控制LED燈“中實物接線說明。

實物執行影片

結論

使用”for”迴圈於Arduino UNO設計跑馬燈展示了編程的簡潔與高效。透過迴圈控制LED燈的亮滅,我們能創造出吸引人的視覺效果,同時也加深了對程式結構和硬件操作的理解。這個實踐不僅鞏固了基本的編程概念,如迴圈和控制結構,也為進一步探索更複雜項目奠定了堅實基礎。最終,Arduino與”for”迴圈的結合體現了技術學習中的創造力與實用性。

給大家一個實習題,請設計當LED5燈亮滅後,再由它往回亮滅至第一顆LED1,也是用”for”迴圈設計一個霹靂燈來回跑的效果,請大家做做看。

有主意,就動手!下篇見~

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

返回頂端