2021年10月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

最近のトラックバック

« 71円で16進7セグデコーダを作る | トップページ | JR-100でLチカしてみた »

2010年3月20日 (土)

Arduinoにスーパーファミコンのパッドをつなぐ

 mtm04に出品した和音マシンで、入力インターフェースにスーパファミコン(SFC)のコントロールパッドを使いました。簡単に使えるようにライブラリ化してあります。

Sfcpad

 パッド自体はケーブルを切断して、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);
}

「SFCPad.zip」をダウンロード

« 71円で16進7セグデコーダを作る | トップページ | JR-100でLチカしてみた »

Arduino」カテゴリの記事

コメント

はじめまして。
プログラムはまったくの素人なのですが、
それぞれのボタンを押すと、具体的にどうなるのでしょうか?

0x0001とか0x0002といった信号がArduinoに送られるのですか?
初歩的なコメントですみません。

きのこさん、コメント公開とお返事が遅くてすみません。

さて、本題ですが、
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かどうかを見ることで、
そのボタンが押されているかを知ることが出来ます。

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: Arduinoにスーパーファミコンのパッドをつなぐ:

« 71円で16進7セグデコーダを作る | トップページ | JR-100でLチカしてみた »

ウェブページ

無料ブログはココログ