このページではDX妖怪ウォッチを改造し、赤外線リモコンの数字キーから妖怪の凹凸パターンコードを入力して、レジェンドを含む全メダルの妖怪音声を再生する機能を追加する方法について説明します。
初期のDX妖怪ウォッチ(白)および新しい妖怪ウォッチ零式それぞれの改造方法(DX妖怪ウォッチの本体内にArduinoと赤外線リモコン受信モジュールを組み込む方法)、およびArduino用スケッチを公開しています。
より簡単な「改造メダルの作り方」も後ろの方で紹介します。
DX妖怪ウォッチ白や零式を改造した「製作品」の電源を入れ、テレビ用の赤外線リモコンの数字ボタンで4ケタのメダルの凹凸パターンコードを送信すると、入力したコードの妖怪メダルを入れた時と同じ動作(音楽と音声の再生)が実行されます。また、チャンネル選局の上ボタンで、次のコードを呼び出すこともできます。
例えば、上の写真のDX妖怪ウォッチ白に写っている妖怪メダルのコードは2913なのでリモコンチャンネル[2]ボタン、[9]ボタン、[1]ボタン、[3]ボタンの順に押すとそのメダルを挿入した時と同じ音楽と音声が出力され、チャンネル選局で次の凹凸パターンコードの音楽と音声が出力されます。レジェンドは3470、3471、3473などです。妖怪に関する凹凸パターンコードは他のサイト「妖怪〜情報局」を参照にして下記の「妖怪コード10進数一覧表」を作成しました。
妖怪コード10進数一覧表:yokcode1.pdf(PDF) 上記の2進数のコード表:メダルの音声解析対応表(他サイト) 妖怪コード零式の一覧表:yokcode0.txt(テキスト・一部のみ) |
なお、改造後も実メダルを挿入したり、ボタンの長押しでサーチライトを点灯させたりといった通常の妖怪ウォッチのメダル遊びも可能です。
赤外線リモコン受信モジュールの感度が悪いと、リモコンと製作品を対向して妖怪の凹凸パターンコードを送信する必要があります。しかし、ここで紹介する方法を用いれば、受信モジュールを高感度な状態で組み込むことが出来ます。近くであれば、方向をほとんど気にせずにリモコン操作が可能です。数メートルくらい離れた場所であっても白い壁などの反射を受けることが出来るので、必ずしも対向で使用する必要はありません。高感度に製作する方法は後述します。
妖怪ウォッチに搭載されているアルカリボタン電池での駆動を前提にするため、オートパワーセーブ機能を搭載し、バッテリ寿命に留意しています。赤外線リモコン受信モジュールは常に1mA程度の電流を消費し続けるので、アルカリボタン電池の電池寿命が著しく短くなってしまいます。そこで、使用を開始してから60秒後に赤外線リモコン受信モジュールの電源を切ることにしました。
このため、電源を入れてから60秒間だけしかリモコン受信を行えません。リモコン信号を受け続けている場合はオートパワーセーブが自動的に解除されつづけ、継続動作が可能です。(赤外線を受信すると60秒のカウンタをリセットして再カウントする。)
もし、使用中にオートセーブが働いてしまった場合は、電源を入れ直す、もしくはメダルを挿入/取り外しすることで、再び60秒間の受信を行うことが出来るようになります。
シャープもしくはパナソニックのテレビに付属している赤外線リモコンを使用することが可能です。もちろん各メーカに対応した汎用のテレビ用リモコンのリモコンコードを「シャープ」もしくは「パナソニック」に設定して使用することも出来ます。当方が保有しているシャープ4機種およびパナソニック1機種の液晶テレビ(どれも地上デジタル対応)にて動作確認しております。稀に微妙なタイミングの違いやコードの違いなどで動作しないリモコンがあるかもしれません。
あるいは各社のレコーダに付属の赤外線リモコンを使用して、テレビのメーカーコードを「シャープ」もしくは「パナソニック」に合わせることでチャンネル選局で妖怪メダルのコードを次々に順送りして聞くことも可能です。
2社のリモコン信号に対応した理由は、同じ部屋にあるテレビと異なるリモコン信号を使用したかったからです。例えばシャープのテレビを使用している部屋では、本機の動作にパナソニックのテレビ用リモコンを使用することで、本機の操作中にシャープのテレビのチャンネルが変わってしまうことを防ぐことが出来ます。
妖怪ウォッチの通常の動作として、メダルを挿入するとメダルのコードが入力され、取り外し時はメダル取り出し音が鳴ります。この取り出し時はメダルのコードを逆順に入力する必要があります。
同様に改造品において、リモコンで次のメダルのコードに移行するには、一度、現在のメダルを取り出す逆順の信号を入力し、その後に次の新しいコードを入力する必要があります。
この動作を実現するために本ソフトでは内部でメダルの仮想的な状態を維持し、実メダルの状態変化を検出し、メダルの取り出し処理を行うかどうかを判定し、必要に応じて前のコードを逆順に入力してから、次のコードの入力を行う必要があります。
本ページで配布しているスケッチでは、以上のような実メダルの検出機能を用いて、実メダルとの矛盾をなるべく回避しています。(リモコン操作時は変数yokCodeMedalに仮想的なメダル状態を保持し、実メダルの装着/取り出しの方向を検出することで、メダル状態を一致させています。)
しかし、電源投入前の状態変化や電池残量が減ってArduinoが再起動した場合、Arduinoが実メダルの動作を正しく検出できなかった場合などに状態情報が誤り、その後の動作が不適切になる場合があります。こういった場合は、一度、音量ボタンや決定ボタンなどでメダルを散り外した状態に確定してください。
ここではArduinoブートローダを書き込んだATmega328Pを内部クロック8MHzで動かします。そのためのヒューズ設定とAVRマイコンに書き込むArduinoブートローダを以下に示します。ブートローダの書込み方法はBitBang法などがあります。当サイト内のページ「Arduino互換ボードの使い方」に荒いメモがありますので参考にしてください。
Arduino
Fuse設定
| Arduinoブートローダ
| Hi Byte | (hFuse) Low Byte | (lFuse) Ex Byte | (eFuse) ATmega328P 単体 8MHz
| DA
| E2
| 05
| ATmegaBOOT_168_atmega328_pro_8MHz.hex
| |
妖怪の凹凸パターンコードの出力部のスケッチを以下に示します。port_out関数は引数inの下4ビットを妖怪基板上のスイッチSW3〜6に出力する関数です。code_out関数は4桁の妖怪の凹凸パターンコードを4ビットのスイッチ動作パターンに変換し前述のport_out関数を呼び出します。
void port_out(byte in){ digitalWrite(SW3_PIN,in>>0 & 0x01); digitalWrite(SW4_PIN,in>>1 & 0x01); digitalWrite(SW5_PIN,in>>2 & 0x01); digitalWrite(SW6_PIN,in>>3 & 0x01); } void code_out(int code){ byte out,i; port_on(); // ポートを出力に設定 for(i=0;i<3;i++){ out = (byte)(code>>(4*(2-i)))&0x0F; // out値のパターンを生成 port_out(out); delay(SymWait); // 上記out値のパターンを出力 port_out(0x00); delay(SymWait); // 行パターン終了 } port_out(0x0A); delay(SymWait); // パターン1010を出力 port_out(0x00); delay(SymWait); // 行パターン終了 port_off(); // ポートを入力(オープン)に設定 } |
当サイトで配布しているスケッチは上記の code_out 関数を基にメダルの挿入と取り出しの両方に対応しています。code_out 関数の引数に boolean dir を追加しており、dir=1 でメダルを挿入する信号パターンを生成し、dir=0 ではメダルを取り出す信号パターンを生成してスイッチSW6〜8へ出力します。
時計型の妖怪音声おもちゃ白用及び零式用の凹凸パターンコードの赤外線リモコン制御ソフト「IR to Yok Code Converter for Arduino」は下記からダウンロードすることが出来ます。
ダウンロード(白式): | IR to Yok Code White Converter for Arduino |
ダウンロード(白式): | 動作確認用の試作品(旧バージョン) |
ダウンロード(零式): | IR to Yok Code Zero Converter for Arduino |
本ソースリストおよびソフトウェアは、ライセンスフリーです。 利用、編集、再配布等が自由に行えますが、著作権表示の改変は禁止します。 |
ダウンロードしたスケッチの「yokcode1_1」または「yokcode0」をArduino IDEから開いて使用します。Arduino IDEの「ツール」メニュー内の「マイコンボード」は「Arduino Pro or Pro Mini (3.3V, 8MHz) w/ ATmega328」を選択します。
マイコンボード: | Arduino Pro or Pro Mini (3.3V, 8MHz) w/ ATmega328 |
必ずハードウェアの製作前にブートローダとスケッチをAVRマイコンに書き込んでからハードウェア製作に移ります。製作してからスケッチを書き込むのはマイコン単品に比べて難しいです。
ハードウェア製作の概要について説明します。予めAVRマイコンに上記のスケッチを書き込んでおいてからか表に従って配線します。表中の「妖怪スイッチ」と書かれているSW3〜6はDX妖怪ウォッチの基板上のスイッチです。零式ではS3〜S6に相当します。AVRマイコンの電源やGNDもDX妖怪ウォッチの基板へ接続します。
なお赤外線モジュール信号のピンは変更できません。赤外線の入力が無い時にはAVRマイコンは停止しており、赤外線を検出するとArduinoに割込みをかけて起動します。この割込みが可能なArduinoの入力ピンが限られているからです。スイッチSW3も割込みに使用していますので変更すると実メダルの検出が行えなくなります。
Arduino PIN
AVR PIN
| 用途
| Digital 2
| 4
| 赤外線モジュール信号
| Digital 3
| 5
| 妖怪スイッチSW3
| Digital 4
| 6
| 妖怪スイッチSW4
| Digital 5
| 11
| 妖怪スイッチSW5
| Digital 6
| 12
| 妖怪スイッチSW6
| Digital 8
| 14
| 赤外線モジュールの電源
| |
必要な電子部品はAVRマイコンのATmega328P(参考価格:250円)と赤外線リモコン受信モジュールPL-IRM2161-XD1(参考価格:50円)です。お好みに応じて電界コンデンサを追加すると終止電圧を下げることが出来ます。(後述)
部品名
参考単価
| 数量
| 販売元(一例)
| AVRマイコン ATmega328P
| 250円
| 1
| 秋月電子通商
| 赤外線リモコン受信モジュールPL-IRM2161-XD1
| 50円
| 1
| 秋月電子通商
| 導電性高分子アルミ電解コンデンサ 220uF
| 130円
| 0〜4個
| 秋月電子通商
| |
始めにDX妖怪ウォッチ(白)のハードウェア改造方法の詳細を説明します。後に零式の改造方法も説明しますが、白の改造方法を理解していることを前提に解説しているので、両方をお読みいただいたほうがより適切に製作できると思います。
まず、AVRマイコンの不要な足を切断します。内蔵時に他の回路部品との接触の可能性を減らすためです。また、少しでもビニールコードによる配線を減らすためにGNDをリード線で引き出し、この先端をDX妖怪ウォッチの基板に半田付けするようにします。下図はGNDピンのリード線をマイコンの表面で相互接続し、基板との接続用に新しいリード線を付与した製作例です。
下図はDX妖怪ウォッチ基板のGNDに半田付けした様子です。上部のスイッチとマイコンとの間にキャビのリブが入るので、そのスペースを考慮しつつ、写真の位置に合うように実装します。この傾き、位置は、絶妙で、少しでもずれるとキャビに収容できなくなります。一度、仮止めして組み立てて見ると良いでしょう。
また、ICの下の基板部に電源パターンがあるのでポリイミドテープで絶縁してから半田付けします。また、半田付け後にAVRマイコンの両端をハックルーで固定しておきます。
次に電源の配線です。DX妖怪ウォッチの基板の電源をAVRマイコンの+VとAVCCの2か所に接続します。マイコンが裏向きなので配線を間違わないように注意します。ピン名のシールなどを利用すると間違いにくいです。裏面に貼るのでピン位置も反転します。シールを半分に切って、切った部分をピン側にもってくるように貼ります。
この製作の肝となる赤外線リモコン受信モジュールはDX妖怪ウォッチのLEDの透明な保持部に取り付けます。この位置がポイントです。写真の受信モジュールのすぐ右側はLEDの透明保護カバーが平らに形成されており、このカバーに当たった光は、ちょうど受信モジュールに導いてくれます。このため、受信モジュールを内蔵しても、とても高感度で受信することが出来ます。
受信モジュールに半田付けした茶色のコードはArduino Digital 8へ、紫色のコードはDigital 2へ接続します。中央はGNDです。やはりコードの数を少しでも減らすために、ここでは半田付けを行わず、基板をキャビに取り付けてから基板のGNDに直付けします。
そしてAVRマイコンに各信号コードを配線します。DX妖怪ウォッチのSW3〜SW6も基板のIC面に出ているので配線は容易です。
回路の配線コードはポリイミドテープで保護します。コードが引っ張られて半田付けしたICピンが曲がって隣のピンとショートすることを防ぐほか、組立時にコードの根元に力がかかって半田付け部で断線することを防止することも出来、あとで組み立てたり分解したりを繰り返すような場合に、効率が良くなります。
最後の半田付けは赤外線リモコン受光モジュールのGNDです。基板の絶縁膜を削って、基板に直接、半田付けします。ただし、この部分に裏蓋キャビの部品が接近しますので、うまく裏蓋が閉まるように気をつけます。
ここで、一度、組み立てて動作確認します。問題なく、動作していれば基板へホットメルトを充填します。充填後は修正できないので十分に注意してください。なお、TX、RX、Reset、GNDの4本の信号を引き出しておけば、後からスケッチの書き換えが可能です。
ホットメルトを充填する際はAVRマイコンの両端がしっかりと固定できるようにします。但し、赤外線リモコン受信モジュール部分は受光の邪魔にならないように注意します。
このホットメルト充填によって、本体に衝撃が加わった時に故障しにくくしています。また妖怪メダルを挿抜したときの基板の振動やAVRマイコンの半田付け部への力の加わりを低減します。特にお子様が利用される場合はホットメルトを充填することをお奨めします。あと、防水効果も得られ、水没しても壊れにくくなります。
基板からはみ出たホットメルトはナイフやニッパーなどで切断します。DX妖怪ウォッチの基板は歪な形状をしています。とくに基板の形状が斜めにカットされている部分は裏蓋キャビから部品が飛び出している箇所を避けるためのカットですので、要注意です。(裏蓋キャビが閉まらなくなります)
以上で完成です。なお、当方の情報をもとに製作した改造品に関して何らかの事故や被害が発生した場合、当方は一切の責任を負いません。全て自己責任で製作ください。
ここではDX妖怪ウォッチ零式のハードウェア改造方法を解説しますが、前項の白の改造と重複する説明は省略します。
DX妖怪ウォッチ零式の基板から電源とメダルの凹凸パターンコード検出用のスイッチの信号線を引き出します。下図に引き出した様子を示します(基板の裏側面の写真です)。
引き出すのは上の写真において赤文字で示した信号線です。青文字の線は製品の段階でLED、マイクロスイッチ、スピーカ、電源スイッチのために既に引き出されている既存の信号線です。
電源VCCは電解コンデンサのパッドから引き出します。スイッチの信号名SWn(例えばSW6)は零式ではSn(例えばS6)に変更になっています。白タイプでSW3〜SW6だった信号がS3〜S6となっていますが、ここではSW3〜SW6と示すことにします。
SW3とSW5は大きなスルーホールがありますので容易に引き出すことが出来ます。基板表面にS3やS5と書かれた検査用端子があるので、すぐに見つけることが出来るでしょう。
SW4とSW6は小さなスルーホールです。しかも中央のICのモールドのギリギリにあるので、少しモールドを削らなければならないかもしれません。近くに別のスルーホールがあるので必ず表面のS4とS6の検査用端子と導通があるかどうかを確認し、間違わないように注意します。また、SW6の引き出し部は電解コンデンサの上端と接触する懸念もあるので、引き出し後に絶縁処理が必要です。
次にArduinoのブートローダと零式用のスケッチを書き込んだAVRマイコンATmega328Pを実装します。
妖怪ウォッチの基板上のICのモールドは丸みを帯びています。この上にAVRマイコンを実装するので上図のように少しモールドを削って平らにしておきます。削りすぎてICを壊さないように注意してください。
取り付け位置は下図を参考にし、本体に収まるように注意しながら決めます。とくにGNDの部分と図の右側のArduinoのDigital 7、Digital 8端子の近くにはケース内に基板用の保持部があり、収納時に干渉しやすい場所です。
妖怪ウォッチの基板のSW3〜SW6をArduinoのDigital 3〜Dijital 6へ配線します。引き出し順は左からSW3,SW5,SW4,SW6の順になっていますが並びはSW3,SW4,SW5,SW6になります。SW4とSW5を間違えないように気をつけます。
電源やGNDは白タイプのものと同様です。ただ、零式はスペースが少ないのでマイコンのパッケージの印刷面でのGNDの相互接続は省略し、後ほど相互接続することにしました(下図)。なお実力的には6番ピンのみを妖怪ウォッチの基板に半田付けしても動作しますが、数10Ω程度のインピーダンスがありますので、何らかの接続があった方が良いでしょう。
あと、製作後に気づいたのですが、マイコンが邪魔になってLEDとマイクロスイッチ用の配線の引き回しが少し遠くなり、組立時に苦労することになりました。LEDは上図の状態で垂直に折り曲げれば問題ありませんが、マイクロスイッチの方はSW3とSW5の配線が邪魔になります。SW3とSW5の配線をマイクロスイッチ用の信号線の下側に引き回しておいた方が良いでしょう。
次に赤外線リモコン受信モジュールをArduinoのdigital 2へ接続します。赤外線リモコン受信モジュールの電源はArduinoのdigital 6へ、GNDもArduinoマイコン上のGNDに接続します。下図は右下の赤外線リモコン受信モジュールの3本の配線がAVRマイコンに接続されている様子を示しています。
以上の接続後、動作確認し、問題が無ければ白タイプの時と同様にホットメルトを注入し、本体の落下やメダルの挿抜などでAVRマイコンや配線などが断線しないように固定します。
さて零式においても製作の特長の重要なポイントは高感度に赤外線リモコン信号を受光することです。今回もサーチライト(発光ダイオード)部分に受光モジュールを搭載することで、感度を高めます。
下図はその実装例です。LEDの右側の黒い箱(上部にドーム状のレンズがある)が赤外線リモコン受信モジュールです。LEDやLEDカバーのカット面に赤外モジュールのレンズが近づいていることが分かります。LEDやLEDのドームが集光した光はプラスチックの端面で放射しやすくなるので、それを受け止めることで感度を高めています。さらに零式はLEDドームが大きいこともあり、受光モジュールのレンズをLEDドームと同じ方向に向けることで、直接受光も行っています。(外部からも僅かながら赤外線の受光レンズが見える。)
受光モジュールの3本の配線用のリード線は正座するように折込みます。少なくとも受光モジュールの右側には上キャビと下キャビの貫通管が通るので、この付近に配線が通らないようにします。元々(改造しない状態の)配線ですら貫通管に引っかかりやすく、私が購入した商品は初めからコードが挟み込まれてしまっていました。改造後に組み立てる場合も、元々のコードの引き回しが悪いので、せめて改造で追加したコードは適切な引き回しを行っておかないと、キャビの組立がとても困難になってしまいます。
さらに、外線リモコン受信モジュールをこの場所に実装するためには、サーチライト用のLEDの片側の端子が邪魔になります。そこで、LEDの両方の端子を写真の左側の隙間に入れ、これらの端子がショートしないようにホットメルトで絶縁保護しました。さらに下キャビ側にリブが出ていて、LEDの端子を押さえつけるので、リブを1.0mmだけ削って高さを調整しました。写真では分かりにくいですが、LEDが約1mmほど右側に寄るので若干斜めになります。このあたりは、キャビやリブを0.数mmずつ削りながら調整し、ホットメルトで固めました。
幸いにもLED部分は独立した細いビスがあります。多少のずれは矯正できるので、性能、絶縁などを優先して製作し、無理やり押し込むという方法もあるでしょう。
あと零式のサーチライトは白タイプに比べ、遊びの上で使う頻度が少ないと思います。それなら、LEDを外してしまうという方法もありかと思います。
以上で完成でが、本サイト内の情報をもとに製作した改造品に関して何らかの事故や被害が発生した場合であっても、当方は一切の責任を負いません。全て自己責任で製作ください。
当ページでは妖怪ウォッチ内のSW3をLSB、SW6をMSBとし先に入力される4ビットデータを上位桁とする12ビット列のコードとしました。論理は突起のありを「1」、なしを「0」としています。また、メダルの上から4列目のデータはコードに含みません。
これは、スイッチの並びやメダルの方向から考えて左上が上位となるコード体系であり、またコードの解析結果から考えても妥当なコード体系と思われます。もちろん、参考文献にしたサイトもこの方法です。
しかし、サイトの中には右側(SW3)を上位ビット(MSB)とするサイトも見受けられます。これはメダルの「裏面」から左右反転したパターンコードを読み違えたものと思います。凹凸パターンコードが規格として公開されているわけでは無いので、誤りではありませんが、ネット上に公開されている凹凸パターンコード利用する際は、どちらのフォーマットなのかを意識しなければならないです。
DX妖怪ウォッチ白、零式ともにパターンコードは連続していません。これは挿入/装着の方向検出と、挿入途中で前の段に戻ってしまった場合の異常検出、メダルを反対側に入れた場合の検出、読み取り同期のために必ず1ビットが必要などの用件をみたすために使用しています。元々1列当たり16パターン、4列で65536通りのパターンが作成できますが、実際は1列あたり11パターンの3列しか無く、1000パターンぐらいの組み合わせになります。また、妖怪ウォッチ白では1列目のパターンが4パターンしか無く最大の組み合わせで480パターン程度となっていました。
さらに理由は分からないのですが、前記の不連続以外のルールで不連続となっている部分があります。例えば、零式であれば、0x15Fの次は0x359まで凹凸パターンコードが存在しません。零式にはこういった連続抜け部分があり、本スケッチのように凹凸パターンコードを順送りするような場合に詳細な解析が必要になります。
現時点で把握している零式の有効な凹凸パターンコードは以下の通りです。
339〜 351, 857〜 863, 1617〜1617, 1619〜1619, 1624〜1631, 1873〜1887, 2139〜2139, 2141〜2142, 3090〜3281, 3484〜3487, 3505〜3508, 3510〜3522, 3665〜3679, 3921〜3934 |
電源投入時や音声再生開始時の瞬間は消費電流が増大します。とくに音声再生中は0.5Vくらいの電圧降下が生じる場合があります。このため、電池の終止電圧(電池が切れて実質的に動作しなくなる電圧)が高まり、バッテリ寿命が短くなったり、Arduinoの動作が不安定になったりします。
これを防ぐために電源に導電性高分子アルミ電解コンデンサを追加する方法があります。電源投入時の電圧降下防止には電池の入力部に追加するのが良いでしょう。音声再生の電圧降下防止用であれば電源スイッチ後の方が効果が高まりますが、あまり大きなコンデンサを入れると突入電流の増加でマイコンの起動が不安定になります。
ただし、大容量コンデンサはリーク電流が生じるので、かえって電池寿命を短くしてしまう場合があります、さらに大容量のコンデンサはサイズも大きく、本体内に実装するのが容易ではありません。そこで、超小型の高分子コンデンサなどを使用します。
なお、音声再生中の電圧降下によりArduinoがリセットされた場合、現在のコード番号やメダルの状態を忘れてしまい、その後の再生に不具合が生じる場合があります。こういった場合は、一度、音量ボタンや決定ボタンなどでメダルを散り外した状態に確定してください。
時計型の妖怪音声おもちゃ(白)用の凹凸パターンコードの赤外線リモコン制御ソフト「IR to Yok Code Converter for Arduino」にはシリアル通信機能(9600 baud)が搭載されています。
Arduino IDEの右上のアイコン「シリアルモニタ」を開き、右下の設定を「LFのみ」と「9600 baud」を選択すると、動作状況をモニタすることが出来ます。
妖怪の凹凸パターンコードを入力することも可能ですが、マイコンのスリープ状態の時はシリアル入力を受け付けないので、ほとんど入力することが出来ません。シリアル通信を使用したい場合は、define値「IrRemoEN」を0にセットして赤外線リモコンでの受信機能をOFFにしてください。なお、この場合は電池がすぐに無くなりますので、パソコン等から電源を供給するようにしてください。
本サイトで公開しているスケッチは、前述のとおりボタン電池でArduinoを駆動することを前提にしているのでスリープ機能を搭載しています。
スリープ状態から復帰させるのに、ウォッチドックタイマーを利用することにしました。参考文献はソースコード「WDTimer.ino」に記載しています。
本スケッチでは8秒ごとに起動して変数timeをインクリメントし、time=8(64秒)となった時に赤外線受信モジュールの電源を切り、完全にスリープするようにしました。
零式のスケッチには実メダルの凹凸パターンコードを解析する機能が搭載されています。しかし、Arduino UNOなどのATmega328 ではDigital 2とDigital 3しか割込み機能が動作しません。このため、メダルの最上段のSW3(LSB)側に突起があれば問題なくコードが解析できるはずでした。
ところが、零式ではLSBが「0」となるコードが大半です。このためスリープから復帰するための割込みがかけられないので、当該機能を使うことが出来ません。とはいえ、3列の内1列でもLSBが「1」となっていればメダルの挿入/取り出しの方向を検出することが可能につき、そのように利用しています。
前述のウォッチドックタイマーの参考文献にはAVRマイコンの他のGPIOから割込み入力する方法も書かれており、Digital 4〜6から割り込むことも可能のようなのですが、今のところ対応していません。また、解析機能もコーディングしただけで未だ動作確認をしておりません。
当サイトは広告収入で運営しています。下記の広告(アフィリエイト)のカウント次第で、徐々に情報を追加いたしますので、何卒ご協力をお願いいたします。
以上は少し難し目の話でした。息抜きに、改造メダルも作ってみました。表面はメダルの画像をカラープリンタなどで印刷して貼り付けます。
元の画像には著作権があるので、取り扱いには十分に注意して下さい。作成したメダルを他人に貸したり譲渡したり、もちろん売ったりするのは犯罪です。
実際には印刷することも無断コピーです。適切な対価を支払って購入するべきです。ただ、欲しいメダルを指定して購入することが出来ない販売方法については疑問もあります。不要なメダルに適切かどうか分からない対価を払わされているように感じる方も多いのではないでしょうか。
腹巻をした「ドラ〇もん」のような図柄の改造メダルは、製作例を示したものです。特徴的な部分にはモザイクを入れておりますので、このレベルまではご容赦ください。
次に裏面です。図柄に合わせてコードを改造します。突起部の切断はニッパで切断し、彫刻刀やカッターナイフで平らにします。突起部を増やす場合は、ホットメルトで作成します。
この製作に関し、元となる製品内部の情報をコピーするようなことは、行っておりません。全メダル再生は、商品であるDX妖怪ウォッチ内に予め記録されている音声の再生によって実現していますので、著作権を侵害していないものと考えています。
また「妖怪ウォッチ」は株式会社レベルファイブの登録商標です。当ページでは元の商品である「DX妖怪ウォッチ」の名称を示す以外には用いておりません。
妖怪の凹凸パターンコードやアイデアの一部にサイト「妖怪〜情報局」内の「dx妖怪〜用メダルの音声解析対応表」を参照して流用いたしました。同サイトより許可を得て公開、ソフト配布を行っております。
もし、各種の権利上の問題が発生した場合であっても、当方は、一切の責任を負いません。また、当ページを予告なく削除する場合があります。
前記のサイト「妖怪〜情報局」による貴重な情報を参考にさせていただき、短時間で製作することが出来ました。心より感謝致します。