Daniel Champagneさんの“Tiny Joy Pad”を秋月電子通商から入手可能なパーツのみで作製する。
本記事を投稿する2020年5月初めの時点では、日本国内におけるCOVID-19感染者数の急増は抑えられているようで、減少傾向とも見られる推移を示している。皆さんの努力の賜物である。感染収束を確実にし、さらには早期終息宣言に繋げるためにも、連休中も引き続き頑張ろう。投稿者自身は花粉症がいまだ治まらず、やはり外出はできない状態である。
とはいえ、おうちにいるとつまらない、という声は聞こえてくる。お子さん達は辛かろう。そこで、おもちゃの作製である。今年は夏休みが短縮、あるいはなくなる可能性もあるけれど、自由工作としても楽しめるかもしれない。
Joy Padの作製
たまたま秋月電子通商のサイトを眺めていたところ、小さなジョイスティックが安く売られているのを見つけた。何とかATtiny系のマイコンと組み合わせられないかと検索すると、やはり先人はいるもので、Daniel Champagneさんの“Tiny Joy Pad”に行き当たった。同サイトの回路図に従い、早速作製する。秋月電子通商から購入する部品リストは以下のとおりである。万全を期したが、コードや価格の誤記載のある場合はご容赦いただきたい。お財布の許す限り2セット以上ずつ買っておくと安全である。特にATtiny85は、5つほど買っておくと色々なゲームを試すことができ、楽しい。
品名 | 通販コード | 単価(円) |
---|---|---|
AVRマイコンATTINY85-20PU | I-09573 | 130 |
0.96インチ128×64ドット有機ELディスプレイ | P-12031 | 580 |
アナログジョイスティックDIP化キット | K-10263 | 250 |
圧電スピーカー(13 mm) | P-04118 | 30 |
カーボン抵抗1/2 W 10 kΩ(100本入) | R-07838 | 100 |
タクトスイッチ(黒色) | P-03647 | 10 |
基板用スライドスイッチ | P-08790 | 20 |
ボタン電池基板取付用ホルダーCR2032用 | P-00706 | 50 |
丸ピンICソケット(8P) | P-00035 | 15 |
細ピンヘッダ1×40(黒) | C-06631 | 35 |
分割ロングピンソケット(細ピン用)1×40 | C-10073 | 80 |
片面ガラス・ユニバーサル基板Cタイプ | P-00517 | 60 |
スズメッキ線0.5 mm 10 m | P-14232 | 250 |
2種ポリウレタン銅線0.4 mm 10 m | P-13709 | 180 |
ATtiny85、有機ELディスプレイ及びジョイスティックは、直接はんだ付けせず、ソケットに載せる。配線図は以下のとおり。
実物も示す。はんだ付けが下手で恥ずかしい限りだが、これでも動くと、半ば開き直る。気分はガリレオである。皆さんもどしどしチャレンジしていただきたい。
スライドスイッチが下(オフ)になっていることを確認したら、ATtiny85、ディスプレイ及びジョイスティックをマウントして電池を取り付ける。祈りつつ電源を入れると、さて立ち上がったでしょうか。神のご加護のあらんことを。
ATtiny85へ書き込む際の注意
ジョイステックの横方向の信号入力に使用するアナログ0番ピン(A0)はリセットピンでもあり、入力電圧が下がるとリセットがかかる。このため、ジョイスティックの最大抵抗値10 kΩと同値の抵抗で分圧し、入力電圧が0となることを防いでいる。最初はこれをうっかりし、ジョイスティックを左に倒すたびにリセットがかかって、ずいぶん悩まされた。手持ちの抵抗の中で試した4.7 kΩでは小さかった。
下駄をはかせた分、入力判定も修正する必要がある。“Tiny Tris v2”ではヘッダファイルを修正すればよい。
27,30c27,30
< #define TINYJOYPAD_LEFT (analogRead(A0)>=750)&&(analogRead(A0)<950)
< #define TINYJOYPAD_RIGHT (analogRead(A0)>500)&&(analogRead(A0)<750)
< #define TINYJOYPAD_DOWN (analogRead(A3)>=750)&&(analogRead(A3)<950)
< #define TINYJOYPAD_UP (analogRead(A3)>500)&&(analogRead(A3)<750)
---
> #define TINYJOYPAD_LEFT (analogRead(A0)<600)
> #define TINYJOYPAD_RIGHT (analogRead(A0)>900)
> #define TINYJOYPAD_DOWN (analogRead(A3)<600)
> #define TINYJOYPAD_UP (analogRead(A3)>900)
書き込み自体は、例えばht-dekoさんのサイトなどが参考になるだろう。いつもお世話になっております。気を付けなければならないのは、“Clock”を“16 MHz (PLL)”にする点、念のため「ブートローダーを書き込む」でヒューズを書き換えておく点である。動作が遅いようだったら、ここを疑うとよい。
コメント