Arduinoにスーパーファミコンのパッドをつなぐ
mtm04に出品した和音マシンで、入力インターフェースにスーパファミコン(SFC)のコントロールパッドを使いました。簡単に使えるようにライブラリ化してあります。
パッド自体はケーブルを切断して、2550コネクタ(QIコネクタ)を付けています。信号系と電源系は使いやすいように別のコネクタにしました。
- 赤 : data
- 黄 : clock
- 橙 : latch
- 白 : Vcc(+5)
- 茶 : GND
下はライブラリに付けたサンプルです。単純にすべてのボタンをまとめて読む関数しか付けていませんが、これだけでも簡単に使えるでしょう。ヘッダファイルには方向キーやABXYボタンのマスクなども定義してありますので、ご利用ください。
#include <SFCpad.h> SFCpad pad(5, 7, 6); /* SFCpad pad(data,clock,latch) data : digitalI/O Pin Number to SFCpad data Out clock: digitalI/O Pin Number to SFCpad clock In latch: digitalI/O Pin Number to SFCpad latch In */ /* SFCpad cable Red Line : data Yellow Line : clock Orange Line : latch White Line : Vcc(+5) Brown Line : GND */ void setup(){ Serial.begin(9600); } void loop(){ unsigned int rawData; rawData = pad.readRaw(); /* readRow Funciton Returns pad status. each bit means Pressed Button */ Serial.print("----RLXArlduTEYB:"); Serial.println(0xF000+rawData,BIN); /* R: R Button L: L Button X: X Button A: A Button r: right l: light d: down u: up T: START Button E: SELECT Button Y: Y Button B: B Button */ delay(100); }
« 71円で16進7セグデコーダを作る | トップページ | JR-100でLチカしてみた »
「Arduino」カテゴリの記事
- bitDuinoでメロディを奏でてみた(2014.09.09)
- 世界最小?のArduino互換ボードを作ってみた(暫定版)(2014.08.27)
- 知らないとソン!? Arduinoの小ネタ色々(2014.07.05)
- WaveシールドをArduino MegaやArduino Leonardoで使える様にしてみた(2014.06.15)
コメント
この記事へのコメントは終了しました。
はじめまして。
プログラムはまったくの素人なのですが、
それぞれのボタンを押すと、具体的にどうなるのでしょうか?
0x0001とか0x0002といった信号がArduinoに送られるのですか?
初歩的なコメントですみません。
投稿: きのこ | 2011年9月 6日 (火) 21時21分
きのこさん、コメント公開とお返事が遅くてすみません。
さて、本題ですが、
rawData = pad.readRaw();
の様に、パッドの情報を取得すると、たとえば
Bボタンが押されていたら1が、
Yボタンが押されていたら2が、
Selectボタンが押されていたら、4が、
Startボタンが押されていたら8が、
rawDataに入ります。
で、Bボタンと、Yボタンが同時に押されていたら、
1+2で3がrawDataに入り、
SelectボタンとStartボタンが同時に押されていたら、
4+8で12がrawDataに入ります。
なので、これにビット操作をして、0かどうかを見ることで、
そのボタンが押されているかを知ることが出来ます。
投稿: まりす | 2011年9月13日 (火) 01時49分