ニンテンドーDSのタッチパネルが売っていたので、それを電子ペーパーで使えるようにしてみました。
タッチパネル
なるべく大きいDSi LLのタッチパネルをアマゾンで買いました。コネクタ部分がとても小さく特殊なので、aitendoで、0.5mmピッチ4ピンのFFC変換基板」を追加で購入しました。
プログラム
パネルから出ている4本に、GPIOからHにしたりLにしたりしながら、別のピンの電圧をA/Dしています。試行錯誤しながら、なんとかタッチされている座標を計算できるようになりました。
void loop() { int x = 0, y = 0; pinMode(touch_digital_x, OUTPUT); digitalWrite(touch_digital_x, HIGH); pinMode(touch_digital_nx, OUTPUT); digitalWrite(touch_digital_nx, LOW); pinMode(touch_digital_y, INPUT); pinMode(touch_digital_ny, INPUT); delay(2); digitalWrite(4, HIGH); x = analogRead(touch_analog_y); digitalWrite(4, LOW); pinMode(touch_digital_y, OUTPUT); digitalWrite(touch_digital_y, HIGH); pinMode(touch_digital_ny, OUTPUT); digitalWrite(touch_digital_ny, LOW); pinMode(touch_digital_x, INPUT); pinMode(touch_digital_nx, INPUT); delay(2); digitalWrite(4, HIGH); y = analogRead(touch_analog_x); digitalWrite(4, LOW); x = map(x, 130, 3000, 0, 800); y = map(y, 240, 3000, 0, 600); px = nx; py = ny; if (x > 0 && y > 0) { nx = x; ny = y; } else { nx = x; ny = y; px = nx; py = ny; } Serial.println(); Serial.println("x:" + String(x)); Serial.println("y:" + String(y)); }
実行すると、こんな感じで座標が得られます。
描いてみる
タッチパネルなかなか面白いです。
コメント