DesignSpark Electrical Logolinkedin

Arduinoをタッチで操作! Digilent製タッチパネルシールドをレビュー

この綺麗な2.8インチスクリーンをなぞることで、Arduino のガジェットを操作できる

先日販売開始されたDigilent製マルチタッチディスプレイシールド 「410-317」 (136-8068)は、ARDUINOを使ったマルチタッチ操作ソリューションを手軽に実現できるQVGAパネルモジュールだ。Arduino用のサンプルコードも用意されており、簡単にタッチ操作UIを実現できる。本記事では、この新たなDigilentマルチタッチディスプレイシールドについて紹介する。

ハードウェア

 

今回紹介するArduinoシールドの主な特徴は以下が挙げられる。

  • QVCA解像度の2.8”ディスプレイ(320×240)
  • 指2本同時にタッチ操作可能なパネル
  • PIC32MZ マイコン

chipKIT向けに提供されているArduinoライブラリを利用し、SPIを介して接続することができる。

 

ピン配、回路図、その他ハードウェア詳細についてはリファレンスマニュアルを見てほしい。

Multi-Touch Display System (MTDS)

本シールドはDigilentのマルチタッチディスプレイシステム(MTDS)方式を活用している。
https://www.rs-online.com/designspark/rel-assets/dsauto/temp/uploaded/MTDS_BD.jpg?w=650

 画像は digilentinc.com. に掲載のもの

上図の黄色ブロックがMTDSにあたる。緑がユーザのプログラムで青い矢印がハード的な接続を意味している。ディスプレー側がブラックボックス化しており、ユーザプログラム側では予め用意された関数を使うだけでパネル操作が行える。この方式により、開発する上で以下のようなメリットを得ることができる。

  • Arduinoライブラリを用い、たった数行のコードでUIを設計
  • microSDに保存されたファイルからバイナリの透明性をもつ画像を描画
  • リッチなボタンの描画やステータス確認が、関数呼び出しだけ可能

また、MTDSはchipKITとArduinoのサポートに加えて、Pmodマルチタッチディスプレイモジュール(410-341)ボードとPmod MTDS IP coreとライブラリを利用することで、FPGAボード「Arty (Xilinx FPGA/Zynq搭載)シリーズ」でも使用可能だ。

ソフトウェアセットアップ

我々は、chipKIT uC32(775-7346) Arduino互換ボードとArduino IDEで試してみることにした。まず、Arduinoソフトウェアをインストールし、さらにchipKIT Coreをインストールする必要がある。このインストールしたCoreにはchipKITボードのサポートが追加されているはずだ。IDEの最新バージョンでは、新しいボードマネージャーのURLを追加し、検索するだけで簡単に追加できる。

マルチタッチディスプレイシールドのArduinoライブラリ、サンプル、およびその他関連ドキュメントは、MTDSリファレンスのWebサイトからZIP形式でダウンロード可能なので活用していこう。このZIPファイルにはクイックスタートガイドと、シールドに挿入するMicroSDカードに追加するためのビットマップイメージのリソースも含まれている。



Arduinoライブラリ

このシールド用に以下の2つのArduinoライブラリが提供されている。

MTDS

MTDSはcore APIと以下の3つのオブジェクトを提供する

  • MTDS mtds; // グラフィックや基本サービスへアクセスするためのオブジェクト
  • MTFS mtfs; // ファイルシステム用のオブジェクト
  • MTWS mtws; // ウィンドウ生成システム用のオブジェクト

簡単な例を見てみよう。グラフィックスシステム関数を利用して、ディスプレイにピクセルを配置するためには以下のコードを使用する。

mtds.SetPixel(hdsDisp, 10, 20, clrWhite)

提供されているMTDSライブラリのプログラマーズリファレンスマニュアルは100ページもあり、しっかりとまとめられている。描画状態、座標系、色などの基本的な“概念”とともに、スタートアップと初期化についてもカバーしているのだ。

MyDisp

MyDispライブラリは高水準なインタフェースを提供する。グラフィックスをレンダリングし、簡単なタッチインタフェースを生成することが可能なのだ。たとえば、ディスプレイの左上の隅から100ピクセル右下に線を引くためには以下のようなコードを記述すればよい。

mydisp.drawLine(0, 0, 100, 100);

また、付属しているプログラマーズマニュアルは座標系、色値、ペンパターン、タッチパネル操作、UIボタンなどの主要な概念についてまとめられている。現在のところマニュアルは21ページしかなく、ライブラリとして利用に必要なことについてのみまとめられている。.

サンプル

MtdsDemo1スケッチのスクリーンのひとつ

本製品にはMTDSライブラリを使ったデモが7つ提供されている

  1. グラフィカルAPI関数とサイクルをそれぞれ異なる様々なデモを行う
  2. ディスプレイにグラフィックスをレンダリングし、SDカードのファイルへビットマップの保存、再度描画を行う
  3. SDカードからビットマップをロードし、ディスプレイに表示する
  4. タッチパネルの利用例についてのデモを表示する
  5. (4)の横向きのもの
  6. いくつかのグラフィカルな機能の利用のデモを行う
  7. DrawBitmap()関数の使用例のデモを行う

MyDispDemo3スケッチのボタン、タッチ、処理中を示すホイールのデモの様子

MyDispライブラリのため、さらに3つのデモスケッチがある。

  1. SDカードに保存されたビットマップから取り出したイメージを描画する
  2. タッチボタンとユーザインタフェースを作成するためのライブラリの利用デモを行う
  3. (2)に類似したもので、ボタンに異なるビットマップを利用し、処理中を示すホイールのアニメーションの例などを含む、その他の機能についてのデモを行う

最後に

Digilentマルチタッチディスプレイのシールドは、マルチタッチ操作を手軽に実現できるモジュールだ。鮮やかなQVCA解像度のスクリーンをマルチタッチで操作し、Arduinoを制御することができりる。ディスプレイの動作方法について知らなくとも、グラフィックやタッチといった機能を利用できる。こうしたことから、プロトタイプ開発時間を短縮できるだろう。

Andrew Back

Open source (hardware and software!) advocate, Treasurer and Director of the Free and Open Source Silicon Foundation, organiser of Wuthering Bytes technology festival and founder of the Open Source Hardware User Group.