☛ 功能說明

使用 Arduino 開發板控制 LED 單燈右移,同時將 LED 目前狀態傳送至電腦中。 當 LED 亮時,狀態為邏輯 1 ;當 LED 暗時,狀態為邏輯 0。 將 Arduino 與電腦連接,然後將程式上傳至 Arduino 開發板,再開啟 Serial Monitor 視窗來顯示所傳送的內容,如下圖所示。

☛ 使用材料

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

☛ 電路圖及麵包板接線圖

☛ 程式碼

int led[]={3,4,5,6};                //數位接腳 3~6 連接至四個 LED
int i=0,j;                          //LED 編號

void setup()
{
     Serial.begin(9600);            //初始化序列埠, 設定鮑率為 9600bps
     for(int i=0;i<4;i++)
         pinMode(led[i],OUTPUT);    //設定數位接腳 3~6 為輸出模式
}

void loop()
{
     Serial.print("LED = ");        //顯示
     for(j=0;j<4;j++)
     {
         if(j==i)
            Serial.print(" 1 ");    //LED 亮,則顯示 1
         else
            Serial.print(" 0 ");    //LED 暗,則顯示 0
     }
     Serial.println();              //換下一行
     digitalWrite(led[i],HIGH);     //點亮第 i 個 LED
     delay(1000);                   //延遲 1 秒
     digitalWrite(led[i],LOW);      //關閉第 i 個 LED
     i++;                           //右移
     if(i>3)                        //已經移位至最右?
        i=0;                        //重設初值
}

 

☛ 練習

㈠ 設計 Arduino 程式,使用 Arduino 開發板控制 LED 單燈左移,同時將 LED 目前狀態傳送至電腦中。 當 LED 亮時,狀態為 HIGH;當 LED 暗時,狀態為 LOW。

int led[]={3,4,5,6};                //數位接腳 3~6 連接至四個 LED
int i=3,j;                          //LED 編號

void setup()
{
     Serial.begin(9600);            //初始化序列埠, 設定鮑率為 9600bps
     for(int i=0;i<4;i++)
         pinMode(led[i],OUTPUT);    //設定數位接腳 3~6 為輸出模式
}

void loop()
{
     Serial.print("LED = ");        //顯示
     for(j=3;j>=0;j--)
     {
         if(j==i)
            Serial.print(" 1 ");    //LED 亮,則顯示 1
         else
            Serial.print(" 0 ");    //LED 暗,則顯示 0
     }
     Serial.println();              //換下一行
     digitalWrite(led[i],HIGH);     //點亮第 i 個 LED
     delay(1000);                   //延遲 1 秒
     digitalWrite(led[i],LOW);      //關閉第 i 個 LED
     i--;                           //左移
     if(i<0)                        //已經移位至最左?
        i=3;                        //重設初值
}

 

㈡ 設計 Arduino 程式,使用 Arduino 開發板控制 LED 單燈閃爍左移,同時將 LED 目前狀態傳送至電腦中。 當 LED 亮時,狀態為 HIGH;當 LED 暗時,狀態為 LOW。

int led[]={3,4,5,6};                //數位接腳 3~6 連接至四個 LED
int i=3,j;                          //LED 編號

void setup()
{
     Serial.begin(9600);            //初始化序列埠, 設定鮑率為 9600bps
     for(int i=0;i<4;i++)
         pinMode(led[i],OUTPUT);    //設定數位接腳 3~6 為輸出模式
}

void loop()
{
     Serial.print("LED = ");        //顯示
     for(j=3;j>=0;j--)
     {
         if(j==i)
            Serial.print(" 1 ");    //LED 亮,則顯示 1
         else
            Serial.print(" 0 ");    //LED 暗,則顯示 0
     }
     Serial.println();              //換下一行
     flushing();                    //LED 閃爍副程式
     i--;                           //左移
     if(i<0)                        //已經移位至最左?
        i=3;                        //重設初值
}

void flushing()                     //LED 閃爍副程式
{
     for(int k=0;k<2;k++)
     {
         digitalWrite(led[i],HIGH);
         delay(250);
         digitalWrite(led[i],LOW);
         delay(250);
      }
}