ロータリエンコーダの、見かけ上のパルス数をカウントします。
CCW
ならカウントをインクリメントし、CWならカウントをデクリメントします。カウント値は回転角に相当し、最大値を超えない範囲で循環するようにします。
CCW: 0 1 2 ... 198 199 0 1 2 ...
setup()
初期化を行います。
ロータリエンコーダの
A
相B
相の信号ピンを設定します。アナログスティックの傾き量テーブルを初期化します。
デバッグのためにログ出力の準備をします。
loop()
ロータリエンコーダの、見かけ上のパルス数を、ポーリングによりカウントします。
ロータリエンコーダの信号処理は、通常は割り込みを使用しますが、割り込みは他で 使用する予定があるため、ここではポーリングにより処理を行います。
デバッグのためにログを出力します。
結果
ロータリエンコーダを反時計回りに回転すると、以下のような結果となりました。
count: 0 RH: 255 RV: 128 count: 1 RH: 255 RV: 123
(中略)
count: 49 RH: 132 RV: 0 count: 50 RH: 127 RV: 0 count: 51 RH: 123 RV: 0
(中略)
count: 99 RH: 0 RV: 123 count: 100 RH: 0 RV: 128 count: 101 RH: 0 RV: 132
(中略)
count: 149 RH: 123 RV: 255 count: 150 RH: 128 RV: 255 count: 151 RH: 132 RV: 255
回転角
0
度(count = 0)
では、アナログスティックは右(RH = 255, RV = 128)
、 回転角90
度(count = 50)では、アナログスティックは上(RH = 127, RV = 0)、回転角
180
度(count = 100)では、アナログスティックは左(RH = 0, RV = 128)、回転角
270
度(count = 150)
では、アナログスティックは下(RH = 128, RV = 255)
、 となっているのがわかります。このように、信号処理と値の変換が確認できました。部品
ビットトレードワン
日本電産コパル電子 ロータリエンコーダ[RES20D-50-201-1] ¥1250
スイッチサイエンス
Arduino
をはじめようキット¥4320千石電商
【QIコネクタ】信号伝達コネクタ用ピン メス【F】(10本) ¥74×1
【QIコネクタ】信号伝達コネクタ(黒)1×4 2550-1×4 ¥21×1
ピンヘッダ 1列×40P (ストレート・標準ピッチ) 2544-1×40 15.1(6.3/6.3) ¥105
参考文献
[1] 設定用光学式エンコーダ REC/RES
カタログPDF - Copal Electronics
http://www.nidec-copal-electronics.com/files/f942ed53125803ced27338faf050ac566fe48106.pdf [2] Arduino
日本語リファレンス-
ポート操作http://www.musashinodenpa.com/arduino/ref/index.php?f=0&pos=850
ローリングスイッチユニットの製作
ローリングスイッチユニットの基本的な構造は、新方式ローリングスイッチ製作
[1]
を 参考にさせていただきました。非常に画期的な構造で、操作感覚も良好なものでした が、残念ながら正常に動作しなかったため、改良を加えました。部品として指定されていた、秋月電子通商で入手可能なロータリーエンコーダ
RE160F-40E3-20A-24P
は、機械接点がON/OFF
する摺動(しゅうどう)式で、チャ タリングやバウンスが避けられません。データシートを見ると、バウンスは2ms、
チャタリングは
3ms
とあり、不感時間を設けて対策することになります。実験の結果、ロータリーエンコーダを素早く回転した場合、信号を取りこぼしてしま い、回転を検出できなくなることがわかりました。
このため、ロータリーエンコーダは、チャタリングやバウンスの無い光学式のものを 使用することにしました。
ボタン上部の加工
三和電子のボタン
OBSF-30-B
の上部を取り外し、加工します。内部の構造をニッ パーで切り取り、ドリルで中心に9mm
の穴を開けます。ロータリーエンコーダの取り付け
加工した部品に、日本電産コパル電子のロータリエンコーダ
RES20D-50-201-1
を取 り付けます。このように、ピッタリと収まります。ボタン基部の加工
スイッチ部品を一旦取り外し、突起をニッパーで切り取り、元に戻します。
両脇にあるツメの一方を、ニッパーで切り取ります。ここから、ロータリーエンコー ダのケーブルを引き出します。
バネの加工と取り付け
バネを加工し、ボタン基部に取り付けます。加工するバネは、八幡ねじ 押しバネ
0.6×9×26 (線径×外径×長さ)が手ごろでした。これを 1/2
に切断し、ペンチでらせん状に曲げ、スイッチ部品に取り付けます。バネを切断する際は、鋼線を切断できるニッ パーでなければ刃を傷めてしまうので、注意して下さい。
各部品の取り付け
ボタン基部にボタン上部を取り付けます。一旦取り付けてしまうと、取り外すのが困 難なので、注意して下さい。ロータリーエンコーダのケーブルは、切り取ったツメの 穴から引き出し、QIコネクタで端末処理を行います。ケーブルが短いので、延長用の ハーネスを製作します。ケーブルは
AWG26
の太さが手ごろでした。また、ファスト ン端子を圧着した、ボタンの端子用ハーネスも製作します。こちらは少し太めのAWG22
が手ごろでした。ロータリーエンコーダの軸に、鍋ツマミを取り付けます。鍋ツマミは、デリッシュ 鍋ツマミ
LL
が丁度良い大きさでした。中心に始めから開いているネジ穴に、ドリル で6mm
の穴を開け、取り付けます。かなりきついので、注意して下さい。全ての部品を取り付けて完成です。
部品
ビットトレードワン
日本電産コパル電子 ロータリエンコーダ[RES20D-50-201-1] ¥1250
千石電商
三和電子
φ30
ゲームSW
(はめ込み) 青OBSF-30-B
(青) ¥173
日本圧着端子製造(JST) ファストン端子#110(メス) LTO-41T-110N (10個) ¥110
【QIコネクタ】信号伝達コネクタ用ピン メス【F】(10本) ¥74×2
【
QI
コネクタ】信号伝達コネクタ(黒)1×4 2550-1×4
¥21×3
【QIコネクタ】信号伝達コネクタ(黒)1×2 2550-1×2 ¥21
ピンヘッダ 1列×40P (ストレート・標準ピッチ) 2544-1×40 15.1(6.3/6.3) ¥105 協和ハーモネット
RKV 0.3×4
列L-1 4
芯リボンケーブル1m
¥250
協和ハーモネット RKV 10/0.12×10列 L-1 10芯リボンケーブル 1m ¥280
ジョイフル本田
八幡ねじ 押しバネ 0.6×9×26 (線径×外径×長さ) [入数
2] ¥162
デリッシュ 鍋ツマミ LL ¥204参考文献
[1]
新方式ローリングスイッチ製作http://extendead.web.fc2.com/iroiro/R_SW/R_SW.html
ローリングスイッチシールドの製作
Arduino
のローリングスイッチシールドを製作します。ブレッドボードで実験した回路を、Arduino用ユニバーサル プロトシールド基板上に実装します。
レバーとボタンとローリングスイッチユニットを接続するコネクタを配線します。
回路図 1
部品配置図 1
基板表面 基板裏面
PS2 1 2 3 4 5 6 7 9 1 2 4 3 5 LEVER
1 2 3 4 RENC GND O START GND
TC7SZ TC7SZ 125F
125F
完成写真 1
基板表面 基板裏面
ロータリエンコーダのピン配置が逆転してしまっているので注意して下さい。このま ま製作すると、サテライトが逆向きに回転してしまいます。ハーネスのコネクタを入 れ替えるなどして対応して下さい。
回路図 2
代替部品による回路です。TC7SZ125Fの代わりに
TC74HC125AP
を使用しています。オープンドレインの出力を
3V
でプルアップするのであれば、5Vで動作させても問題 ないようです。こちらの方が簡単に製作できると思います。部品配置図 2
基板表面 基板裏面
完成写真 2
基板表面 基板裏面
ロータリエンコーダのピン配置が逆転してしまっていたのを修正しました。
その他
コネクタは
QI
コネクタと標準的な2.54mm
ピッチのピンヘッダで実現していますが、使用した
L
型のピンヘッダが、通常のものとは異なる形のものでした。千石電商で入 手可能ですが、ジョイスティック本体内に収まるのであれば、ストレートのピンヘッ ダでも良いと思います。ジャンパ線は、耐熱通信機器用ビニル電線を利用しましたが、もっと安価な部品でも良いと思います。 部品配置図に
BANANAWANI MICOM. CULB
さんの
Arduino
プロトシールドのPasS
用データ[1]を使用させていただきました。PS2 1 2 3 4 5 6 7 9 1 2 4 3 5 LEVER
START GND
GND O 4 3 2 1 RENC TC74HC125AP
部品 1
秋月電子通商
1
回路3
ステートバッファ TC7SZ125F(TE85LF)(10個入) ¥100SOT23
変換基板 金フラッシュ (10枚入) ¥150細ピンヘッダ 1×40 (黒) ¥40
部品 2
千石電商
東芝
CMOS
ロジックIC TC74HC125AP ¥84
共通部品
千石電商
2545-1×40
ピンヘッダ1
列×40P (L
型・標準ピッチ)
¥84
秋月電子通商
Arduino
用ユニバーサル プロトシールド基板 ¥200ピンヘッダ 1×40 (40P) ¥40
耐熱通信機器用ビニル電線 2m×10色 外径
0.65mm ¥620
スズメッキ線(0.6mm 10m)
¥210
鉛フリーハンダ 0.8mm ¥280
参考文献
[1] BANANAWANI MICOM. CULB: Arduino
プロトシールドのPasS
用データhttp://bananawani-mc.blogspot.jp/2010/10/arduinopass.html
ローリングスイッチの製作
製作したローリングスイッチユニットと、
Arduino
+ローリングスイッチシールドを、ジョイスティック本体に組み込みます。ジョイスティック本体は、三和電子のボタン
OBSF-30-B
が取り付けられるものであれば、好きなものを利用して良いのですが、中古を除くと、選択肢は少ないと思います。HORIリアルアーケード
Pro
が確実なの ですが、ここでは、HORIファイティングスティックV3
を利用しました。部品の取り外し
折角なので、文献[1]を参考に、レバーを三和電子のレバー
JLF-TP-8Y
に交換するこ とにします。裏面のネジを外し、裏蓋を取り外します。レバーとボタンとコントロー ル基板があるのが分かります。これらを全て取り外します。レバーとコントロール基板は、ネジで固定されているだけなので、ネジを外すと取り 外せます。レバーの握り玉は、シャフトがネジになっていて、固定されています。
シャフトの溝にマイナスドライバーを差し込んで回すと、握り玉が外せます。
ボタンは基板に半田付けされているので、半田吸い取り器を使って基板を外し、一個
ずつ取り外します。上部にある、スタートボタンや連射スイッチ等は、とりあえずそ のままにしておきます。
レバーの加工
三和電子のレバー
JLF-TP-8Y
のレバーガイドを取り外し、加工します。レバーガイド の上下左右の位置にある窪みを貫通するように、ドリルで3mm
の穴を開けます。た だしこれだと少しきついので、できれば3.2mm
のほうが良いと思います。窪みの反 対側にある突起は、予めニッパーで切断しておきます。穴の位置は、レバーを上から見たとき、上下左右の位置に予め空いている穴と一致す るのが、正しい位置です。
レバーハーネスの加工
ハーネスのピン番号に対応するケーブルの色は、以下のようになっていました。ハー ネスによっては、色が異なるかもしれません。
1 2 3 4 5 橙 緑 黒 赤 黄
レバーを下から見たとき、コネクタが左側に位置するようレバーを取り付けるものと