インターフェース
PS2コントローラはSPIインターフェースで通信できるらしい。GPIOでパタパタして通信してる例も見られる。
先人の知恵
- GitHub - madsci1016/Arduino-PS2X
Arduino用ライブラリ。GPIO接続。 - Arduinoで純正PS2コンを使う - カニ食べたい
上記ライブラリを使用した例。 - PS2コントローラ型の2.4GHz無線コントローラ(VS-C1)をArduinoに繋いでみた: ROBOMIC(ブログ)
上記ライブラリを使用した例。 - Arduino用PS2インターフェース・ライブラリ:Studio Gyokimae
これもArduino用ライブラリ。GPIO接続。 - AVRでPS2コントローラーを使ってみた - 夕天の技術書
AVRのレジスタ直叩き。SPI接続。 - AVRでプレステのコントローラを使えるようにする。SPIの使い方: マイコン漬け
これもAVRのレジスタ直叩き。SPI接続。
とりあえず
上記のArduino-PS2X (PS2Xlib)を、GR-CITRUSで使ってみた。GR-CITRUSはRXマイコンベースのArduino系マイコンボードで、Arduino IDEからフォークした独自のIDE for GRが使用できる。しかし、PS2Xlibのサンプルスケッチをビルドしてみたところ、エラーが発生。アーキテクチャ依存部分のエラーだったので、修正版を本家からフォークした。
github.com
デジットで売ってた「無線コントローラキット」(どう見てもPS2コントローラで、受信器からジャンパ線が引き出されている)をGR-CITRUSに接続して動作を確認。アナログスティックの入力が上手くとれないが、いちおう動いた。
ホビーロボット界隈でよく使われるPS2コントローラ互換品としては、ヴイストンのVS-C3がある。受信器が小型なのでロボットに組み込むには有利。
課題
- SPIインターフェースを使用したライブラリを自作したい
- なるべく非同期なAPIにしたい。(待ちを発生させないように)
- アナログスティックの動作について要調査