作りたいリストがたまってきて着手できないのを言い訳に、ちょこっと息抜きしました。
世間様は夏休みですので、そろそろ工作の宿題をどうするか悩みどころですね。
電子サイコロ
というわけで、ちょっとした手間で遊べるモノを作ってみました。もっとも作りたいリストが山積みになりつつある現実逃避ともいえますが。
電池2本(3V)でもMicrochipの動作保証外の条件ですが、充分動作します。
回路はまったく持って単純です。スタートスイッチ、サイコロの目となる発光ダイオードとそれらの電流制限抵抗だけです。さいころ自体もシンプルな1個のもののみ。18pinのPICではI/Oピンが足りませんので、2個のサイコロにしようとするとHC540/HC541などのバスバッファなどを利用して1個ずつのLED点灯回路で振り分けなければなりません。
プログラムも単純です。
押されている間をカウント動作し、サイコロの目を順次表示します。カウント動作はかなり早くしたので人の目では追いきれないようにしました。CSS-PICCを利用できる人はランダム関数を使えばそれなりにアトランダムな目が出てきます。
単純にLEDが光るだけではつまらないので、サイコロの目を表示した後で短く圧電素子をピッと鳴らして表示が変わった事を知らせるようにしました。押している間は、この鳴動動作は間引いています。
押ボタンが離されると、目の変わる速度がだんだんと遅くなり、やがて停まり、停止音にピーっと鳴らせて確定を知らせます。
ソフトウェアのソースコード(CCS-PICC)、HEXファイルはこちら。かなり力任せに書いていますのでエレガントさに欠けますがご容赦を。
回路図は掲載しませんが単純です。LEDの電流制限抵抗は120Ωにしました。3V動作専用ですので、この回路を5Vで動作させるとポートの出力電流の制限を越えてしまいますので必ず3Vで動作させてください。
RB4~RB7は入力端子として設定していますので、10kΩでプルアップします。RB4がスタートスイッチに割り当て、押すとLoになるようにします。押すとさいころが回り始めます。
RB7がLoのときは、1の目が出た時は別に1専用の赤色LEDをRA7に接続すると、1の目だけ赤い色で光らせることができます。
RA7に1kΩの抵抗をと直列に圧電素子を接続して音を出します。
RB4-7のポート変化割り込みを使用したかったため、8ビットのデータをPORTAとPORTBに振り分けて表示させています。
今後の実装は動作させずに放置すると一定時間でタイムアウトになり、消灯してスタートボタン待ちのスリープで待機するようにする予定です。
何の事は無いおもちゃで実用も何もあったもんではありませんが(笑)、自分の意志で目的の目を出そうとしても早々うまくいきませんので、予想は難しいですね。
コメントする