初心者キットで作る「気分メーターランプ」


今回は、初心者キットを買ったけどLチカの先に進めず止まっている方に向けて、ELEGOOのR3スターターキットに入っている部品だけで作れる「気分メーターランプ」の作り方を紹介したいと思います。
使う部品はポテンショメータ(つまみ)1個とRGB LED1個だけ。それでも、つまみを回すと青→水色→緑→黄→オレンジ→赤と色が連続で変化する、見ていて飽きないガジェットになります。
初心者の方も、Lチカから次の一歩を踏み出したい方も、ぜひ最後までご覧ください。
作るもののイメージ
まずは、これから作る気分メーターランプの全体像を見ていきましょう。つまみを左いっぱいに回すと「青」、真ん中で「緑〜黄」、右いっぱいで「赤」になります。会議前は青で落ち着き、締切日は赤、みたいに使うとちょっと楽しいガジェットです。
仕組みはとてもシンプルで、つまみで0〜1023の値を読み取り、その値からRGB LEDの赤・緑・青の明るさを計算してPWMで出力する、それだけです。
全体の接続イメージ
部品同士のつながりを俯瞰すると、下の図のようになります。つまみが入力、RGB LEDが出力、Arduinoが司令塔という役割分担です。
[入力]
┌──────────────┐
│ ポテンショ │
│ メータ │
└──────┬───────┘
│ A0
▼
┌──────────────┐
│ Arduino UNO │ ← 司令塔
└─┬───┬───┬────┘
D9│ D10│ D11│
▼ ▼ ▼
┌────────────────┐
│ RGB LED │
│ (R / G / B) │
└────────────────┘
[出力]
必要な物
用意するのは下の5つです。すべてELEGOOのR3スターターキットに入っているので、追加購入は不要です。
- Arduino UNO R3 (本体)
- ブレッドボード
- ポテンショメータ(可変抵抗、つまみ部品)1個
- RGB LED 1個 (4本足、共通カソードタイプ)
- 330Ωの抵抗3本、オスオスのジャンパー線数本

抵抗はRGB LEDの3本(R/G/B)それぞれに1本ずつ必要です。LEDは抵抗なしでつなぐと壊れる原因になるので、必ず3本セットで用意してください。
配線手順
続いて、ブレッドボード上で配線を組んでいきます。Arduinoの電源を抜いた状態で進めてください。配線中の通電は部品を壊す原因になります。
ブレッドボード全体図
ブレッドボード上の挿し位置は下の図の通りです。左の電源レールは使いません(GNDだけ右の青レールを使います)。
a b c d e
+─────────+
[+]rail| . . . . . | ← 未使用
[-]rail| . . . . . | ← GND (Arduino GND)
+─────────+
row 5 | X . . . . | ← ポテンショ 左足 (5V)
row 6 | X . . . . | ← ポテンショ 中足 (A0)
row 7 | X . . . . | ← ポテンショ 右足 (GND)
+─────────+
row 11 | X . . . . | ← 330Ω(R) 上 (D9)
row 12 | X X . . . | ← 330Ω(R)下+RGB Rピン
row 14 | X . . . . | ← 330Ω(G) 上 (D10)
row 15 | X X . . . | ← 330Ω(G)下+RGB Gピン
row 16 | X . . . . | ← RGB 共通カソード(GND)
row 17 | X . . . . | ← 330Ω(B) 上 (D11)
row 18 | X X . . . | ← 330Ω(B)下+RGB Bピン
+─────────+
記号: X=部品を挿す穴, .=空き穴
注意: 同じ row の a-e は内部で連結 (5穴 1組)
ポテンショメータ部分の配線
ポテンショメータは3本足で、両端が電源(5V/GND)、真ん中がアナログ出力です。中足の電圧をArduinoのA0で読み取ります。
ポテンショメータ (3 線) [5V] ─→ 左足 [A0] ←─ 中足 (つまみで変化) [GND] ─→ 右足


