利用按鈕開關控制LED亮滅
完成以Arduino控制LED亮滅的實驗後,我們增加一個按鈕開關,並且繼續將程式和電路擴充如下:
1. 當按鈕開關被按下時,開關兩端短路,因此LOW信號會被送到PIN
8腳位。
2. 由於PIN 8被設定為 “INPUT_PULLUP”, 在按鈕開關開路的情況時,也就是說PIN 8空腳沒有連接至任何電壓位準時,PIN
8的輸入狀態應是High。
3. Arduino 的PIN 13接LED。
void setup()
{
pinMode(13, OUTPUT);
pinMode(8, INPUT_PULLUP);
}
void loop()
{
if (digitalRead(8)==LOW)
{
digitalWrite(13, HIGH);}
else
{
digitalWrite(13, LOW);}
}
|
當pinMOde()參數被設定為INPUT_PULLUP時,Arduino這個PIN在未接外部迴路時,都會在HIGH的狀態。
因此,下面這電路的按鈕開關不按下時,PIN 8因為被設定為INPUT_PULLUP,此時其電壓值為HIGH,所以不會執行 “digitalWrite(13,
HIGH)” 的敘述,而且選擇執行 " digitalWrite(13, LOW)" ,所以這時候LED不亮:
按鈕開關按下時,開關短路,GND的電壓輸入到PIN 8,此時LED被點亮:
利用可變電阻控制LED的亮度
1. Arduino的A0接可變電阻。A0是類比輸入,其輸入值的範圍介於0-1023之間。
如果類比接腳接收到的電壓是0V,轉換的數值是0;如果接收到的電壓是5V,轉換的數值是1023;如果接收到的電壓是2.5V,轉換的數值是511。
如果類比接腳接收到的電壓是0V,轉換的數值是0;如果接收到的電壓是5V,轉換的數值是1023;如果接收到的電壓是2.5V,轉換的數值是511。
int potValue=0;
byte val=0;
void setup()
{
pinMode(11, OUTPUT); // LED 腳位
}
void loop()
{
potValue=analogRead(A0);
//val=map(potValue, 0, 1023, 0, 255); //類比輸入:0-1023之間,而類比輸出:0-255
val=potValue/4; //1024/4=255
analogWrite(11, val);
}
|
沒有留言:
張貼留言