<!--親の顔より見た光景-->

日々の発見を残していきます。

チャタリング防止

回路

f:id:akagi13213:20170724233857j:plain

プルダウン抵抗にしてる。

プログラム(Arduino

#define INPUT_PIN 2
#define LED_PIN   3

bool is_led_on;

bool can_fix_led;
int on_count;

void setup() {
  Serial.begin( 115200 );
  Serial.println( "Serial Start" );
  pinMode( INPUT_PIN, INPUT );
  pinMode( LED_PIN, OUTPUT );
  is_led_on = false;
  on_count = 0;
  can_fix_led = true;
}

void loop() {
  if ( digitalRead( INPUT_PIN ) == HIGH ) {
    Serial.println( "HIGH" );
    if ( can_fix_led ) {
      on_count++;
      if ( on_count > 100 ) {
        if ( is_led_on ) {
          digitalWrite( LED_PIN, LOW );
          is_led_on = false;
        }
        else {
          digitalWrite( LED_PIN, HIGH );
          is_led_on = true;
        }
        can_fix_led = false;
      }
    }
  }
  else {
    Serial.println( "LOW" );
    on_count = 0;
    can_fix_led = true;
  }
}

スイッチを押して離すとLEDの状態が切り替わる(トグル)。
もっとスリムなコードにしたい・・・