特集1 Mission4 人と関わるイルミネーション |
●プログラムの概要 プログラムはMPLAB IDE7.40を用い作成しました.ソース・ファイルとHEXファイルをWebに用意しました.HEXファイルはPIC12F863に秋月通商のAKI-PICプログラマV3.0をアップデートキットでバージョンアップしたもので書き込みテストしたものです. ソース・プログラムは必要があれば,MPLAB IDEで修正し,動作を変更することができます. ●PICの使用条件 PIC12F863を次の条件で使用しています. -内部クロック 4MHとしリセット後のデフォルトの値を用います. 以上の条件でプログラムしてあります. ●ソース・プログラムの概要 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 神崎康宏 |