PR 記事には広告が含まれています
スポンサーリンク
Translate

ニンテンドーDSのタッチパネルを使って電子ペーパーに手書きの絵が描けるようになりました

スポンサーリンク

ニンテンドーDSのタッチパネルが売っていたので、それを電子ペーパーで使えるようにしてみました。

スポンサーリンク

タッチパネル

DSiLL用交換タッチパネル

なるべく大きい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));
}

実行すると、こんな感じで座標が得られます。

スポンサーリンク

描いてみる

タッチパネルなかなか面白いです。