Program Resource

開発者向け各種コード、アルゴリズム、リソース情報ライブラリ もしくはねふぁの覚え書き

Arduinoで遊べるシールドの一つに、Seeed Studioから出ている電子ペーパーシールドがある。

DSC03432

電子ペーパーなので、一度画面に描画すると電源を切っても表示内容を保持する。ディスプレイユニットを基板から取り外しても表示はそのままだ。

DSC03435

電子ペーパーの利点としては、バックライトは無いが視認性は紙の様に良く表示内容の保持に電力を消費しないため非常に低電力で情報を表示させる事が出来る所である。あまり頻繁に表示内容を書き換えない場合、TFTやELに比べかなりバッテリー消費を抑える事が出来る。逆に、画面の表示更新の際一度全体を反転させる必要があり描画速度も遅い為、頻繁に画面を書き換える用途には不向きである。

シールド自体は1.44、2.0、2.7インチの電子ペーパーに対応している。写真は2.7インチのもの。

DSC03433

基板の裏側は色々なパーツが付いている。

DSC03434

Arduino MEGAの場合SRAMに描画内容をバファリングするが、Arduino UNOの場合メモリが足りないため、ワークエリアとしてSDメモリカードを挿しておく必要がある。このため、Arduino UNOの場合描画はややもっさりする。

Seeed Studioの電子ペーパーは硬く、曲げる事は出来ない。

DSC03436

Arudino UNOに付けた所とArduino MEGAに付けた所。シールドは薄くコンパクトに収まる。

DSC03437

DSC03438

基本的な使い方は簡単。まずはライブラリをインストールする。GitHubの右側にあるDownload Zipをクリックし、ダウンロードしたZipファイルをArduino IDEでライブラリ追加から追加する。

https://github.com/Seeed-Studio/Small_ePaper_Shield

画像を表示させたい場合はSeeed StudioのWikiサイトから画像をデータに変換するツールをダウンロードする

http://www.seeedstudio.com/wiki/Small_e-Paper_Shield
http://www.seeedstudio.com/wiki/images/1/18/EpdImageKit.zip

まずはサンプルのDrawを開き、実行する。Arduino UNOの場合シールドにSDカードを挿しておく。2.7インチの場合、SCREEN_SIZEを270に変更しておく。

#define SCREEN_SIZE 270 // choose screen size here: 144, 200, 270

DSC03440

drawRectangleやfillCircle等で図形の描画、drawString等で文字列の描画を行っている。描画関数でバッファーに描画後、display関数で画面に反映、clear_sdでバッファクリアしている。

void setup()
{
EPAPER.begin(EPD_SIZE); // setup epaper, size
EPAPER.setDirection(DIRNORMAL); // set display direction

eSD.begin(EPD_SIZE);
GT20L16.begin(); // init GT20L16, a font chip

EPAPER.drawRectangle(10, 10, 100, 80);
EPAPER.fillCircle(50, 50, 30);
EPAPER.fillRectangle(50, 65, 50, 20);

EPAPER.drawCircle(150, 50, 25);
EPAPER.drawCircle(150, 50, 20);
EPAPER.drawCircle(150, 50, 15);
EPAPER.drawCircle(150, 50, 10);
EPAPER.fillCircle(150, 50, 5);

EPAPER.drawHorizontalLine(120, 50, 60);
EPAPER.drawVerticalLine(150, 20, 60);

EPAPER.display(); // display, you can use this function

delay(1000);
EPAPER.clear_sd(); // clear sd card data(when use display next time, display is clear)
EPAPER.drawString("all clean!", 10, 10);

EPAPER.display();
}

シールドにはフォントROMがあり、drawStringやdrawUnicodeStringの関数で文字を出す事が出来る。Unicode文字サンプルに記載されているテーブルを見ると日本語が存在するが、筆者は日本語を表示させる事は出来なかった。

http://ash.jp/code/cn/gb2312tbl.htm

中国語は入っている様だ。

DSC03439

画像を表示させる場合、サンプルスケッチのimageを開き、SCREEN_SIZEを270に設定後picture.hを開く。picture.hに画像情報があるので、このデータを好みのものに差し替える。データはEPD IMAGE CONVERTERのツールを使う。

アプリ起動後、2.7インチ画面であればサイズを264×176に編集したPNGファイルを準備し、Openで開く。Forceにチェックを付け、Epd sizeを2.7インチに変更する。

Convertを押すとプレビューとコードが表示される。

epdtool

コードをコピーしpicture.hに貼り付け、epd_imageをimage_270に変更する(元々のimage_270データは削除)。また、サンプルの「static unsigned char」のままだとコンパイルが通らないので、constに変更しておく。

const unsigned char image_270[] PROGMEM = 

実行コード自体は2行しか無い。

void setup()
{
EPAPER.begin(EPD_SIZE); // setup epaper, size
EPAPER.image_flash(IMAGEFILE);
}

実行すると画像が電子ペーパーに表示される。

時計表示を行う応用編はこちら

[GPG] Arduino用電子ペーパー(e-paper eink)シールドと2.7インチ電子ペーパーディスプレイセット
[GPG] Arduino用電子ペーパー(e-paper eink)シールドと2.7インチ電子ペーパーディスプレイセット


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*