☛ 功能說明

使用Arduino開發板讀取類比電壓值0~5V,並以10個LED顯示對應的類比電壓值,每個LED代表0.5V電壓刻度。 例如:類比電壓 3V,則點亮 6 個 LED。

☛ 使用材料

Arduino UNO R3 開發板 × 1、可變電阻 20KΩ × 1、電阻 220Ω × 10、LED× 10。

☛ 電路圖及麵包板接線圖

☛ 程式碼

const int led[10]={2,3,4,5,6,7,8,9,10,11}; //數位接腳 2~11 連接 LED
int i;                                     //索引值
int val;                                   //類比值

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

void loop()
{
     val=analogRead(0);                    //讀取類比值
     val=map(val,0,1023,0,9);              //將 0~1023 類比值轉換成 0~9
     for(i=0;i<=val;i++)                   //設定編號 0~val 的 LED 亮
         digitalWrite(led[i],HIGH);
     for(i=val+1;i<10;i++)                 //設定編號 val+1~9 的 LED 暗
         digitalWrite(led[i],LOW);
}

 

☛ 練習

⑴ 設計 Arduino 程式,使用 Arduino 開發板讀取類比電壓值 0~5V,並以 10 個 LED ( 排 ) 閃爍顯示對應的類比電壓值,每個 LED 代表 0.5V 電壓刻度。

const int led[10]={2,3,4,5,6,7,8,9,10,11}; //數位接腳 2~11 連接 LED
int i;                                     //索引值
int val;                                   //類比值

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

void loop()
{
     val=analogRead(0);                    //讀取類比值
     val=map(val,0,1023,0,9);              //將 0~1023 類比值轉換成 0~9
     flushLED();                           //LED 閃爍顯示副程式
     for(i=val+1;i<10;i++)                 //設定編號 val+1~9 的 LED 暗
         digitalWrite(led[i],LOW);
}

void flushLED()
{
     for(int j=0;j<2;j++)
     {
         for(i=0;i<=val;i++)               //設定編號 0~val 的 LED 亮
             digitalWrite(led[i],HIGH);
         delay(100);
         for(i=0;i<=val;i++)
             digitalWrite(led[i],LOW);     //設定編號 0~val 的 LED 暗
         delay(100);
     }
}

 

⑵ 設計 Arduino 程式,使用 Arduino 開發板讀取類比電壓值 0~5V,並以 10 個 LED ( 排 ) 單燈顯示對應的類比電壓值,每個 LED 代表 0.5V 電壓刻度。

const int led[10]={2,3,4,5,6,7,8,9,10,11}; //數位接腳 2~11 連接 LED
int i;                                     //索引值
int val;                                   //類比值

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

void loop()
{
     val=analogRead(0);                    //讀取類比值
     val=map(val,0,1023,0,9);              //將 0~1023 類比值轉換成 0~9
     for(i=0;i<10;i++)                     //設定編號 0~9 的 LED 暗
         digitalWrite(led[i],LOW);
     digitalWrite(led[val],HIGH);          //點亮對應的 LED
}