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

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

【Arduino】タクトスイッチでLED輝度を変更

こんな回路。
f:id:akagi13213:20170423160244j:plain

LEDはアナログ入力ピンで繋がってる。

こんな状態にする。
f:id:akagi13213:20170423160719p:plain

ソースコード led_change.ino】

#define STATUS_ELEMENT ( 3 )
void setup()
{
  pinMode( 1, INPUT );
  pinMode( 9, OUTPUT );
  pinMode( 10, OUTPUT );
  pinMode( 11, OUTPUT );
}
void loop()
{
  int switch_status = 0;  // スイッチの状態
  int i = 0;
  int j = 0;
  int analog_value = 0;  // LED輝度値
  for ( ;; ) {
    delay( 400 ); // チャタリング防止
    if ( digitalRead( 1 ) == LOW ) {
      switch_status++;
      if ( switch_status > STATUS_ELEMENT ) {
        switch_status = 0;
      }
      // スイッチがONになるまで待機
      while ( digitalRead( 1 ) == LOW ) {
        ;
      }
    }
    switch ( switch_status ) {
      case 0:  // 状態1
        analog_value = 0; break;
      case 1:  // 状態2
        analog_value = 50; break;
      case 2:  // 状態3
        analog_value = 100; break;
      case 3:  // 状態4
        analog_value = 150; break;
      default:
        analog_value = 0; break;
    }
    // 9番ピンから11番ピンに指定した電圧を入力
    for ( j = 9; j <= 11; j++ ) {
      analogWrite( j, analog_value );
    }
  }
}