サイクルモードを無効にし、CoreS3 をタッチした後、即時に電源を切り、オフ時間が終了した後に電源を復帰させます。
#include "M5Unified.h"#include "Wire.h"#include "m5_unit_timerpwr.hpp" M5UnitTimerPWR timer_pwr; void setup(){ M5.begin(); Serial.begin(115200); M5.Display.setTextDatum(middle_center); M5.Display.setFont(&fonts::lgfxJapanMinchoP_24); while (!timer_pwr.begin(&Wire, TIMERPWR_ADDR, 2, 1, 400000U)) { M5.Display.drawString("Unit TimerPWR init Fail!", M5.Display.width() / 2, M5.Display.height() / 2); delay(1000); }; M5.Display.clear(); M5.Display.drawString("Unit TimerPWR init OK", M5.Display.width() / 2, M5.Display.height() / 2 - 20); M5.Display.drawString("Touch To Sleep 10S", M5.Display.width() / 2, M5.Display.height() / 2 + 20); // do something before sleep... // disable cycle sleep mode timer_pwr.set_cycle_sleep(false);} void loop(){ M5.update(); auto t = M5.Touch.getDetail(); if (t.wasClicked() || M5.BtnA.wasClicked()) { M5.Display.clear(); M5.Display.drawString("Sleep 10S!", M5.Display.width() / 2, M5.Display.height() / 2); delay(1000); timer_pwr.set_power_on_time(0, 0, 0); timer_pwr.set_power_off_time(0, 0, 10); timer_pwr.set_sleep(); }}
サイクルモードを有効にし、オン/オフ時間を設定して、サイクルが開始された後、オン時間が終了した時点で電源を切り、オフ時間が終了後に電源が復帰します。新しい設定が書き込まれるか、バッテリーが完全に消耗するまで、このサイクルが繰り返されます。
#include "M5Unified.h"#include "Wire.h"#include "m5_unit_timerpwr.hpp" M5UnitTimerPWR timer_pwr; void setup(){ M5.begin(); Serial.begin(115200); M5.Display.setTextDatum(middle_center); M5.Display.setFont(&fonts::lgfxJapanMinchoP_24); while (!timer_pwr.begin(&Wire, TIMERPWR_ADDR, 2, 1, 400000U)) { M5.Display.drawString("Unit TimerPWR init Fail!", M5.Display.width() / 2, M5.Display.height() / 2); delay(1000); }; M5.Display.clear(); M5.Display.drawString("Unit TimerPWR init OK", M5.Display.width() / 2, M5.Display.height() / 2 - 20); M5.Display.drawString("ON 10S / OFF 5S", M5.Display.width() / 2, M5.Display.height() / 2 + 20);} void loop(){ M5.update(); auto t = M5.Touch.getDetail(); if (t.wasClicked() || M5.BtnA.wasClicked()) { M5.Display.clear(); M5.Display.drawString("Start Cycle ON/OFF!", M5.Display.width() / 2, M5.Display.height() / 2); delay(1000); // enable cycle sleep mode timer_pwr.set_cycle_sleep(false); timer_pwr.set_power_on_time(0, 0, 10); timer_pwr.set_power_off_time(0, 0, 20); timer_pwr.save_flash(); timer_pwr.set_cycle_sleep(true); } if (t.wasHold() || M5.BtnA.wasHold()) { // disable cycle sleep mode timer_pwr.set_cycle_sleep(false); M5.Display.clear(); M5.Display.drawString("Stop Cycle ON/OFF!", M5.Display.width() / 2, M5.Display.height() / 2); delay(1000); }}
CoreS3 の場合、リセットボタンを 2 秒ほど長押しして、内部の緑色の LED が点灯したらボタンを離します。これでデバイスはダウンロードモードに入り、プログラム書き込みの準備が整います。
Unit TimerPWR を使用して CoreS3 にタイマーウェイクアップを提供します。 (注:実現するためには CoreS3 のベースのバッテリー電源を切断して接続する必要があります)。
CoreS3 のスクリーンをタッチして、単発のスリープウェイク操作を制御します。
スリープモードに入ります。