SHIROのIchigoJam日記

マイコン「IchigoJam」(イチゴジャム)の電子工作とプログラミングをメインに

電子100mダッシュ

IchigoJamでおなじみの100mダッシュを、ロジックIC回路で作ってみました。
紹介動画はこちら。

www.youtube.com

遊び方

  • 電源スイッチを入れるとブザーが鳴るので、リセットボタンを押して止めます。
  • 3秒くらい経つとスタートLEDが点灯してタイマーのカウントが始まるので、RUNボタンを100回連打して100m走ってください。
  • ゴールするとタイマーが止まって、走ったタイムがわかります。
  • リセットボタンを押すと、再度走れます。
  • スタートLEDが光る前にRUNボタンを押してしまうと、フライングの反則になってしまいます。


外付けの大型ボタンでも走れます。

回路図


スタートLED制御

  • 早押し対決ゲームと同じく、コンデンサの充電回路とNANDゲートを使って、数秒経つとスタートLEDが光るようにしています。2つのNANDゲートの中間の出力はLED点灯前はHですが、その信号をタイマー信号の周波数を低減する74390(後述)のCLR入力へ送っているため、LED点灯前はタイマー信号が出力されず、時計が進みません。また、ゴール判定やフライング判定でもこのNANDゲートの出力を使っています。

RUNボタン

  • RUNボタンの回路は、シュミットトリガNANDゲート・4093を使ってチャタリング防止をしています。ここから出力されたボタン信号は、走行距離表示用の7セグメントLED・M1のCLKへ入力されます。今回は10進カウンタIC・4026を内蔵した7セグを使っているので、CLKへパルス信号を入力するだけで+1ずつカウントアップします。またCARRY(桁上がり)信号を次のM2のCLKへ送ることで10の位もカウントアップします。この7セグのお陰で回路が簡単になり、部品数も少なくなっています。

タイマー

  • 時間を計るタイマーは、オシレーターIC・LTC1799がベースになっています。外付けの抵抗R6によって発振周波数が決まるのですが、今回は10kΩを付けて100kHzのタイマー信号を発振しています。ちなみに抵抗を1MΩにすると1kHzまで周波数を下げられますが、精度が悪くなるので今回は10kΩにしています。
  • この100kHzのタイマー信号を2進/5進カウンタ・74390へ入力して、周波数を下げています。ICの中にカウンタが2個入っていて、1個のカウンタで周波数を1/10にできます。今回はICを2個=カウンタを4段使って周波数を1/10000に下げて、10Hzの信号を作っています。10Hzは1秒間に10パルスなので、0.1秒ごとに1パルスになります。このタイマー信号をタイム表示用7セグへ入力して、0.1秒刻みのタイムを表示しています。
  • ちなみに試作機のタイマーは、1分間で0.5秒ほどの誤差でした。(金属皮膜抵抗R6の誤差が±1%なのでだいたい合っています)。100mダッシュのタイムは10秒前後なので、0.1秒程度の誤差が出ることになります。今回はその程度の誤差はありだろうということで、そのままにしています。VR(可変抵抗)をつけて時計を調整できるようにすることも考えたのですが、はんだ付けする部品が増えてしまいますし、子どもたちは時間進行を遅くして良いタイムが出るようにチートしてしまうでしょう。同じ基板を使って代わる代わる走れば、みんな同じ条件ですし。

ゴール・フライング判定

  • ゴールとフライングの判定は、Dフリップフロップ・7474を使っています。初期の出力は「Q=L/Q=H」になっています。
  • スタートLEDが光る前は、7474-BのD入力がHになっています。そこでRUNボタンが押されるとCLK入力に信号が入って、フリップフロップがセットされて出力が「Q=H/Q=L」に切り替わり、フライングLEDが光ってブザーが鳴ります。同時にQのL出力が、ダイオードで作ったANDゲートを通してボタン回路のシュミットトリガNANDゲート・4093-1へ送られて、ゲートの出力がHで固定されます。そのためボタンを押しても走れなくなってゲームがストップします。
  • 100m走ってゴールにたどり着くと、距離表示7セグの10の位・M2のCARRY出力がHになります。この信号は7474-AのCLK入力へつながっているため、フリップフロップがセットされて出力が「Q=H/Q=L」に切り替わり、ゴールLEDが光ってブザーが鳴ります。同時にQのL出力が(フライング時と同様に)ボタン回路へ送られてそれ以上走れなくなります。またデジタルトランジスタ・DTC143ELをOFFにして、タイム表示用の7セグのCLKI端子がHになるため、表示がゴールタイムで止まります。

リセット

  • リセットボタンを押すと、抵抗R12を通して回路がGNDへ接地され、ゲームにリセットがかかります。
    • ダイオードD1を通してコンデンサC1が放電されて、スタートLEDが消えます。
    • ダイオードD2,D3を通してフリップフロップ・7474のCLR端子がLに落とされ、ゴール・フライング判定をリセットします。
    • NANDゲート・4093-4を通して信号をHに反転し、走行距離とタイムを表示している7セグメントLEDのRST端子をHにして、内蔵10進カウンタをリセット。表示を0に戻します。

基板データ

*この基板データは、CC BYライセンスとします。どうぞご利用ください。

(C) 2023 Shiro Saito (https://www.ichigojaman.jp)

材料

以下の順番ではんだ付けすると作りやすいです。

最後にICをソケットにはめます。

以下は外付けボタン用のオプションです。