スーパーファミコン コントローラーの無線化プロジェクト:2ch化(SFC側)動作します!
前回 のコントローラーの無線化プロジェクト:2ch化の続き。 前回 SFCのコントローラー内のシリアル/パラレル変換のICが3.3Vでも動くという事がわかったので、ひょうとして、SFC本体側も3.3VでHIGH、LOW(ボタンが押されているか?おされていないか?)を判定できるのでは?そもそも5Vの半分は2.5Vで、3.3Vはそれを超えるのでアイパターンは目を開いてくれていて判定できるはず・・・ 2CH側へ、ジャンバーケーブルを突っ込んで、コネクタ中の端子に接触させる。黄色いテープで無理やり固定。 赤いケーブルがDATの出力。レベルコンバーターの5V側から出してやって動く事を確認。 その後、赤いケールを写真のようにLOW側、つまり3.3Vロジックの方に接続。それでもちゃんと動いてくれる事を確認! つまりDATはコントローラー側からSFC本体にどのボタンが押されているかの信号を送り込むラインだが3.3VでOK! 次に、P/SのトリガーがSFC本体から送られてきて、これをマイコンCH32V003でトリガーを検出する。この検出には11ピンをアサインしている。この11ピンはPC1で、このピンは5Vトレラント!つまり5Vを入力しても壊れないピン。つまり、3.3Vロジック系と5Vロジック系の信号のやり取りのために、レベルコンバーターを用意していたが、結論は不要!! 非常に回路が簡素化される。 最終的には、上のようになった。2つのマイコンの間のデータのやり取りのためのSPIの接続4つだけというシンプル化。 【SFC側のESPのスケッチ】 前回 https://funasover.blogspot.com/2025/05/blog-post.html は1ch対応で動作確認していたのを2ch化する。 #include <ESP8266WiFi.h> // WiFi #include <WiFiUDP.h> // UDP #include "SPISlave.h" #define DAT_OUTPIN_BIT (1 << 4) uint32_t button_status; uint16_t button_status1; uint16_t button_status2; /...