☛ 功能說明

使用Arduino開發板讀取類比電壓值,並顯示於Serial Monitor視窗。 電壓值可由可變電阻 ( variable resistance,簡記 VR ) 第 2 腳調整輸入,第 1 腳接 +5V 電源,第 3 腳接地。 當可變電阻旋轉向上時,電壓值增加,最大值為 +5V,當可變電阻旋轉向下時,電壓值減少,最小值為 0V。

☛ 使用材料

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

☛ 電路圖及麵包板接線圖

☛ 程式碼

const int refVolts=5;                   //使用 5V 參考電壓的 Arduino 開發板
int val;                                //數位值
float volts;                            //類比電壓

void setup()
{
     Serial.begin(9600);                //初始化串列埠,傳輸速率為 9600bps
}

void loop()
{
     val=analogRead(0);                 //讀取 A0 類比電壓
     volts=(float)val*refVolts/1024;    //將數位值轉成類比值
     Serial.print("Voltage=");          //印出 Voltage=
     Serial.print(volts,2);             //印出類比電壓值
     Serial.println("V");               //印出 V
     delay(1000);                       //延遲 1 秒
}

 

☛ 練習

⑴ 設計 Arduino 程式,使用 Arduino 開發板讀取兩個類比電壓值,並顯示於 Serial Monitor 視窗。

const int refVolts=5;                   //使用 5V 參考電壓的 Arduino 開發板
int val1,val2;                          //數位值 val1,val2
float volts1,volts2;                    //類比電壓 volts1,volts2

void setup()
{
     Serial.begin(9600);                //初始化串列埠,傳輸速率為 9600bps
}

void loop()
{
     val1=analogRead(0);                //讀取 A0 類比電壓
     val2=analogRead(1);                //讀取 A1 類比電壓
     volts1=(float)val1*refVolts/1024;  //將 val1 數位值轉成類比值
     volts2=(float)val2*refVolts/1024;  //將 val2 數位值轉成類比值
     Serial.print("Voltage1=");         //印出 Voltage1 與 Voltage2 的電壓值
     Serial.print(volts1,2);            
     Serial.print("V / ");
     Serial.print("Voltage2=");
     Serial.print(volts2,2);
     Serial.println("V");               
     delay(1000);                       //延遲 1 秒
}

 

⑵ 設計 Arduino 程式,使用 Arduino 開發板讀取類比電壓值,並顯示於 Serial Monitor 視窗,當類比電壓值大於 2.5V 則 LED 亮,否則 LED 不亮。

const int refVolts=5;                   //使用 5V 參考電壓的 Arduino 開發板
int led=7;                              //LED 連接數位接腳 7
int val;                                //數位值
float volts;                            //類比電壓

void setup()
{
     Serial.begin(9600);                //初始化串列埠,傳輸速率為 9600bps
     pinMode(led,OUTPUT);               //設定數位接腳 7 為輸出模式
}

void loop()
{
     val=analogRead(0);                 //讀取 A0 類比電壓
     volts=(float)val*refVolts/1024;    //將數位值轉成類比值
     Serial.print("Voltage=");          //印出 Voltage=
     Serial.print(volts,2);             //印出類比電壓值
     Serial.println("V");               //印出 V
     if(volts>=2.5)
        digitalWrite(led,HIGH);         //電壓大於 2.5V 點亮 LED
     else
        digitalWrite(led,LOW);          //電壓小於 2.5V 關閉 LED
     delay(1000);                       //延遲 1 秒
}