スイッチのオン・オフを読み取る
スイッチを押した時だけLEDが点灯する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #define LED_PIN 3 #define SW_PIN 4 int swVal = 0; void setup() { pinMode(LED_PIN, OUTPUT); pinMode(SW_PIN, INPUT); } void loop() { swVal = digitalRead(SW_PIN); if (swVal == HIGH) { digitalWrite(LED_PIN, HIGH); } else { digitalWrite(LED_PIN, LOW); } } |
スイッチを押すとLEDのオン・オフが反転する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #define LED_PIN 3 #define SW_PIN 4 int swVal = 0; boolean ledState = false; void setup() { pinMode(LED_PIN, OUTPUT); pinMode(SW_PIN, INPUT); } void loop() { swVal = digitalRead(SW_PIN); if (swVal == HIGH) { ledState = !ledState; } if (ledState) { digitalWrite(LED_PIN, HIGH); } else { digitalWrite(LED_PIN, LOW); } } |
スイッチを押すとLEDのオン・オフが反転する(改良版1)
スイッチがオフからオンに切り替わった時のみLEDを反転させる
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #define LED_PIN 3 #define SW_PIN 4 int swVal = 0; int swValOld = 0; boolean ledState = false; void setup() { pinMode(LED_PIN, OUTPUT); pinMode(SW_PIN, INPUT); } void loop() { swVal = digitalRead(SW_PIN); if (swVal == HIGH && swValOld == LOW) { ledState = !ledState; } swValOld = swVal; if (ledState) { digitalWrite(LED_PIN, HIGH); } else { digitalWrite(LED_PIN, LOW); } } |
スイッチを押すとLEDのオン・オフが反転する(改良版2)
スイッチのチャタリング対策を行う
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #define LED_PIN 3 #define SW_PIN 4 int swVal = 0; int swCount = 0; boolean ledState = false; void setup() { pinMode(LED_PIN, OUTPUT); pinMode(SW_PIN, INPUT); } void loop() { swVal = digitalRead(SW_PIN); if (swVal == HIGH) { swCount += 1; } else { swCount = 0; } if (swCount == 10) { ledState = !ledState; } if (ledState) { digitalWrite(LED_PIN, HIGH); } else { digitalWrite(LED_PIN, LOW); } delay(1); } |
