【SOCDクリーナー】⑤ Arduino(アルディーノ)でSOCD編
ニュートラルも後押し優先もどちらもできる。そう、Arduinoならね
Arduinoとは
Arduino(以下アルディーノ)を知っていますか?
アルディーノとは、マイクロコンピュータ、いわゆるマイコンと呼ばれるものです。入力に対する出力を、組み込んだプログラムを用いて自由にコントロールすることができる優れものです。
これは、まさに最強のSOCDクリーナーの素材です。
論理回路では難しい「左右で後押し優先」にすることができます。また、切り替えのスイッチを付け加えることで、同時押しの処理を切り替えるようにすることもできます。
さらに、はんだ付けが劇的に簡単になります。はんだ付けの量も難易度もかなり下がりますから、はんだ付けが苦手な人でも論理回路使うよりは簡単に組むことができるでしょう。
悪いところもあります。
論理回路よりは遅延が大きいと思います。小さいとはいってもコンピュータなので、論理回路よりも処理は複雑だと思います。どこまで影響があるかは謎ですけど。
最大の問題はプログラミングが必要だということです。
アルディーノは基本的にC言語やC++を用いたプログラミングに従って動作します。プログラミングができなければ、一生このマイクロコンピュータを動かすことはできません。
私の話をすると、プログラミングの知識はもちろん、アルディーノの知識も全くない状態からインターネットで調べまくって完成させました。
だから、みんなできます。きっと、たぶん、おそらくは、、、
ミニ情報
下の動画は英語ですが、アルディーノでSOCDができることが分かった動画です。この動画の概要欄からアルディーノのプログラムが入手できるかと思いきや、リンク切れか削除されたかでリンク先が表示されません。残念
Modding a HitBox for asynchronous horizontal SOCD
というわけで自力で作ってみた
プログラムとシミュレーション
まずはプログラムを考えなきゃいけません
プログラムの基本については、「アルディーノ プログラム」とか「アルディーノ スケッチ」とか入れるとたくさん出てきます。
何にも知らない状態からアルディーノを手に入れてプログラムするのは無理があるってものなので、まずはシミュレーションをします。
そこで利用したのがこのサイトです。
これでブラウザ上の回路シミュレーションができます。アルディーノのプログラムを書いてみて、回路を組んでみて、といったようにシミュレートできます。英語のサイトで、かつサインアップなどしなければならないのがやや面倒です。
これを用いて、左右や上下の同時押しの仕様を考えていきます。ニュートラルにするのか後押し優先にするのか、切り替え可能にするのか、などなど考えていきます。
私の場合は、プログラムを考えるのに一週間はかかりました。全くの初心者だったので、いちいち文法を調べながらだったからしょうがないかもしれませんが。いざ作ろうという方は、時間がかかることを覚悟しておくといいでしょう。
私が作ったプログラムはifと whileの二種類の関数で完成しました。仕様としては、後押し優先とニュートラルが切り替えできるようにプログラムしました。その詳細は、長すぎるのでここでは書きません。
Arduinoの入手と回路製作
冒頭の写真のアルディーノは「Arduino uno」というアルディーノの基本形です。アルディーノには様々な種類があり、より大きいのから小さいの、かなり安い互換品まで様々です。
今回私が使ったのは「Arduino nano」というunoより小さい種類の、さらに互換品です。ヤフーショッピングで二つで送料込み1000円弱でした。安い、安すぎる。
大きさは半分くらいですが、性能は据え置きです。左側のUSB(Mini-b)を使ってパソコンから作ったプログラムをスケッチ(書き込み)します。
こいつを使って回路を組み、ユニバーサル基盤に乗せたものがこちらになります。
導線の量がかなり少なくなりました。
仕様の説明です。
ピン番号D2,D3,D4,D5をそれぞれGNDとショートさせると、それをコンピュータが感知してピン番号D9,D10,D11,D12の電圧をそれぞれGNDと同じ電位にし、そこに接続したパッド基盤が反応します。
前の記事で、GNDに直接つながなくてもパッドが反応することが分かったのでそうしました。
digitalReadに使ったピンはすべてinput_pullupにしてあります。
右のピンヘッダは、刺し込んでD6とGNDをショートさせることでSOCDの切り替えをするためのものです。刺さなければ後押し優先、刺したらニュートラルになります。
動作確認して完成です。
まとめ
今回がSOCDクリーナーについての総まとめになります。自分がSOCDクリーナーの研究をしながら、こうしてブログに情報を上げてきました。
ここまでSOCDクリーナーに焦点を当てたブログはないのではないかと思います。特に自作することに関してはどこにも負けない情報が載せられたと自負しています。
ここまでで、自分が知っているSOCDクリーナーに関する情報のほぼすべてを書くことができました。誰かの役に立てば幸いです。
以上です。