LEDで点灯するバラの花のおもちゃを改造しました。
とある筋からw 改造の依頼を受けました。
ボタンを押すとバラの花(LED)が、点滅(高速)→点滅(低速)→点灯→消灯
というパターンを繰り返す単純なおもちゃなのですが、
点滅は必要なく点灯、消灯だけに出来ないかという依頼で改造することになりました。
↓こんな感じの動作
最初はLEDの配線にスライドスイッチを追加で付けて、LED点灯時にスライドスイッチをオンオフにしたら簡単に出来るなと思ってたのですが、
買ったはよいものの何に使うか困ってたこのマイコンがあるのを思い出して、これの使いどころではないかと思って一番面倒くさい方法を取ることにしましたw
バラの花の中に入っているであろう回路を取りさって、代わりに自作のマイコンボードに載せ替えてバラの花のLEDをオンオフ出来るようにしたいと思います。
このマイコンは使った事ないので、まずはマイコンの事を調べます。
ここに日本語マニュアルPDFのリンクがあります。
PIC 10F222
通称米粒PICと呼ばれるやつですね。
半田付け出来る自信が無いんですけどw
10個プラス1個DIP版がオマケで付いてきて購入当時800円、今だと500円みたいです。

1個50円ですか。安い!
そのかわり機能が貧弱そうです。
今回はLED点灯・消灯だけなのでなんとかなるのではと思っています。
まずはプログラムを書き込む為のライター基板を作ります。PCへの接続はPICKIT3を使います。
エッチングして部品を半田付けしたらライター基板の出来上がり
表面にはDIP版のソケット
裏面の右上にSOT版のPICを取り付ける場所があります。
半田面が汚いのはフラックスを塗るのに失敗したからですw
ちょっと部品配置間違ってPICKIT3が裏向きに接続するようになってしまいましたw
そして、ちょこちょこっとプログラム書いて
#include <xc.h>
#include <stdlib.h>
#include <pic10F222.h>
#pragma config IOSCFS = 4MHZ, MCPU = OFF, WDTE = OFF, CP = OFF, MCLRE = OFF
#define _XTAL_FREQ 4000000
int main(void) {
ADCON0bits.ANS0 = 0; //GP0 digital I/O
ADCON0bits.ANS1 = 0; //GP1 digital I/O
OSCCALbits.FOSC4 = 0; //GP2/T0CKI applied to GP2
OPTION = 0b00000000; //wakeup pullup
TRISGPIO = 0b00001000; //GP3 Input
GP0 = 0;
while(1){
// スイッチ入力待ち
if( GP3 == 0 )
{
__delay_ms(50); // チャタリング防止
if( GP3 == 0 )
{
GP0 = !GP0; // LED消灯・点灯切り替え
while( GP3 == 0 ); // スイッチ離すまで待ち
__delay_ms(50); // チャタリング防止
}
}
// LED消灯の時はスリープ
if( GP0 == 0 )
{
SLEEP();
}
}
}
書き込んでテスト動作したのがこれ。
オマケで付いてきたDIP版でテストしています。
スイッチを押すたびにLEDが点灯、消灯を繰り返します。
LEDが消灯した時はPICをスリープにしているので電流値が測れないくらい省電力です。
なので電源スイッチは付けないでいきます。
オリジナル版も電源スイッチが無いので余計な追加部品が無くて助かります。
後はバラの本体に埋め込む用の基板を作って終わり。
なのですが、
これだけだとせっかくマイコンを使ってるのに面白くないので、ちょっとだけプログラムに余計なことをしますw
つづく









コメントはまだありません