目次>5章 第2ステップ(色々な実験)>(13)3色LED(フルカラーLED)を使う(イルミネーション)

3色LED(フルカラーLED)を使う
− イルミネーション −
更新日2006.11.25

フルカラーLEDの動作確認の続きで、イルミネーションを作成します。

フルカラーLEDの色を少しずつ変化させて、ふんわりした色の変化を楽しみましょう。クリスマスツリーの一部として使うのも良いと思います。

(1)回路図
回路図は、フルカラーLEDの動作確認と全く一緒です。
クロックは20MHzです。

(2)色を序所に変える
フルカラーLEDには、赤・緑・青の3色のLEDが内蔵されています。
この3つのLEDの明るさの組み合わせで無数の色を表示できます。

明るさを変える方法は、「LEDの明るさを序所に変える」と同じ考え方で行います。

下の図のように周期を一定にして、LEDを点灯するパルスの幅を変えると明るさが変わります。
パルス幅が広いと(点灯時間が長いと)明るく、狭いと(点灯時間が短いと)暗くなります。


黄色の部分がLEDの点灯を意味します。

パルスの幅を、狭い状態から序所に広くし、最大になったら逆に徐々に狭くすると、明るさは下図のように徐々に変化します。(序所に明るく→徐々に暗くを繰り返す)

フルカラーLEDには、3つのLEDが内蔵されていますので、3つのLEDの明るさを徐々に変えます。
同じように変えると、黒→灰→白という変化しかしませんので、少しずらして変化させます。
下の図はそのイメージです。

色は目安です。

(3)プログラム
プログラムの概略処理フローは以下の通りです。詳細はプログラムを参照して下さい。

こちらはメイン処理です。
初期設定をした後、51.2μ秒経過を待ちます。
51.2μ秒経過したら、3色LEDの設定サブルーチンを呼び出します。
こちらは3色LEDの設定サブルーチンで、上のメイン処理から51.2μ秒毎に呼び出されます。
1サイクル終了判定と、各LEDの点灯/消灯を制御します。

このサブルーチンが255回呼び出されたら1サイクルで、1回当たり51.2μ秒です。
従って、1サイクルは、51.2μ秒×255=13m秒です。

1サイクル終了毎に、「パルス幅算出&設定サブルーチン」を呼び出し、パルス幅(明るさ)を変化させます。

こちらはパルス幅の算出と設定を行うサブルーチンで、上の3色LED設定サブルーチンから呼び出されます。
このサブルーチンは1サイクル毎に呼び出され、パルス幅の初期化を行います。

そして、15回毎にパルス幅の計算を行い、明るさを変化させます。
パルス幅の計算は、それぞれの色のパルス幅変更サブルーチンで行います。

パルス幅変更サブルーチンは、各色毎に分かれていて3つありますが、やっている事は3つとも同じです。


プログラムはこちらです。

40行目で定義している以下の値は、パルス幅を変える間隔で、小さな値にすると色の変化が速くなります。試して見てください。
wid_chi  EQU  d'15'  ; パルス幅変更間隔(サイクル数)