はじめに:光の三原色をプログラミングで操ろう
プログラミング学習において、画面の中だけで動くゲームやアニメーションを作るのも楽しいですが、実際に手元にあるロボットやデバイスが光ったり動いたりするのは、格別の面白さがあります。今回のテーマは「LEDの色の混ぜ合わせ」です。
皆さんは「光の三原色」という言葉を聞いたことがあるでしょうか? 赤(Red)、緑(Green)、青(Blue)の3つの光を組み合わせることで、この世のほぼすべての色を表現できるという原理です。この頭文字をとって「RGB」とも呼ばれます。
本記事では、スクラッチを使ってロボット(クムクム)の目の部分にあるLEDを制御し、これらRGBの要素をプログラム上で混ぜ合わせる方法を学びます。単に命令ブロックを並べるだけでなく、プログラムが実行される「順序」や「タイミング」がいかに重要かという、プログラミング的思考の基礎も一緒に身につけていきましょう。
学習の概要:今回のゴール
この記事を通して、以下のことができるようになります。
RGB各色の個別制御: 赤・緑・青のLEDを自在にON/OFFする。
色の合成(混色): 2色以上を同時に点灯させ、黄色や水色、紫色などを作る。
タイミングの制御: 「~秒待つ」ブロックを使い、色の変化を目で追えるようにする。
効率的なコーディング: 複製機能などを使い、効率よくプログラムを作成する。
特に重要なのは「色の合成」です。絵の具で赤と緑を混ぜると茶色っぽく濁ってしまいますが、光の場合は「黄色」になります。これは「加法混色」と呼ばれる光特有の性質です。プログラミングを通して、この理科的な現象も体感していきましょう。
詳細解説:スクラッチによるLED混色プログラミング
それでは、具体的な手順とプログラムのロジックについて解説します。
1. 基本の点灯テスト(赤・緑・青)
まずは、基本となる3原色が正しく動作するか確認します。 スクラッチのブロックパレットから、各色のLEDを「ON(点灯)」にするブロックと「OFF(消灯)」にするブロックを用意します。
赤色: 「赤色LEDをON」→ 点灯確認 → 「赤色LEDをOFF」
緑色: 同様にON/OFFを確認
青色: 同様にON/OFFを確認
この段階では、それぞれの色が単独で光ることを確認するだけですが、ハードウェア(ロボット)の状態確認として非常に重要な工程です。
2. 2色を混ぜて新しい色を作る
ここからが本題です。1つの色が消える前に、次の色を点灯させることで、色が混ざって見えます。
赤 + 緑 = 黄色
赤色をONにした状態で、続けて緑色をONにします。すると、LEDは鮮やかな「黄色(イエロー)」に変化します。
プログラムの流れ:
赤色LEDをON
緑色LEDをON(赤はついたまま)
(結果:黄色になる)
赤と緑をOFFにして消灯
赤 + 青 = 紫色(マゼンタ)
同様に、赤と青を組み合わせると、紫のような色、正確には「マゼンタ」と呼ばれる色になります。
緑 + 青 = 水色(シアン)
緑と青を組み合わせると、明るい青緑色、「シアン」になります。
3. 全色点灯とプログラムの工夫
3色すべて(赤・緑・青)を同時に点灯させるとどうなるでしょうか? 光の三原色の原理では、すべてが重なると「白」になります。 実際にプログラムする際は、以下のような流れを作ります。
赤 ON
緑 ON(ここで黄色)
青 ON(ここで白)
順次 OFFにしていく
4. 「待つ」ブロックの重要性
動画内の解説でも特に強調されていたのが、「制御(イベント)」カテゴリーにある「1秒待つ」ブロックの活用です。
コンピュータの処理速度は人間が思うよりも遥かに高速です。例えば、「赤ON → すぐに緑ON」という命令をウェイト(待ち時間)なしで実行すると、人間の目には「最初から黄色が点灯した」ように見えてしまいます。あるいは、「点灯 → すぐ消灯」とすると、一瞬すぎて光ったことすら認識できない場合もあります。
色の変化の過程(赤から黄色へ変わる瞬間など)を演出したい場合は、必ず命令の間に「1秒待つ」などの時間を挟む必要があります。これにより、プログラムの実行順序と、実際に起こる現象の因果関係を明確に理解できるようになります。
注意点とトラブルシューティング
プログラミングを進める上で、初心者が陥りやすいポイントをまとめました。
色の変化が早すぎて見えない
前述の通り、プログラムは一瞬で処理されます。「色が変わっているはずなのに変わって見えない」という場合は、ブロックの間に「待ち時間」が入っているか確認してください。0.1秒や0.5秒など、短い時間でも挙動は大きく変わります。
ブロックが散らかってしまう
試行錯誤していると、スクリプトエリア(プログラムを作る場所)に不要なブロックが散乱しがちです。不要になったブロックは、左側のコードパレット側にドラッグ&ドロップして削除し、常に整理整頓を心がけましょう。バグ(不具合)を防ぐ第一歩です。
同じ処理を何度も書かない(複製の活用)
似たような処理(例:赤と緑の混色を作ったあとに、赤と青の混色を作るなど)を行う場合、一からブロックを探して並べるのは手間がかかります。 既存のブロックの塊を右クリックし、「複製」を選ぶことで、設定済みのブロックをコピーできます。これを活用することで、プログラミングの効率が格段に上がります。
応用への道:この技術は何に使われている?
今回学んだ「RGB LEDの制御」は、私たちの身の回りのあらゆるデジタル機器に応用されています。
フルカラーLEDディスプレイ
街で見かける巨大なビジョンや、あなたが今見ているスマートフォンの画面、パソコンのモニターも、実はこの「赤・緑・青」の小さな点の集まりでできています。 今回のプログラムのように、それぞれの色の強さを細かく調整することで、何百万通りもの色を表現し、写真や動画を映し出しているのです。
インテリアやイルミネーション
最近流行りのスマート照明(スマホで色を変えられる電球)や、ゲーミングPCのキーボードが虹色に光るのも、全く同じ原理です。 今回のプログラムを応用して、「徐々に色が移り変わるグラデーション」や「音楽に合わせて点滅するライト」などを作ってみると、より理解が深まるでしょう。
まとめ
今回はスクラッチを使って、ロボットのLEDを制御し、光の三原色(RGB)を混ぜ合わせる方法を学びました。
基本: 赤・緑・青の個別点灯。
理論: 加法混色により、黄色、マゼンタ、シアン、白が作れる。
技術: プログラムの実行速度を考慮し、「待つ」ブロックでタイミングを調整する。
たかが「光らせるだけ」と思うかもしれませんが、ここにはコンピュータによる出力制御の基礎が詰まっています。「命令した通りに動く」というプログラミングの基本原則と、「意図した通りに見せるための工夫(タイミング制御)」は、今後複雑なロボットプログラミングやゲーム制作を行う上で必ず役に立つ知識です。
ぜひ、色々な色の組み合わせや点滅パターンを試して、自分だけの光のショーを作ってみてください。



コメント