サイコロ表示の仕組みサイコロの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組あるので、普通にダイナミック表示しようとすると1サイクルあたり8ステップということになりますが、いくつかの組み合わせは同時に点灯できるので、実際には次の4ステップで十分です。1. a/e 2. b/f 3. c/g 4. d/h 上と下のサイコロの目がどういう組み合わせでも、必ず4ステップで表示できます。点灯する組とI/Oの状態を表にすると、次のようになります。 ![]() aとeだけLEDが1個、それ以外は2個並列なので、aとeは他よりも明るく点灯しますが、これはダイナミック表示のパルス幅で調整できます。a/eを表示するステップの時間を他より短くすれば良いのです。 ソフトHEXファイル: frisk1.HEX |