見出し画像

Arduino 1つのタクトスイッチでLEDの明るさを設定とオンオフ

Arduinoをはじめよう 第4版のExample5-2の実習です。

回路図です。

コードです。

// ボタンを押すとLEDが点灯し、
// ボタンから指を離した後も点いたままにする
// バウンシングを解消する簡単な方法を取り入れる
// ボタンを押したままにすると明るさが変化する

const int LED = 9;
const int BUTTON = 7;

int val = 0;
int old_val = 0;
int state = 0;

int brightness = 128;
unsigned long startTime = 0;

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

void loop() {
  val = digitalRead(BUTTON);

  // 変化があるかどうかチェック
  if ((val == HIGH) && (old_val == LOW)) {
    state = 1 - state;
    startTime = millis();
    delay(10);
  }

  // ボタンが押し続けられているかをチェック
  if ((val == HIGH) && (old_val == HIGH)) {
    // 500ms以上押されているか?
    if (state == 1 && (millis() - startTime) > 500) {
      brightness++;
      delay(10);
      if (brightness > 255) {
        brightness = 0;
      }
    }
  }

  old_val = val;

  if (state == 1) {
    analogWrite(LED, brightness);
  } else {
    analogWrite(LED, 0);
  }

}

いいなと思ったら応援しよう!

kubota78
よろしければ応援お願いします! 励みになります!

この記事が参加している募集