Class Name: M5
Function:
Initialize LCD; initialize SD card; clear serial buffer, set serial baud rate to 115200; initialize I2C; set MBus mode; initialize Axp power management chip; initialize touch function; initialize RTC.
Function Prototype:
void begin(bool LCDEnable = true, bool SDEnable = true, bool SerialEnable = true, bool I2CEnable = false, mbus_mode_t mode = kMBusModeOutput)
Function Implementation:
void M5Core2::begin(bool LCDEnable, bool SDEnable, bool SerialEnable, bool I2CEnable, mbus_mode_t mode) {
// Correct init once
if (isInited == true) {
return;
} else {
isInited = true;
}
// UART
if (SerialEnable == true) {
Serial.begin(115200);
Serial.flush();
delay(50);
Serial.print("M5Core2 initializing...");
}
// I2C init
if (I2CEnable == true) {
Wire.begin(32, 33);
}
Axp.begin(mode);
// LCD INIT
if (LCDEnable == true) {
Lcd.begin();
}
// Touch init
Touch.begin(); // Touch begin after AXP begin. (Reset at the start of AXP)
// TF Card
if (SDEnable == true) {
SD.begin(TFCARD_CS_PIN, SPI, 40000000);
}
// TONE
if (SerialEnable == true) {
Serial.println("OK");
}
Rtc.begin();
}
Usage Example:
#include <M5Core2.h>
void setup() {
M5.begin();
}
Function:
Read the state of the buttons.
Function Prototype:
void update()
Function Implementation:
void M5Core2::update() {
Touch.update();
Buttons.update();
yield();
}
Usage Example:
#include <M5Core2.h>
void setup() {
M5.begin();
}
void loop() {
M5.update();
}
Turn off the power, wake up again using the PWR button.
void shutdown()
Turn off the power, wake up after the specified number of seconds using RTC.
int shutdown( int seconds )
Turn off the power, wake up at the specified time using RTC.
int shutdown( const RTC_TimeTypeDef &RTC_TimeStruct)
Turn off the power, wake up at the specified time and date using RTC.
int shutdown( const RTC_DateTypeDef &RTC_DateStruct, const RTC_TimeTypeDef &RTC_TimeStruct)
Usage Example:
#include <M5Core2.h>
RTC_TimeTypeDef RTCtime;
RTC_TimeTypeDef RTCtime_Now;
char timeStrbuff[64];
void setup(){
M5.begin(true,true,true,true);
RTCtime.Hours = 10;
RTCtime.Minutes = 30;
RTCtime.Seconds = 45;
M5.Lcd.setCursor(0,80);
M5.Lcd.println("");
M5.Lcd.println("BtnA: shutdown, use power button to turn back on");
M5.Lcd.println("");
M5.Lcd.println("BtnB: shutdown, wake up after 5 seconds");
M5.Lcd.println("");
M5.Lcd.println("BtnC: shutdown, wake up at RTC Time 10:30:45");
}
void loop(){
M5.update();
if(M5.BtnA.wasPressed()){
M5.shutdown();
}else if(M5.BtnB.wasPressed()){
M5.shutdown(5);
}else if(M5.BtnC.wasPressed()){
M5.shutdown(RTCtime);
}
M5.Lcd.setCursor(0,140);
M5.Rtc.GetTime(&RTCtime_Now);
sprintf(timeStrbuff,"RTC Time Now is %02d:%02d:%02d",
RTCtime_Now.Hours,RTCtime_Now.Minutes,RTCtime_Now.Seconds);
M5.Lcd.println(timeStrbuff);
}