はじめに
友人の作ったダイヤルを回せ!に感化されたのと、SPAJAMで使えたらいいよねということで黒電話を購入。
メルカリでクーポン使って1,000円以下というかなりお安くGET!
で、ダイヤルを検知できないと何もできないよね、ということでやってみた。
友人の以下の記事を参考にしてます。
なお、回路とかよくわからないことと、M5 Atom S3というか各ポートもよく理解していない(がさすがにグランドはわかる)のでおかしなところがあるかもしれないので、優しく指摘してくださいw
考え方
以下の考え方で実装しているつもり
実装はUIFlow2のブロックエディタで行った。
コードで書けばよかったかなと後からちょっと後悔
今回使っている黒電話は600-A1で、こちらの記事によると、1秒間に10パルス信号を発生させるらしい。
コード
考え方の図はブロックエディタで処理を構成してから考えをまとめるために作成
その後、コードに反映。
ちなみに以下を試してみて、アナログ入力&デジタル入出力でできたので、それを採用
パターン | 結果 |
---|---|
アナログ入力のみ | 値が取れない |
デジタル入力出力のみ | 受話器は取れるダイヤルのパルスを拾いきれない。ゆっくりダイヤルを回すと取れるので拾えてなさそう |
アナログ入力&デジタル入出力 | デジタル化された値がアナログで取れてるようでうまくいった |
M5AtomS3と黒電話の接続
以下のようにG1とグランドに接続
ちなみに、電話から赤と白の線がでいるが、赤とG1、白とグランド、赤とグランド、白とG1のどちらでもいいみたい。
ポイント
アナログ+デジタルにする際、初期化をアナログ→デジタルで行う。
逆にすると、値の取れ方がおかしくなった。
(これ、あってる?)
今後
まず、UIFlowで作った処理を考え方に沿ってもう少しスリムにしたい。
もう、アナログだけ、デジタルだけの処理は消そうかな・・・
AndroidとBluetoothで接続して、値だけ転送する。
ダイヤルの入力判定等はAndroid側で行うようにしたい。
あと、アナログ入力有効使っているときに、受話器から音が聞こえるので、音出せたら面白いよねーって考えているけど、どうすべきかわからない
追記
気になったので画面に簡易的なグラフを出して確認。
デジタル入力出力の時にゆっくり回すとダイヤルを認識した理由が気になったので。
とはいえ状況証拠だけなので何ともですが。
通常のダイヤルの場合、出力される値が最大値の半分未満っぽい
ゆっくり回すと周波数が大きくなる
認識できなかったことと、上記を踏まえると、M5AtomS3側か黒電話側の問題かわからないが、波形の立ち上がりが遅い、または弱い為、認識できないのではないかと思われる。
別の黒電話で試したいところ。
この記事の続き