pdf-icon

RTC

RTC関連の関数を使用する前に、初期化を実行してください。

RTC_Time & RTC_Date 结构体

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;

SetTime()

機能です:

構造体変数の時間を設定

原型関数です:

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(){}

GetTime()

機能です:

構造体の時間を取得

原型関数です:

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);
}

SetDate()

機能です:

構造体変数の日付を設定 原型関数です:

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() {}

GetDate()

機能です:

構造体変数の日付を取得

原型関数です:

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);
}

shutdown()

関数オーバーロードです1:

電源をOFFにし、再度起動するにはPWRボタンを押下して起動を促請する

void shutdown()

関数のオーバーロード2:

電源をOFFにし、指定の秒数の遅延後、RTCを用いてデバイスを自動的に起動する。

int shutdown( int seconds )

関数のオーバーロード3:

電源をOFFにし、指定のRTC時間構造体を入力し、その時刻にRTCを用いてデバイスを自動的に起動する。

int shutdown( const RTC_TimeTypeDef &RTC_TimeStruct)

関数のオーバーロード4:

電源を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();
}
On This Page