Arduinoをはじめよう Example 03 C

本日もデバウンシング。
そしてデバウンシング最後です。

const int LED = 13;
const int BTN = 7;

int val = 0;
int stat = 0;
int old = 0;

void setup() {
  pinMode(LED, OUTPUT);
  pinMode(BTN, INPUT);
}

void loop() {
  val = digitalRead(BTN);
  
  if (old == LOW && val == HIGH) {
    stat = 1 - stat;
    delay(10);
  }
  
  old = val;
  
  if (stat == 1) {
    digitalWrite(LED, HIGH);
  } else {
    digitalWrite(LED, LOW);
  }
}

ほんの少し待つことで、
スイッチの誤作動が防げます。

delay(10);

でもまだ10回に1回ぐらい
失敗してる。