RTC関連の関数を使用する前に、初期化を実行してください。
typedef struct RTC_Time{
int8_t Hours;
int8_t Minutes;
int8_t Seconds;
RTC_Time() : Hours(),Minutes(),Seconds(){}
RTC_Time(int8_t h,int8_t m,int8_t s) : Hours(h),Minutes(m),Seconds(s){}
} RTC_TimeTypeDef;
typedef struct RTC_Date
{
int8_t WeekDay;
int8_t Month;
int8_t Date;
int16_t Year;
RTC_Date() : WeekDay(),Month(),Date(),Year(){}
RTC_Date(int8_t w,int8_t m,int8_t d, int16_t y) : WeekDay(w),Month(m),Date(d),Year(y){}
} RTC_DateTypeDef;
機能です:
構造体変数の時間を設定
原型関数です:
void SetTime(RTC_TimeTypeDef* RTC_TimeStruct)
使用例です:
#include "M5CoreInk.h"
Ink_Sprite InkPageSprite(&M5.M5Ink);
RTC_TimeTypeDef RTCtime;
void setup() {
M5.begin();
if (!M5.M5Ink.isInit()) {
Serial.printf("Ink Init faild");
while (1) delay(100);
}
M5.M5Ink.clear();
delay(1000);
RTCtime.Hours = 23;
RTCtime.Minutes = 33;
RTCtime.Seconds = 33;
M5.rtc.SetTime(&RTCtime);
}
void loop(){}
機能です:
構造体の時間を取得
原型関数です:
void GetTime(RTC_TimeTypeDef* RTC_TimeStruct)
使用例です:
#include "M5CoreInk.h"
Ink_Sprite InkPageSprite(&M5.M5Ink);
RTC_TimeTypeDef RTCtime;
RTC_DateTypeDef RTCDate;
void setup() {
M5.begin();
if (!M5.M5Ink.isInit()) {
Serial.printf("Ink Init faild");
while (1) delay(100);
}
M5.M5Ink.clear();
delay(1000);
// creat ink refresh Sprite
if (InkPageSprite.creatSprite(0, 0, 200, 200, true) != 0) {
Serial.printf("Ink Sprite creat faild");
}
RTCtime.Hours = 23;
RTCtime.Minutes = 33;
RTCtime.Seconds = 33;
M5.rtc.SetTime(&RTCtime);
}
void loop() {
char timeStrbuff[64];
M5.rtc.GetTime(&RTCtime);
sprintf(timeStrbuff, " %02d:%02d:%02d", RTCtime.Hours, RTCtime.Minutes,
RTCtime.Seconds);
InkPageSprite.drawString(10, 100, timeStrbuff);
InkPageSprite.pushSprite();
delay(15000);
}
機能です:
構造体変数の日付を設定 原型関数です:
void SetDate(RTC_TimeTypeDef* RTC_DateStruct)
使用例です:
#include "M5CoreInk.h"
Ink_Sprite InkPageSprite(&M5.M5Ink);
RTC_DateTypeDef RTCDate;
void setup() {
M5.begin();
if (!M5.M5Ink.isInit()) {
Serial.printf("Ink Init faild");
while (1) delay(100);
}
M5.M5Ink.clear();
delay(1000);
RTCDate.Year = 2020;
RTCDate.Month = 11;
RTCDate.Date = 6;
M5.rtc.SetDate(&RTCDate);
}
void loop() {}
機能です:
構造体変数の日付を取得
原型関数です:
void GetDate(RTC_TimeTypeDef* RTC_DateStruct)
使用例です:
#include "M5CoreInk.h"
Ink_Sprite InkPageSprite(&M5.M5Ink);
RTC_TimeTypeDef RTCtime;
RTC_DateTypeDef RTCDate;
char timeStrbuff[64];
void flushTime(){
M5.rtc.GetTime(&RTCtime);
M5.rtc.GetDate(&RTCDate);
sprintf(timeStrbuff,"%d/%02d/%02d %02d:%02d:%02d",
RTCDate.Year,RTCDate.Month,RTCDate.Date,
RTCtime.Hours,RTCtime.Minutes,RTCtime.Seconds);
InkPageSprite.drawString(10,100,timeStrbuff);
InkPageSprite.pushSprite();
}
void setupTime(){
RTCtime.Hours = 23;
RTCtime.Minutes = 33;
RTCtime.Seconds = 33;
M5.rtc.SetTime(&RTCtime);
RTCDate.Year = 2020;
RTCDate.Month = 11;
RTCDate.Date = 6;
M5.rtc.SetDate(&RTCDate);
}
void setup() {
M5.begin();
if( !M5.M5Ink.isInit()){
Serial.printf("Ink Init faild");
while (1) delay(100);
}
M5.M5Ink.clear();
delay(1000);
//creat ink refresh Sprite
if( InkPageSprite.creatSprite(0,0,200,200,true) != 0 ){
Serial.printf("Ink Sprite creat faild");
}
setupTime();
}
void loop() {
flushTime();
delay(15000);
}
電源をOFFにし、再度起動するにはPWRボタンを押下して起動を促請する
void shutdown()
電源をOFFにし、指定の秒数の遅延後、RTCを用いてデバイスを自動的に起動する。
int shutdown( int seconds )
電源をOFFにし、指定のRTC時間構造体を入力し、その時刻にRTCを用いてデバイスを自動的に起動する。
int shutdown( const RTC_TimeTypeDef &RTC_TimeStruct)
電源をOFFにし、指定のRTC時間構造体を入力し、その時刻にRTCを用いてデバイスを自動的に起動する。なお、同時に指定の、、の条件を満たさなければならない。
int shutdown( const RTC_DateTypeDef &RTC_DateStruct, const RTC_TimeTypeDef &RTC_TimeStruct)
使用例です:
#include "M5CoreInk.h"
void setup(){
M5.begin();
digitalWrite(LED_EXT_PIN,LOW);
M5.update();
M5.M5Ink.clear();
delay(500);
}
void loop(){
if( M5.BtnPWR.wasPressed()){
Serial.printf("Btn %d was pressed \r\n",BUTTON_EXT_PIN);
digitalWrite(LED_EXT_PIN,LOW);
M5.shutdown(5);
}
M5.update();
}