frisk domino dice
フリスクのケースにLEDを入れてドミノ型のサイコロを作ります。
サイコロ表示の仕組み
サイコロの1~6の目は、7個のLEDで表現できます。中心の1個以外は必ず2個ずつ連動するので、連動するものどうしで4組に分けて制御すると効率的です。組ごとにa~dの記号で表したのが下の図です。(下の段のサイコロについてはe~hで表しています。)
回路図
PIC12F683の5個のI/Oを使います。下のような割り当てにしておくと、基板が完成した後でもプログラムの書き込みができます。 GP0につながっている圧電スピーカは、音を出すだけではなく振動センサの役割も果たします。ケースをたたいたときに発生した電圧を見て、サイコロを転がしたり(?)、スリープから起きたりします。470Kは、ちょうど良い感度になるように適宜調整してください。2個の保護用ダイオードは省略してもあんまり支障はないかも。 サイコロ2個分で合計8組のLEDを制御するには、4個のI/Oが必要です。(もちろんダイナミック点灯。) 結線方法はいろいろ考えられますが、こういう風にしておくと、なにかと都合が良いのです。(詳しくは後で説明します。) LEDは赤などのVf=2V程度のものを使ってください。抵抗が入ってないですが、LEDおよびPICの定格範囲内の電流しか流れないので大丈夫です。
表示の制御
全部で8組ありますが、いくつかの組み合わせは同時に点灯できるので、上と下のサイコロの目がどういう組み合わせでも実際には次の4ステップで十分です。
1. a/e
2. b/f
3. c/g
4. d/h
点灯する組とGPIOの状態は次のような関係になります。HとLは出力モード、Iは入力モードを表します。
aとeの組だけはLEDが1個なので他の組よりも明るく点灯します。見た目の明るさが同じになるように、そこだけ点灯時間が他より短くなるようにダイナミック表示のタイミングを調整します。