ひとしれずひっそり

主にソフトに関することをメモしていきます。過程をそのまま書いていたりするので間違いが含まれます。鵜呑みしない様に。

1.9インチ 91セグメント I2C電子ペーパモジュール(1)

1.9インチ 91セグメント I2C電子ペーパモジュールwww.switch-science.com

ドットマトリックスのe-Paperデバイスと思って買ったら違うらしい。ちょっと失敗。

液晶表示の様にセグメントがある様だ。というかセグメントと書いてるよね。確認不足。

見た目はSwitchBot 温湿度計に近い感じがする。
値段的にはSwitchBot 温湿度計買った方が良さそうな感じ。

SwitchBot 温湿度計www.switchbot.jp

テストを兼ねて温湿度計に仕上げることを目標としよう。

とりあえず使い方を覚える。

製品情報はこちら

www.waveshare.com

Arduinoのサンプルがある。

www.waveshare.com

今回M5Stamp picoを使用する。
ピンは2列あるが点対象になっているだけで片側だけ使えば良さそう。

ピン割はこの様にしよう。

M5Stamp pico e-Paper
3V3 VCC
GND GND
G21 SDA
G22 SCL
G18 RST
G19 BUSY

https://static-cdn.m5stack.com/resource/docs/static/assets/img/product_pics/core/stamp_pico/stamp_pico_pins.webp

https://www.waveshare.com/w/upload/6/68/1.9inch_Segment_e-Paper_Module-Aduino.jpg

サンプルはこちらからダウンロードできる。

https://www.waveshare.com/w/upload/f/f6/E-Paper-Segment-Code.zip

PlatformIOでプロジェクトを作り、サンプルにあるEPD_1in9.cppとEPD_1in9.hファイルをsrcディレクトリにコピーする。

EPD_1in9.hでピン番号定義しているので変更。

#define EPD_BUSY_PIN 19
#define EPD_RST_PIN 18

M5Stampの初期化をちょっと変更してあとはそのままで動作させてみる。

#include <Arduino.h>
#include "EPD_1in9.h"
#include <M5Unified.h>

#define I2C_SDA_PIN   21
#define I2C_SCL_PIN   22

void setup() {
  auto cfg = M5.config();
  M5.begin(cfg);
  Wire.begin(I2C_SDA_PIN, I2C_SCL_PIN);
  GPIOInit();
  EPD_1in9_init();

    EPD_1in9_lut_5S();
    EPD_1in9_Write_Screen(DSPNUM_1in9_off);
    delay(500);
    
    EPD_1in9_lut_GC();
    
    EPD_1in9_Write_Screen1(DSPNUM_1in9_on);
    delay(500);
    
    EPD_1in9_Write_Screen(DSPNUM_1in9_off);
    delay(500);
    
    EPD_1in9_lut_DU_WB();
    EPD_1in9_Write_Screen(DSPNUM_1in9_W0);
    delay(500);
    EPD_1in9_Write_Screen(DSPNUM_1in9_W1);
    delay(500);
    EPD_1in9_Write_Screen(DSPNUM_1in9_W2);
    delay(500);
    EPD_1in9_Write_Screen(DSPNUM_1in9_W3);
    delay(500);
    EPD_1in9_Write_Screen(DSPNUM_1in9_W4);
    delay(500);
    EPD_1in9_Write_Screen(DSPNUM_1in9_W5);
    delay(500);
    EPD_1in9_Write_Screen(DSPNUM_1in9_W6);
    delay(500);
    EPD_1in9_Write_Screen(DSPNUM_1in9_W7);
    delay(500);
    EPD_1in9_Write_Screen(DSPNUM_1in9_W8);
    delay(500);
    EPD_1in9_Write_Screen(DSPNUM_1in9_W9);
    delay(500);
    EPD_1in9_Write_Screen(DSPNUM_1in9_WB);
    delay(500);

    EPD_1in9_sleep();
    Serial.end();
    Wire.end();
}

void loop() {
  // put your main code here, to run repeatedly:
}

初期化時は真っ黒になる様だ。
全デジットが1から9まで順に表示したら全部のセグメントを点灯して終わる様だ。
e-Paperなので電源を切っても表示はそのまま。素晴らしい。

youtube.com

M5Stamp picoで1.9inch Segment e-Paper Moduleのサンプルプログラムを試して見る · GitHub