チャタリング防止
回路
プルダウン抵抗にしてる。
プログラム(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の状態が切り替わる(トグル)。
もっとスリムなコードにしたい・・・