ホーム -> 電気工作 -> ケースに入れた自作機器 -> 鬼ごっこ

鬼ごっこゲーム 制作メモ
上面 下面 上面動作中 基板上面 基板下面 基板前面 基板右面 基板背面 基板左面 基板前面左側 基板前面右側 ジョイスティック
  • 発想 2015年9月24日
    • 子供が中学生の時に作らせたゲームをAVRワンチップで作りたい。

  • 構想 2015年9月24日
    • 9月24日
      AVR ATmega64を使い 16x16ドット2色LED(秋月の物)を使う。ジョイスティックは小型のアナログ信号の物をケーブルで繋ぐ
    • 9月29日
      ジョイスティックの動作をどうするか?
      移動速度にするか?位置指定にするか?
      1本のI/Oをどう使うか、スイッチにするか?LEDにするか?

  • 実装についての考え
    • 9月29日
      ユニバーサルの試作無しで基板を作ってみるか?
      100x100の中には入る目処がついたが「PEN」信号の処理がハッキリしないのでジャンパーで逃げる
      50x50で汎用基板を作ってみるか?(10月3日に基板の設計完了)
    • 10月6日
      単LEDユニバーサル基板用に 点滅プログラムを作り、動作確認した。「PEN」オープンで書き込みが出来、電源ONプログラム起動して、RESETでも起動する事を確認をした。
      A/D変換をしてジョイスティックの動作で値が変化する事をLEDの点(V)滅(H)速度で確認した。
    • 10月9日
      16x16LEDユニバーサル基板用に 表示プログラム(1mSダイナミック点灯)を作り、動作確認した。
      暗い。 室内でも照明を点けると殆どわからない。抵抗を330~470Ω位にすれば室内では使えるだろう。
      330Ωにすると8.5mA流れ、16ドット全て点灯すると136mAになり、1ビットの出力容量20mAの規格から大きく外れる。
      但し実際の動作(鬼ごっこのソフト)では2つ以上のドットは表示しないつもりなので、17mAで規格内にはなる。どうするか?
      コモン側(ROW側)にCMOSのバッファを入れるか?74AC244を使っても1ビット当たり24mAなのでそれ程の改善にならない
      バッファを入れてもほとんど変わらないので、ソフト上気を付けて作るとして、抵抗を330Ωにする?。
    • 10月11日
      ソフトで各色1ドットずつまでしか点灯しないのなら、ダイナミック点灯を赤色用と緑色用のROW2ラインだけに限定したら、 今の3.3kΩでも明るさが間に合うのではないか?  330Ωにすればもっと明るくできるのではないか?(但し、16x16のフォントを表示するような物は出来ない と言うか、暗いかCPUに過負荷がかかる)
      常に1ドットしか点灯しないのならコモン側(ROW)に330Ωを入れれば良いのではないか? そうすればCOLが全点灯でも330Ωで電流制限される
      逆にROWが全ONになった時は COL側の1ビットは330Ωの1/16の抵抗値(20Ω)の電流制限になるので規格を超える。
      ROW側に150Ω、COL側に150Ωにすれば、  ROW1ビットONで COLが全ONになった時は 150Ωの1/32の抵抗値(4Ω)+150Ωの電流制限になるので最大定格は超えない。 COL1ビットONで ROWが全ONになった時は 150Ωの1/16の抵抗値(9Ω)+150Ωの電流制限になるので最大定格は超えない。
      ROW側全てON、COL側も全てONの時はポートCとポートDの合計IOLが[3.3V/(150Ω/16+150Ω+16)=176mA]になる。 しかし、ポートCとポートDの合計IOLが100mAを超えてはダメと書いてある(ポートG0~G3も入るがポートGはLow出力では電流が流れないので無視)
      そうすると、電流制限抵抗の1/16が16.5Ω以上になる必要が有る。と言う事は16.5Ωx16=264Ω(実際は270Ωかな)の抵抗にすれば良い
      正常時の1ドットONの時は 3.3V/(270+270)=6.1mAになる。
      明るさはどうなるか? 実装は出来るか?
    • 10月12日
      定電流ダイオードを使ったらどうか?電圧が足りないし、入れる数は抵抗と変わらないので使わない。
      抵抗をROW側とCOL側に入れて ソフトが異常になっても最大定格を超えない様にするか? そこまでする必要が有るか? ソフトが正常ならば、リセット時でも最大定格を超える事は無く、ソフトが異常になっても 電流制限抵抗が無しになるわけではない。 また この回路でこのドットマトリクスLEDを使って文字を出すような動作をするのは明るさから言って相当無理が有る。 文字を出すような時は駆動電圧を高くして、ドライバーを使わないと実用的な明るさにはならないだろう。
      なので、今回はCOL側だけにして470Ωにする。そうすれば最大3つは同時点灯できる。(ソフトの異常はない物とする)
      いずれだが、ROW側は抵抗で無く、デジトラを使う事も考えた方が良さそう。
    • 10月13日
      単LEDとパラにサウンダーを追加し、それで音を出したい。スイッチ入力も欲しい。同時は無理だがモードを切替えれば 音も出せてスイッチ状態も読めるだろう。 4kHz辺りの信号が必要なので タイマーのコンペア出力のピンをこのLEDとサウンダーにしてROWの信号と入れ替える必要が有る。
    • 10月15日
      サウンダーで音楽を鳴らしたい。(天国と地獄を)競争している雰囲気が盛り上がるのではないか。 音符をプログラムで分かる形式にして配列に入れれば良いだろう。音階と長さだが、基準の長さ(例えば4文音符)はどの位の時間か? 音符と音符の空白を作らないとダメだと思うが、どの位にすれば良いのか?
    • 10月18日
      設計した基板はケースに入れたいが、秋月の蓋つきの安い箱に入らない。基板上のジョイスティックを止めれば入るだろう。
    • 10月19日
      音楽は出るのだが、たまに音の長さがおかしい音が出る時がある。割込み不可で音データを更新しても直らない。取りあえずこのままで進める。
    • 10月20日
      サウンダーの蓋部分を切り取った物にすると、音量が落ちるので今のままテープで穴をふさいだ状態で使う。外部に大きなサウンダーを付けられるようにコネクタが入る様にしたい。
    • 10月31日
      音の長さがおかしい件は、音と音の間の休み時間を止めたら良くなった。ハッキリした原因はわからないが取りあえず良しとする。

  • 現状
    • 10月5日
      ユニバーサル基板で単LEDを付けた物を作った。「PEN」はオープン、電源は外部から+5V入力
    • 10月6日
      ユニバーサル基板にアナログジョイスティックのコネクタを1つ付け、ジョイスティックを接続した
    • 10月8日
      ユニバーサル基板に16x16の2色LEDを接続した
    • 10月9日
      16x16LEDの順方向電圧を測った。赤が1.7V、緑が1.8V(5Vで3.3kΩ電流制限)
    • 10月12日
      電流制限抵抗を470Ωにする。
    • 10月13日
      LED表示チェック用のプログラム(一つずつ順番に点灯する)をコンパイルオプションで作成する。 ジョイスティック用コネクタをもう一つ付ける。そこにジョイスティックの替りに10kΩを2つ仮に追加する。
    • 10月14日
      単LED(PG4)の信号とROWの信号(PE2)を入れ替える。それに有ったプログラムに変更する
    • 10月15日
      ROWの信号(PE2)はPE3の間違いなので修正する。プログラムも修正する。
      サウンダーをLEDと並列に(抵抗組で)付け、ジョイス手キックのスイッチにも配線する。 音階を出すようにプログラムを考える。サウンダーの穴をテープでふさがないとピーク周波数の音量が大きすぎて 他の周波数とのバランスが取れない。絶対的な音量は相当小さくなってしまう。 一応3オクターブの周波数(絶対的な音楽の音階とはずれている)を出してみたが、使えそうなのは2オクターブ位と思う。
    • 10月16日
      楽譜を見ながら、音階(ドレミ等)と長さ(8文音符等)を配列に入れた物(天国と地獄)を作る。
    • 10月18日
      基板上のジョイスティックを止めた物を設計した。最終的にどちらの基板をを発注するかは もう少し後で考える。
    • 10月19日
      音楽としては4分音符500mSで「天国と地獄」が演奏で来た。(ちょっと楽譜から移す時に間違えた所が有るみたい)
    • 10月20日
      外部サウンダー用コネクタを使う為に3Pコネクタの真ん中の穴をサウンダーの足の間に開けた。
    • 10月22日
      鬼ごっこ開始前は「ピッピッ」、鬼ごっこ中は「天国と地獄」、逃げ来た時は「アメイジング・グレース」、捕まった時は「喜びの歌」を流す。
      開始は両方が上下一杯までに分かれた時する。天国と地獄が終わるまでに捕まらなかったら逃げ切ったことにする。「アメイジング・グレース」または「喜びの歌」が終わったら、開始前に戻る。
    • 10月28日
      外部サウンダー用コネクタとして2Pコネクタをサウンダーの足とは別に設ける。
    • 11月2日
      箱入りの基板をFusionPCBに発注した。部品はまだ頼んでいない
    • 11月9日
      基板が「Tracable」になった。部品を秋月、aitendo、マルツに頼んだ
    • 11月11日
      秋月から部品が来た
    • 11月12日
      aitendoとマルツから部品が来た
    • 11月21日
      基板が来た
      16x16LEDの1~8の位置が穴径分ぐらいずれている(ライブラリーが1mm間違っているので直した)。足をちょっと曲げれば入りそう。
    • 11月23日
      基板を組み立てた
      プログラムを入れてチェックモードにしたら、音階とLED2色の16x16が表示したのでハード的にはOK。 まだジョイスティック動作は 一つしかないので片方づつだが確認できた。
    • 11月24日
      ケースに入れた
      ジョイスティックはaitendoとsparkfunを使う。(外見上色違い)
    • 11月25日
      ジョイスティックの下面にベーク板を一枚追加する。
      ケースにタイトル等を貼る
    • 12月2日
      ジョイスティックの位置(A/D値)をLED位置からLED移動速度に変更した
  • 参考資料
    • 部品表基板(ガーバーファイル)
      基板に関してはこのファイルを直接使う事は止めてください。なお、基板(生基板)は 現在の手持ち分に限り 無料で差上げます。 その旨のタイトルで こちら連絡先へメールをお送り下さい。

ホーム          カメラと写真        2015年12月2日更新 Taishi