特集1 Mission4 人と関わるイルミネーション


●プログラムの概要

 プログラムはMPLAB IDE7.40を用い作成しました.ソース・ファイルとHEXファイルをWebに用意しました.HEXファイルはPIC12F863に秋月通商のAKI-PICプログラマV3.0をアップデートキットでバージョンアップしたもので書き込みテストしたものです.

 ソース・プログラムは必要があれば,MPLAB IDEで修正し,動作を変更することができます.

●PICの使用条件

 PIC12F863を次の条件で使用しています.

  -内部クロック 4MHとしリセット後のデフォルトの値を用います.
  -GPIO 0,2,4,5をディジタル出力とします
  -GPIO 3のピンはディジタル入力として,センサの入力を受ける
  -AN1(GPIO1) のピンはCdsセンサからの入力とし明るさを検出します
  -割り込み処理は,プログラムをわかりやすくするために使用していません.

以上の条件でプログラムしてあります.

●ソース・プログラムの概要

 CONFIGワードの設定で __INTRC_OSC_NOCLKOUTを指定して内部クロックを指定し,なおクロックを外部に出さず最大限IOに設定することをして指定しています.

 その後,ループ・カウンタ,LED点灯制御用のコントロール・ワードなどの制御を行っています.ソース・プログラムのテンプレートの割り込み処理の枠組みはコメントにして残してあります.割り込み処理に変更する場合、利用してください.

(1)PIC12F863の初期設定ルーチン

 ここで、タイマ1の基本設定,GPIO,アナログ入力となる明るさ検出用のコンパレータの設定を行います。

(2)初期テスト処理ルーチン 

 少し長くLEDの点滅を繰り返し,LEDの点灯テスト,明るさの検出回路の調整を行うためのテスト処理ルーチンとなります.Lpcに設定する回数を変更するとテスト時間を変えることができます.現在は10回になっています。

(3)メイン処理ループ ここの処理を繰り返す

 このループを繰り返す中で,LEDの点滅,明るさの検出およびその対応,センサが人を検出した場合点滅の仕方を変える,などの処理を行っています.

(4) センサ検出時処理ルーチン

 人を検出したときこの処理が呼び出される.暗いときはセーブ・モードで人が検出されたとき、セーブ・モードを抜ける処理もこの中で行っている.

(5) 暗いときのパラメータ設定処理

 暗いとき点滅は数秒以下の間隔で繰り返す.一定時間経過後はセーブ・モードで,消灯時間を長く点灯時間を短くする.

(6)明るいときのパラメータ設定処理

 明るいときは、セーブ・モードでLEDの点灯を行うようにする.

(7) 時間待ちの処理ルーチン

 タイマ1を利用した時間待ち処理,Wレジスタに設定した値で任意の長さになるようにもなっている.

 ソース・プログラムにコメントつけてありますので、参照ください。


						

							

2007年1月16 神崎康宏