PIC16F84電子遊戯(15)
最終更新日:2001年3月29日
ミラクルライト(1ページ) (2ページ)へ (3ページ)へ (4ページ)へ

ミラクルライトを作ろう
今回は3色のLEDを使用して、ミラクルに光るライトを作りましょう。
まずは回路図を見て下さい。ソフト作成を重視しますのでハードはさらりといきましょう。
(ミラクルライトの回路図)
回路のポイントだけ説明します。まずLEDは1色ごとに駆動します。
それぞれのLEDをデューティ駆動することにより輝度を変化させます。
キーは2個付けます。ひとつは色をマニュアルで切り換えるのに使用します。
もうひとつは色の切り換えを自動にするかマニュアルにするかを切り換えます。
今回のハードは非常に簡単ですね。ではハード部の完成写真を見て下さい。
いつものように穴開き基板をスペーサーで挟んだ構造としています。
写真を見ていただくとわかると思いますが、3色のLEDは出来るだけ接近して配置します。LEDの周辺には部品は置かないようにします。
次に白色の卓球の玉を準備します。その玉に10mm程度の穴を開けます。
ちょうど3色のLEDが玉にすっぽり入るようにすればOKです。
この玉がいわゆる電球の玉の替わりになります。
卓球の玉は最後には接着剤で固定しますが、今は被せるだけにしておきましょう。
ミラクルライトの基本仕様
ハードが準備出来ましたので、この製作の基本仕様を考えましょう。
1)ミラクルライトの色数は16色まで切り換えるようにします。
 (人間の目には16色も切り換えても同じ様に見える色もあります。)
2)色の変化はマニュアル切り換えと自動切換えの両方が出来るようにします。
3)色の自動切換えの時間は4種類の中から選択可能とします。
以上基本的なミラクルライトの仕様としました。ソフト作成途中で都合が悪くなれば随時仕様修正することにします。
ミラクルライトのポート割付
回路図に従ってマイコンのポートを割り付けましょう。
ポート名 入出力 機能
RA0 OUT N.C.
RA1 OUT N.C.
RA2 OUT N.C.
RA3 IN SW1(マニュアル色切り換え)
RA4 IN SW2(色切り換え マニュアル/自動)
RB0 OUT 赤色LED駆動
RB1 OUT 緑色LED駆動
RB2 OUT 青色LED駆動
RB3 OUT N.C.
RB4 OUT N.C.
RB5 OUT N.C.
RB5 OUT N.C.
RB7 OUT N.C.
(ミラクルライトのポート設定)
ミラクルライトのポートの方向設定
ではソフト上でのポートの方向をレジスタに設定します。入力は「1」、出力は「0」です。
--- --- --- PA4 PA3 PA2 PA1 PA0
--- --- ---

1

1

0

0

0

(TRISA)
PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0

0

0

0

0

0

0

0

0

(TRISB)
ミラクルライトのタイマー割り込みの設定
今回のタイマー割り込みはLEDをデューティ駆動するための基本クロックに使用します。
まずLEDのデューティ駆動の最小時間幅を約200usecに決めます。
約200usecのタイマー割り込みを作る方法を考えます。
そこでタイマー割り込みの基本となるプリスケーラ値をまず16分周に決めます。
発振子が4MHz時基本クロックは1usecなので、16usecごとにタイマーカウンタがアップします。その他の設定はテストボードの時と同じにします。(詳しくはテストボードのページを参照して下さい。)
ではレジスタにデータを設定しましょう。
RBPU INTEDG TOCS TOSE PSA PS2-0

1

0

0

0

0

0

1

1

(OPTION_REG)
さて約200usecのタイマー割り込みを作る方法を考えましょう。まず16usecのタイマーカウントアップを使用して200usecごとにタイマー割り込みを掛けるようにします。
16usec x 12 = 192usec
16usecを12カウントして約200usecにします。
正確には200usecではありませんが、これに決めます。
このタイマー割り込みを利用してLEDを高速で点滅することにより輝度を変化させます。
次に定数を設定します。まず200usecの割り込みを掛けるためにタイマーカウンタに設定する初期値です。タイマー割り込みはタイマーカウンタがオーバーフローするごとに掛かります。従って初期値を255-12 = 243 = F3HにすればOKです。
tm0_setdata
0F3H
(tm0_setdata)
ここで輝度を変化させる方法について少し説明します。
LEDは上図のようにトランジスタのベースに接続されている抵抗をHレベルにすれば点灯します。ではこの入力をHレベルにしたりLレベルにするとどうでしょう。
Hレベルで点灯、Lレベルで消灯になりLEDは点滅します。
この変化を段々と早くすればどうなるでしょうか。このとき明るさは暗くなりますが、LEDは点灯しているように見えます。今回はこの効果を利用します。
本当はLEDは点滅しているのですが、早い点滅をすることにより人間の目には点灯しているように見えるのです。このときに点灯している時間を変化すれば簡単に明るさを変化することが出来ます。今回のミラクルライトは3種類(明るい、中間、ほとんど消えている)の輝度を使って色を変化させます。
ミラクルライトのポート初期設定
マイコンが動作してからのポートの初期状態を設定します。
PORTAで使用しているのはRA3,RA4の入力のみですのでPORTA全体をHに設定します。
PORTBはLEDの点灯に使用するため、最初は消灯ということでLに設定します。
PORTA PORTB
0FFH 00H
(ポート初期設定)
ということで、今回はここまでとしましょう。次回はデューティ駆動の方法を中心に説明する予定です。これからも益々楽しくなる「PIC16F84電子遊戯」をよろしくです。
この続きは(2ページ)へ

不明点などあればメールお願いいたします。nonchansoft@nifty.com