【小学生向けプログラミング】初心者キットで作る「呼吸するライト」|LEDがゆっくり明るくなって消える装置

はじめての プログラミング工作

画面の中じゃなくて、本物のLEDが動くプログラミング

学校でScratchはやってるんだけど、もう少し違うプログラミングに挑戦したいんだ。何かおすすめの最初の一歩ってある?

最高の質問だね。今日は「呼吸するライト」を紹介するよ。LEDがゆっくり明るくなって、ゆっくり消える、本当に呼吸してるみたいに見えるんだ。プログラム1ファイルだけで作れて、Scratchから一歩進む最初の作品にぴったりなんだよ。

今回は、Scratchをやったことがある小学生のお子さんに向けて、Arduino初心者キットだけで作れる「呼吸するライト」を紹介します。

LEDがゆっくり明るくなって、ゆっくり消える、その繰り返しで本当に呼吸しているように見える装置です。配線は2か所だけ、プログラムも20行ほどで作れるので、Scratchから次のステップに進む最初の作品としておすすめです。

この記事で作るもの
  1. LEDがゆっくり明るくなる (約2秒)
  2. 一番明るくなったあと、ゆっくり消える (約2秒)
  3. これを延々と繰り返す
  4. 速さもプログラムで自由に変えられる

使う部品

部品役割個数
Arduino UNO R3装置の頭脳1
LED呼吸する部分1
抵抗330ΩLEDを保護1
ブレッドボード配線をする台1
ジャンパーワイヤーつなぐ線2本

部品はたった5種類だけ。電子工作の中でも少ない部品数で試せるレベルです。

完成までの流れ

急がず、1時間半くらいかけて取り組むとちょうど良いボリュームです。

flowchart TD A["Step1
配線する"] --> B["Step2
IDEを開く"] B --> C["Step3
プログラム
を書き込む"] C --> D["Step4
速さを変えて
遊ぶ"]

配線図 (とてもシンプル)

        a b c d e
       +─────────+
[+]rail| . . . . . | ← 使わない
[-]rail| . . . . . | ← GND (Arduino GND から)
       +─────────+
row 5  | X . . . . | ← 330Ω 上足 (D9 から)
row 6  | X . . . . | ← 330Ω 下足+LED アノード
row 8  | X . . . . | ← LED カソード ([-]rail)
       +─────────+

部品同士のつながり

Arduino       LED + 抵抗
  D9   ────→   330Ω → LED アノード
  GND  ←────   LED カソード

LEDには向きがあります。長い足がアノード (プラス側)、短い足がカソード (マイナス側) です。間違えるとLEDが光らないので注意しましょう。

プログラム

Arduino IDEに次のスケッチをコピーして、書き込みボタンを押すだけです。

#define LED_PIN 9

void setup() {
  pinMode(LED_PIN, OUTPUT);
}

int speedMs = 8;

void loop() {
  // ゆっくり明るくする (0 → 255)
  for (int brightness = 0; brightness <= 255; brightness++) {
    analogWrite(LED_PIN, brightness);
    delay(speedMs);
  }

  // ゆっくり暗くする (255 → 0)
  for (int brightness = 255; brightness >= 0; brightness--) {
    analogWrite(LED_PIN, brightness);
    delay(speedMs);
  }
}

プログラムが何をしているか

プログラムを見てみると、たった2つのことしかしていません。

プログラムの中身
「0から255まで少しずつ明るくする」と「255から0まで少しずつ暗くする」を、ずっと繰り返しているだけ。

この明るさ調整は、高速にON/OFFを繰り返してその割合を変える「PWM」という仕組みでArduinoが実現してくれます。analogWriteに0〜255の数字を渡すと、その割合に応じて明るさが変わります。

プログラムの動きを図にすると

flowchart TD A[Start] --> B[明るさ0] B --> C[8ms待つ] C --> D["明るさ+1"] D --> E{"255に
なった?"} E -->|No| C E -->|Yes| F[8ms待つ] F --> G[明るさ-1] G --> H{"0に
なった?"} H -->|No| F H -->|Yes| B

速さを変えて遊んでみよう

動いたら、ここからが楽しい所です。プログラムの数字を1か所変えるだけで、呼吸の速さが変わります。

変えて試してみよう
  1. 「speedMs = 8」を「speedMs = 20」に → ゆっくり呼吸
  2. 「speedMs = 8」を「speedMs = 2」に → 速い呼吸
  3. 明るさの最大を「255」から「100」に → 暗めの優しい光
  4. 明るくする時と暗くする時で別の変数を使い、違う速度にする
なんでLEDがゆっくり光るの? 普通はピカッと付くだけだよね?

本当はLEDは点くか消えるかの2択なんだ。でも「すごく速く点いたり消えたりを繰り返す」と、人間の目には「ちょっと明るい」「もっと明るい」と見える。それをPWMっていう仕組みで、Arduinoがやってくれてるんだよ。

自由研究にするときのレポート構成

動いたら、レポートにまとめましょう。プログラミング自由研究としては、「自分が何を変えて、どうなったか」を残すのが大事です。

レポートの構成 (5項目)
  1. 研究のきっかけ (なぜLEDをゆっくり光らせたかったか)
  2. 配線図とプログラム (この記事の図でOK)
  3. delayの数字を変えて何が起きたか (表にすると良い)
  4. PWMの仕組みを自分の言葉で説明
  5. 次にやってみたいこと

改造のアイデア

発展アイデア
  1. 3つのLEDを順番に呼吸させる (波みたいに広がる)
  2. RGB LEDを使って、色も一緒に変える (赤→紫→青)
  3. ボタンを押すと呼吸の速さが切り替わる
  4. 明るさセンサーで、暗い時だけ呼吸する寝室ライトに

まとめ

今回は、Scratchから一歩進む最初の作品として「呼吸するライト」を紹介しました。配線2か所、プログラム20行で、ScratchではできなかったLEDが本当に光る体験ができます。

大切なのは、完成したら数字を変えて遊んでみることです。プログラムを書き換えると装置の動きが変わる、という体験こそが、プログラミング学習でいちばん大事な気付きになります。

他にも初心者キットだけで作れるプログラミング作例を別の記事で紹介しているので、興味があれば見てみてね。