RGB LED部分の配線
RGB LEDの3本(R/G/B)はそれぞれ独立した足なので、3本とも別の330Ωを通してデジタルピンに繋ぎます。長い足(共通カソード)はそのままGNDへ落とします。
[D9] ─→ 330Ω ─→ Rピン ┐
[D10] ─→ 330Ω ─→ Gピン ├ RGB LED
[D11] ─→ 330Ω ─→ Bピン ┘
│
共通カソード(長足)
│
▼
[GND]
配線時の注意点
RGB LEDで一番つまずきやすいのは、4本ある足のうちどれが共通カソードか分からなくなることです。よく見ると一番長い足が共通カソードで、その隣がR、反対側がBになっているタイプが一般的です。
もし色を点けてみて「赤のつもりが緑になる」ような違和感があれば、RピンとGピンの場所が逆の可能性が高いので、配線を1本ずつ抜き差しして確認しましょう。
プログラム
配線ができたら、続いてArduinoに書き込むプログラムを準備します。今回のコードはとてもシンプルで、つまみの値を0〜1023で読み取り、その値から色を計算してPWM出力するだけです。
コード全文
// 気分メーターランプ
// つまみ(A0)を回すと、RGB LEDの色が青→水色→緑→黄→赤に変化する。
const int POT_PIN = A0; // ポテンショメータの中足
const int R_PIN = 9; // RGB LED の赤
const int G_PIN = 10; // RGB LED の緑
const int B_PIN = 11; // RGB LED の青
void setup() {
pinMode(R_PIN, OUTPUT);
pinMode(G_PIN, OUTPUT);
pinMode(B_PIN, OUTPUT);
}
void loop() {
int v = analogRead(POT_PIN); // 0〜1023
int hue = map(v, 0, 1023, 0, 255); // 0〜255 に圧縮
int r, g, b;
if (hue 85) {
// 青(0,0,255) → 緑(0,255,0)
r = 0;
g = map(hue, 0, 84, 0, 255);
b = map(hue, 0, 84, 255, 0);
} else if (hue 170) {
// 緑(0,255,0) → 黄(255,255,0)
r = map(hue, 85, 169, 0, 255);
g = 255;
b = 0;
} else {
// 黄(255,255,0) → 赤(255,0,0)
r = 255;
g = map(hue, 170, 255, 255, 0);
b = 0;
}
analogWrite(R_PIN, r);
analogWrite(G_PIN, g);
analogWrite(B_PIN, b);
delay(20);
}
プログラムの動作フロー
このプログラムはずっとloopを回し続け、毎回つまみの値を読み取って色を計算しています。文字で書くと分かりにくいので、フローチャートにしてみると下のようなイメージになります。
ポイントは、色相を3つの区間に分けて、それぞれで赤・緑・青の明るさをmap関数で滑らかに変化させているところです。これで、つまみを回した分だけ色が連続的に変わって見えます。
書き込みの手順
- USBケーブルでArduinoとPCを接続する
- Arduino IDEで「ツール」→「ボード」→「Arduino UNO」を選ぶ
- 「ツール」→「シリアルポート」でArduino UNOと表示されるポートを選ぶ
- 上のコードをコピーしてIDEに貼り付ける
- 「→」(マイコンボードに書き込む)ボタンを押す
書き込みが完了したら、つまみを左いっぱいから右いっぱいまでゆっくり回してみてください。RGB LEDの色が連続的に変化すれば成功です。
うまく動かない時のチェックポイント
初心者の方が一度はハマるポイントをまとめておきました。下のどれかに当てはまることが多いので、上から順にチェックしてみてください。
- RGB LEDの長足(共通カソード)がGNDに繋がっているか
- R/G/Bの3本にそれぞれ330Ωが直列で入っているか
- ポテンショメータの中足がA0に繋がっているか(両端は5V/GND)
- D9/D10/D11はPWM対応ピン。違うピンにすると色が変化しない場合がある
- つまみを動かしても全く色が変わらないなら、ポテンショの両端が両方ともGNDになっていないか確認


もっと面白くするアイデア
基本動作ができたら、少しコードを足すだけで遊びの幅が広がります。
- 「気分ログ」を取る: Serial.printlnでhueの値を毎秒出力し、1日分のグラフを描く
- 「自動呼吸」モード: つまみが動いていない時は色がゆっくり脈打つように明滅させる
- 「気分しきい値アラーム」: 赤側にしばらく振り切れたら、パッシブブザーを短く鳴らす
どれもキットの中の部品だけで実装できる範囲なので、慣れてきたら挑戦してみてください。
まとめ
今回は、初心者キットを買ったけれどLチカの先に進めず止まっている方に向けて、ポテンショメータとRGB LEDだけで作れる「気分メーターランプ」を紹介してきました。
使う部品はたった2種類ですが、analogReadでアナログ入力を読む方法、map関数で値の範囲を変換する方法、analogWriteでPWMの明るさを制御する方法と、Lチカの次に覚えるべき定番テクニックがひと通り詰まっているのがこの工作のいいところです。
今後も、初心者キットの部品で作れる小さなガジェット作品を紹介していく予定ですので、そちらも合わせてご覧ください。

今日から始める電子工作 

