☛功能說明

利用 Arduino 開發板接腳 3~6 控制四個LED執行霹靂燈移位變化。

☛ 使用材料

Arduino UNO R3 開發板 × 1、電阻 220Ω × 4、紅色 LED × 4。

☛ 電路圖及麵包板接線圖

☛ 程式碼

const int led[]={3,4,5,6};           //LED 連接至數位接腳 3~6
int i;                               //LED 索引值
int j=0;                             //LED 索引值
int direct=0;                        //LED 移位方向控制

void setup()
{
     for(i=0;i<4;i++)
         pinMode(led[i],OUTPUT);     //設定數位接腳 3~6 為輸出模式
}

void loop()
{
     for(i=0;i<4;i++)
         digitalWrite(led[i],LOW);   //設定第 3~6 數位接腳輸出為 LOW

     digitalWrite(led[j],HIGH);      //設定第 led[j] 數位接腳輸出為 HIGH
     delay(500);                     //延遲 0.5 秒

     if(direct==0)                   //LED 在最右狀態?
     {
        if(j==3)                     //已右移至最右方?
           direct=1;                 //改為左移
        else                         //尚未移至最右方
           j=j+1;                    //繼續右移
     }
     else                            //LED 在左移狀態
     {
        if(j==0)                     //已左移至最左方?
           direct=0;                 //改為右移
        else                         //尚未移至最左方
           j=j-1;                    //繼續左移
     }
}

 

☛ 練習

㈠ 設計 Arduino 程式,控制四個 LED 執行霹靂燈閃爍移位變化。

const int led[]={3,4,5,6};           //LED 連接至數位接腳 3~6
int i;                               //LED 索引值
int j=0;                             //LED 索引值
int direct=0;                        //LED 移位方向控制

void setup()
{
     for(i=0;i<4;i++)
         pinMode(led[i],OUTPUT);     //設定數位接腳 3~6 為輸出模式
}

void loop()
{
     for(i=0;i<4;i++)
         digitalWrite(led[i],LOW);   //設定第 3~6 數位接腳輸出為 LOW

     Flashing(j);                    //LED 閃爍副程式

     if(direct==0)                   //LED 在最右狀態?
     {
        if(j==3)                     //已右移至最右方?
           direct=1;                 //改為左移
        else                         //尚未移至最右方
           j=j+1;                    //繼續右移
     }
     else                            //LED 在左移狀態
     {
        if(j==0)                     //已左移至最左方?
           direct=0;                 //改為右移
        else                         //尚未移至最左方
           j=j-1;                    //繼續左移
     }
}

void Flashing(int k)                  //LED 閃爍副程式
{
     digitalWrite(led[k],HIGH);
     delay(500);                      //延遲 0.5 秒。
     digitalWrite(led[k],LOW);
     delay(500);
     digitalWrite(led[k],HIGH);
}

 

㈡ 設計 Arduino 程式,控制四個 LED 變化,第一次點亮接腳 3 的 LED 燈,第二次點亮接腳 3、4 的 LED 燈,第三次點亮接腳 3 ~ 5 的 LED 燈,第四次點亮接腳 3~6 的 LED 燈。

const int led[]={3,4,5,6};           //LED 連接至數位接腳 3~6
int i;                               //LED 索引值
int j=1;                             //LED 點亮數目

void setup()
{
     for(i=0;i<4;i++)
         pinMode(led[i],OUTPUT);     //設定數位接腳 3~6 為輸出模式
}

void loop()
{
     for(i=0;i<4;i++)
         digitalWrite(led[i],LOW);   //設定第 3~6 數位接腳輸出為 LOW
     for(i=0;i<j-1;i++)
         digitalWrite(led[i],HIGH);  //設定第 led[i] 數位接腳輸出為 HIGH
     delay(500);                     //延遲 0.5 秒
     if(j<5)                         //四個 LED 燈是否全亮?
        j++;                         //增加點亮 LED 燈的數目
     else
        j=1;                         //LED 燈全亮,回復至最初點亮第一個 LED 燈
}