落書きノート

ふと自分が気になった事を書いてます

Arduinoをいじる

2回目の記事です。LEDをだんだん光らせる回路とプログラムです。

const int LED = 9;
int i = 0;

void setup() {
  // put your setup code here, to run once:
  pinMode(LED, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  for(i = 0; i < 255; i++){
    analogWrite(LED, i);
    delay(10);
  }

  for(i = 255; i > 0; i--){
    analogWrite(LED, i);
    delay(10);
  }
}

Jpeg

この回路にタクトスイッチを付け足した回路とプログラムです。

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() {
  // put your setup code here, to run once:
  pinMode(LED, OUTPUT);
  pinMode(BUTTON, INPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  val = digitalRead(BUTTON);

  if((val == HIGH) && (old_val == LOW)){
    state = 1 - state;
    startTime = millis();
    delay(10);
  }

  if((val == HIGH) && (old_val == HIGH)){
    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);
  }
}

Jpeg

大分明るい目にスイッチを押しておきました。スイッチを押し続けると光の度合いが変わります。