ebisukeプログラミング初心者脱出黙示録

30歳を過ぎてから始めたプログラミングと競プロの記録。Pythonで取り組んでいます。Arduinoで電子工作も

初心者のArduinoプログラミング入門【LEDの明るさ制御編】

今回もArduino UNOでプログラミング学習をしていきたいと思います。



この記事ではLEDを使用して、時間とともにLEDの明るさを変化させることが目標です。

目標

ブレッドボードと抵抗(1kΩ)、LEDを使って回路を作成します。

時間がたつにつれて、徐々にLEDが明るくなり、最も明るくなるとぱっと消える制御が目標です。

回路図

f:id:ebisuke33:20210901215834j:plain

今回、アナログ出力で明るさを制御するつもりです。

そのため~マークがついているピンを選ぶ必要があり、9ピンを選びました。


f:id:ebisuke33:20210901215855j:plain

ピン9とLEDを、LEDの反対側は1kΩの抵抗を通じてGNDに接続しています。

スケッチ

// ピン9をLEDに割り付け
const int pinLed = 9;

void setup() {
  // ピン9を出力に
  pinMode(pinLed, OUTPUT);

}

void loop() {
  // iを0~255までループさせる
  for(int i=0; i<256; i++){
    // iの値によって明るさを設定
    analogWrite(pinLed,i);
    // 20msec待つ
    delay(20);
  }

}

9番ピンをLEDの出力に設定します。

analogWrite関数でピンにかかる電圧をアナログ的に制御しました。

i = 0のときは0Vで、i = 255のとき5V出力されます。

for文によってiを0から255まで20msecごとに設定することで、LEDの明るさが周期的に変わるはず!です。

動作確認

時間がたつと徐々にLEDの明るさが変わりました!

明るくなるとぱっと消えて、また明るくなっています。


www.youtube.com

まとめ

アナログ出力を使ってLEDの明るさを制御する目標を達成できました。

単純なONやOFFだけでなく微妙な加減を行うことがおもしろかったです!




この記事で使用しているArduinoは elegooというメーカの互換品です。

部品もついてきて安価なので学習用に購入しました。