2019年11月28日追記:新しいライブラリ GxEPD2 を使った記事を書きました
→ 「電子ペーパー を ESP32 と Arduino開発環境で使う その2」
https://qiita.com/nanbuwks/items/266bf61726b005d8e221
以下は旧いライブラリで試したものです。
WaveShareの電子ペーパーモジュール。
https://www.waveshare.com/wiki/2.9inch_e-Paper_Module_(B)
2.9inの白黒赤のもの。
実態は GoodDisplay社 の E-Paper Display にインターフェース基板をつけたもの。
GDEW029Z10 2.9 inch 128 x 296 3 color SPI display
GDEW029Z10 には IL0373コントローラが内蔵されている。
http://www.good-display.com/download_detail/downloadsId=535.html
これらを使うことの出来るライブラリとして、GoodDisplay SPI ディスプレイ用の Arduino ライブラリがある。
https://github.com/ZinggJM/GxEPD
このモジュールを使った。
これを試してみた。
環境
- ちょっと前のArduino1.6.9
- Ubuntu Linux 16.04 AMD64
- ESP32
Arduino環境からESP32にプログラムできるようになっているとします。
インストール
まず上記ページから ZIP でダウンロードしました。
ライブラリのインストール方法は通常のライブラリと同様。
- GxEPD-master.zipを解凍して、
- できたGxEPD-masterフォルダを
- Arduinoのスケッチが保存されるフォルダのlibrariesフォルダ内部に移動
ArduinoIDEを起動して、サンプルプログラムGxEPD_SPI_TestExampleを使う。
以下の箇所をモジュールに合わせて有効なものを選びなおす。
// select the display class to use, only one
//#include <GxGDEP015OC1/GxGDEP015OC1.cpp> // 1.54" b/w
//#include <GxGDEW0154Z04/GxGDEW0154Z04.cpp> // 1.54" b/w/r
//#include <GxGDE0213B1/GxGDE0213B1.cpp> // 2.13" b/w
//#include <GxGDEW0213Z16/GxGDEW0213Z16.cpp> // 2.13" b/w/r
//#include <GxGDEH029A1/GxGDEH029A1.cpp> // 2.9" b/w
#include <GxGDEW029Z10/GxGDEW029Z10.cpp> // 2.9" b/w/r
//#include <GxGDEW027C44/GxGDEW027C44.cpp> // 2.7" b/w/r
//#include <GxGDEW027W3/GxGDEW027W3.cpp> // 2.7" b/w
//#include <GxGDEW042T2/GxGDEW042T2.cpp> // 4.2" b/w
//#include <GxGDEW042Z15/GxGDEW042Z15.cpp> // 4.2" b/w/r
//#include <GxGDEW075T8/GxGDEW075T8.cpp> // 7.5" b/w
//#include <GxGDEW075Z09/GxGDEW075Z09.cpp> // 7.5" b/w/r
実際の接続に合わせて設定を直す。ESP32で使うので、以下の箇所を
(変更前)
#elif defined(ESP32)
// pins_arduino.h, e.g. LOLIN32
//static const uint8_t SS = 5;
//static const uint8_t MOSI = 23;
//static const uint8_t MISO = 19;
//static const uint8_t SCK = 18;
// GxIO_SPI(SPIClass& spi, int8_t cs, int8_t dc, int8_t rst = -1, int8_t bl = -1);
GxIO_Class io(SPI, SS, 17, 16); // arbitrary selection of 17, 16
// GxGDEP015OC1(GxIO& io, uint8_t rst = D4, uint8_t busy = D2);
GxEPD_Class display(io, 16, 4); // arbitrary selection of (16), 4
↓
(変更後)
#elif defined(ESP32)
// pins_arduino.h, e.g. LOLIN32
//static const uint8_t SS = 5;
//static const uint8_t MOSI = 23;
//static const uint8_t MISO = 19;
//static const uint8_t SCK = 18;
GxIO_Class io(SPI, SS, 16, 17);
GxEPD_Class display(io, 17, 21);
コンパイルすると、
In file included from /tmp/arduino_modified_sketch_971536/GxEPD_SPI_TestExample.ino:51:0:
/home/nanbuwks/Arduino/libraries/GxEPD-master/GxEPD.h:5:17: fatal error: SPI.h: No such file or directory
compilation terminated.
とか
In file included from /tmp/arduino_modified_sketch_78349/GxEPD_SPI_MultiExample.ino:45:0:
/home/nanbuwks/Arduino/libraries/GxEPD-master/GxEPD.h:7:26: fatal error: Adafruit_GFX.h: No such file or directory
compilation terminated.
とかのエラーがでたので、
(変更前)
#include <GxEPD.h>
↓
(変更後)
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <GxEPD.h>
とするとOK.