だいぶ前ですが、離床センサーの簡易チェッカーを作成しました。→こちら
いぜんのものは結構場所とりで大きくて邪魔です。
今回は離床センサー簡易チェッカーをグレードアップしよう思います。
出来上がりはこちら🔽
フリスクのケースに入っていて最高にかわいいのも特徴です。
以前作成した離床センサー簡易チェッカーはタイマーIC555という昔からあるICを使って人間に聞こえる周波数を発振させて、スイッチ(離床センサーの)が入れば音を鳴らすという簡単なものでした。
部品点数も10個以内と少ないものですが、今回はこの機能をマイコンを使ってさらにコンパクト&省電力化を行おうと思います。
マイコンでこの機能を実現しようとすると、なんとマイコン1個で全て出来てしまいます。
マイコンってすごいですよね。
使用するマイコンは7年間寝かしていたマイコンで12C509Aというマイコンを使いました。
このマイコンはフラッシュメモリータイプじゃないので一度書き込むとそれっきり、書き込みを間違うとゴミになるというマイコンです。
だから使ってなかったのですが、やっと日の目を見る時がやってきました。
プログラムは例によってMPLABで書いてコンパイルして、秋月電子のAKIキットプログラマーで書きます。
ちなみにPICマイコンを知らないかたはこちらへどうぞ!!
PICマイコンはじめてみます。
私もマイコン使った事なかったのですがものの1月でけっこう使えるようになりました。
プログラムはこちら。🔽
全てはマイコンの取説にある通りに設定してます。
// PIC12C509A Configuration Bit Settings
// ‘C’ source line config statements #include <xc.h>
// CONFIG #pragma config OSC = IntRC 内部発振をつかいますよー #pragma config WDT = OFF ウォッチドッグタイマは使いませんよー #pragma config CP = OFF これも使いませんよー #pragma config MCLRE = OFF これも使いませんよー
#define _XTAL_FREQ 4000000 //4Mhz使用
#define sp GPIObits.GP0 //GP0をスピーカーへ出力 #define led1 GPIObits.GP1 //GP1をled1に #define led2 GPIObits.GP2//GP2をled2に #define inin GPIObits.GP3 //GP3を入力に設定
int i; void main(void) { //オプションの設定 //wake-up on pin offに 7bit目で設定 //weak pull-upをonに 6bit目で設定 //tocs off 3bit目をi/oとして使う 5bit目
//出力、入力の設定
//とりあえずクリア
//ここからメインプログラムスタートです。 sp = 0;//まずはクリア ボタンが押されていないときはLEDも光らない様に led1 = 0; led2 = 0;
if(inin == 0){ for(i=0;i<=63;i++) { //周期1msec 1KHzのパルスを発生させ、for文で8Hzごとに1KHzのパルスが発生 //入力がある間繰り返す sp = 1; led1 = 1; led2 = 0; __delay_us(500); sp = 0; __delay_us(500); } led1 = 0; led2 = 1; __delay_ms(63); } } return; } |
内容的にはかなり簡単なプログラムです
説明ですが、
GP3のスイッチが押されたら、1K㎐でスピーカーをならし、さらに64mseごとにLEDを交互に光らせるというものです。
結構簡単です。
ほかにぐちゃぐちゃ書かれているのはコンフィグ設定などです。
このプログラムで重要なものはif文以降です。
んでテスト🔽
テストもばっちしできたところでケースを作成しました。
ケースも小さく新調してかわいく仕上げます。
電源ですが昔の携帯充電器を使用
くみあげました。
こんな感じ接続します。
実際の動かしているところ🔽
音が少々小さいですが、こんなにコンパクトになったし最高です。
プログラムをしないといけないという事で敷居が高いですが、そんなに難しくありません。
ぜひみなさんも作成してみてください。