タッチパネルでタブレットもどき

Arduino Duemilanove 328とNintendo DS用タッチスクリーンを購入したので遊んでみた。
ついでにXBeeも購入したので、タッチパネルから取ったデータをXBeeを経由して無線でPCに飛ばしてみる。
建築発明工作ゼミ2008: Arduino タッチパネル(4線式)4-wire touch panelを参考にしてやってみました。

材料

購入したのはスイッチサイエンスさんから。
購入品は以下。

名称 値段 参考
Arduino Duemilanove 328 3200円 購入ページ
XBeeシールド 2200円 購入ページ
XBee無線モジュール 2730円 購入ページ
XBeeエクスプローラUSB 2980円 購入ページ

そのほかにもブレッドボードやらジャンプワイヤーやらをちょこちょこと。

構成

全体像(左からArduino/ブレッドボード/タッチパネル)


XBeeレシーバ

手順

  1. Arduino用の開発環境づくり
    1. the Arduino Software(開発環境)のdownload
    2. JRE install(導入済みなら不要)
    3. the Arduino Softwareに同梱されているJava runtimeの削除(Windows Vistaの場合)→理由はこちら
  2. XBeeの設定
  3. Arduino用のコードを書く
  4. ArduinoにプログラムをUpload
  5. Arduinoで動作確認
  6. Arduinoからの通信を受けるプログラムを作成(C#で適当に作成)
  7. うごいたよー

といった感じ。
ちなみにthe Arduino Softwareの見た目はこんな感じ。
ソースは建築発明工作ゼミ2008: Arduino タッチパネル(4線式)4-wire touch panelのものを少し改変して使わせて頂いてます。

通信内容

Arduinoでタッチパネルの値をA/D変換した後は、その値を文字列に変換してXBeeを経由してPC側に送信している。
このときの文字列の形式は以下のようにしている。


X:***/Y:***[CR][LF]

  • X:の後ろにX座標の数値(ATmega32ではA/D変換は10bitなので0〜1023まで)
  • Y:の後ろにY座標の数値(同上)
  • 行末にCRとLFを付加

PCの方では、送られてくる文字列を元に座標を取得して線を引くだけである。

お絵かきしてみた

こんな感じで書けました。