電子工作etc


【PIC12F683】

 ■電子サイコロ
  ★概要
    いろいろなゲームに使われる、サイコロ(ダイス)を、出来るだけ小さくを目標に、8ピンのPICで実現してみまし
    た。

  ★動作原理
    8ピンのPICでは、I/O数の制約(電源を除くと6個)が大きいので、当初サイコロには向かないのではと考えま
    した。
      ▽LEDが6個
      ▽スタートスイッチが1個
      ▽ブザーが1個
    このように8個のI/Oが必要となり、2個足りません。
    18ピンのPICなら、何も問題はないのですが。。。

    そこで、次のように考えてみました。
      ▽サイコロの1〜6迄の目を重ね合わせてみると、図2のように7個のLEDで表現することができます。
      ▽そして7個のLEDを4つのグループに分類します。
         :(A)→1個
         :(B)→2個
         :(C)→2個
         :(D)→2個
      ▽サイコロの目とLEDの関係を次のようにします。
         :@→(A)
         :A→(B)
         :B→(A)(B)
         :C→(B)(C)
         :D→(A)(B)(C)
         :E→(B)(C)(D)
    このようにすることで、LED部分は、4個のI/Oで足りることになります。

    ※この考え方は、電子マスカットさんの「青い電子サイコロ」を参考にしました。

  ★回路図
     

  ★プログラムリスト
    ソースリストはここです。
    HEXリストはここです。

    <プログラム上の工夫>
     ▽mikroCには、乱数に関する関数が用意されています。
       ・rand関数 → 擬似乱数を発生させます。
       ・srand関数 → rand関数で発生させる擬似乱数の発生系列を変更します。
     ▽rand関数は、同じ繰返しで擬似乱数を発生させるので、起動し直しても、毎回同じパターンの乱数値になっ
       てしまい、利用者に覚えられてしまいます。
     ▽そこで、起動時に、srand関数で発生系列を変更するようにしました。その時の系列値は、タイマー割り込み
       で常にインクリメントしている変数を用います。系列を変更するタイミングは、利用者がプッシュスイッチを押
       した時としましたので、どの系列になるかは不定です。こうすることによって、起動し直しても系列が異なる
       ので利用者に覚えられることがありません。
     ▽プッシュスイッチを押して、直ぐに結果が出るのでは面白くありませんので、徐々に速度を落としながら結果
       が出るようにしました。
     ▽また、LEDの点灯だけでは、寂しいので、PWMによるブザー音も発生させました。

  ★動作確認
    ブレッドボードで確認したので、LEDをサイコロの目のように並べていません。
    基板等に組み込むときには、並べてください。
    向かって左から、(A)(B)(B)(C)(C)(D)(D)の順になります。
    右上の大きい丸状のものは、圧電スピーカです。
    右下のプッシュスイッチは、スタート用のものです。
     
    起動時には、全LEDが点滅しますので、この間にプッシュスイッチを押してください。
    そうすることにより擬似乱数の発生系列が変更されます。
     
    サイコロの目が1〜6の時の、LEDの点灯パターンです。
     
     
     
   如何ですか?
   これを2セット用意するとゲームの幅が広がるかもしれませんね。{^_^}!



トップへ
戻る



電子工作etc