目次>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' ; パルス幅変更間隔(サイクル数)
|
|