2軸アナログジョイスティックは縦軸と横軸で可変抵抗があり、抵抗値をアナログで読む事で傾き情報を取得できる。
しかし、ESP8266(ESP-WROOM-02)のマインはアナログ入力が一つしかないため、そのままでは1軸しか読み取る事が出来ない。
そこで、トランジスタを使って縦軸か横軸を選択した上でアナログ入力を読み取る事で、交互に軸のデータを読み取る事が出来る。
この場合アナログピン1本と選択用のデジタルピン2本を使用する。デジタルピンがHIGHの時横軸、LOWの時縦軸を選択する様に、インバーターを追加する。
これで、アナログピン1本と選択用デジタルピン1本で縦横2軸の情報を読み取る事が出来る。
ブレッドボード図にするとこんな感じ。
交互に読み取るESP8266用サンプルスケッチ。
#define PIN_D5 14
void setup() {
Serial.begin(115200);
pinMode(PIN_D5, OUTPUT);
}
void loop() {
digitalWrite(PIN_D5,LOW);
Serial.print(analogRead(A0));
Serial.print(" , ");
digitalWrite(PIN_D5,HIGH);
Serial.println(analogRead(A0));
delay(100);
}
ただ、試した所綺麗な状態のアナログ値を読み取れなかったので、抵抗値等調整が必要な様だ。
2chアナログ入力をSPI接続でデジタル変換するIC( mcp3002 )もあるので、こういった物を使用しても良い。