Skip to content

Instantly share code, notes, and snippets.

@tanakamasayuki
Last active December 9, 2020 05:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tanakamasayuki/c5fab8f98e2ebdd425fc34fbf7b02a5a to your computer and use it in GitHub Desktop.
Save tanakamasayuki/c5fab8f98e2ebdd425fc34fbf7b02a5a to your computer and use it in GitHub Desktop.
#define LGFX_AUTODETECT
#include <LovyanGFX.hpp>
#include "I2C_BM8563.h"
LGFX lcd;
I2C_BM8563 rtc(I2C_BM8563_DEFAULT_ADDRESS, Wire1);
void setup() {
// Init lcd
lcd.init();
// Init I2C
int board = lcd.getBoard();
if (board == lgfx::board_M5Stack_CoreInk) {
Wire1.begin(21, 22);
lcd.setTextColor(TFT_BLACK, TFT_WHITE);
} else if (board == lgfx::board_M5Paper) {
Wire1.begin(21, 22);
lcd.setTextColor(TFT_BLACK, TFT_WHITE);
}
// Get RTC
rtc.begin();
I2C_BM8563_DateTypeDef dateStruct;
I2C_BM8563_TimeTypeDef timeStruct;
rtc.getDate(&dateStruct);
rtc.getTime(&timeStruct);
// 描画
lcd.setTextSize(3);
lcd.printf("%04d/%02d/%02d\n%02d:%02d:%02d\n",
dateStruct.year,
dateStruct.month,
dateStruct.date,
timeStruct.hours,
timeStruct.minutes,
timeStruct.seconds
);
lcd.display();
lcd.waitDisplay(); // 描画終了まで待たないと描画終了前に電源OFFになる
// Timer Set
rtc.SetAlarmIRQ(5);
// Sleep
if (board == lgfx::board_M5Stack_CoreInk) {
lcd.sleep();
pinMode(12, OUTPUT);
digitalWrite(12, 0);
} else if (board == lgfx::board_M5Paper) {
lcd.sleep();
pinMode(2, OUTPUT);
digitalWrite(2, 0);
} else {
esp_sleep_enable_timer_wakeup(5 * 1000 * 1000);
esp_deep_sleep_start();
}
}
void loop() {
// ここに入ってくるってことはスリープにはいれていない
delay(1000);
lcd.wakeup(); // 復帰しないと描画できない
lcd.printf("I'm not sleeping.\n");
lcd.display();
delay(4000);
ESP.restart();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment