だいぶ前ですが、離床センサーの簡易チェッカーを作成しました。→
こちら
いぜんのものは結構場所とりで大きくて邪魔です。
今回は離床センサー簡易チェッカーをグレードアップしよう思います。
出来上がりはこちら🔽
フリスクのケースに入っていて最高にかわいいのも特徴です。
以前作成した離床センサー簡易チェッカーはタイマー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) {
//オプションの設定
OPTION =0b10000000;
//wake-up on pin offに 7bit目で設定
//weak pull-upをonに 6bit目で設定
//tocs off 3bit目をi/oとして使う 5bit目
//出力、入力の設定
TRIS = 0b001000; //GP3を入力 あとは出力
//とりあえずクリア
GPIO = 0;
//ここからメインプログラムスタートです。
while(1){
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文以降です。
んでテスト🔽
テストもばっちしできたところでケースを作成しました。
ケースも小さく新調してかわいく仕上げます。
電源ですが昔の携帯充電器を使用
くみあげました。
こんな感じ接続します。
実際の動かしているところ🔽
音が少々小さいですが、こんなにコンパクトになったし最高です。
プログラムをしないといけないという事で敷居が高いですが、そんなに難しくありません。
ぜひみなさんも作成してみてください。
スポンサードリンク