mirror of
https://github.com/m5stack/m5-docs.git
synced 2026-05-20 10:23:01 -07:00
@@ -0,0 +1,248 @@
|
||||
# Power
|
||||
|
||||
## setPowerBoostKeepOn()
|
||||
|
||||
**Syntax:**
|
||||
|
||||
<mark>bool setPowerBoostKeepOn(bool en);</mark>
|
||||
|
||||
**Description:**
|
||||
|
||||
This function sets enable/disable power mode.
|
||||
|
||||
**Definition:**
|
||||
|
||||
```arduino
|
||||
bool setPowerBoostKeepOn(bool en){
|
||||
uint8_t data;
|
||||
Wire.beginTransmission(IP5306_ADDR);
|
||||
Wire.write(IP5306_REG_SYS_CTL0);
|
||||
Wire.endTransmission();
|
||||
|
||||
if(Wire.requestFrom(IP5306_ADDR, 1))
|
||||
{
|
||||
data = Wire.read();
|
||||
|
||||
Wire.beginTransmission(IP5306_ADDR);
|
||||
Wire.write(IP5306_REG_SYS_CTL0);
|
||||
if (en) Wire.write(data | BOOST_OUT_BIT);
|
||||
else Wire.write(data &(~BOOST_OUT_BIT));
|
||||
Wire.endTransmission();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
```
|
||||
|
||||
## setCharge()
|
||||
|
||||
**Syntax:**
|
||||
|
||||
<mark>bool setCharge(bool en);</mark>
|
||||
|
||||
**Description:**
|
||||
|
||||
This function sets enable/disable charge mode.
|
||||
|
||||
**Definition:**
|
||||
|
||||
```arduino
|
||||
bool POWER::setCharge(bool en){
|
||||
uint8_t data;
|
||||
Wire.beginTransmission(IP5306_ADDR);
|
||||
Wire.write(IP5306_REG_SYS_CTL0);
|
||||
Wire.endTransmission();
|
||||
|
||||
if(Wire.requestFrom(IP5306_ADDR, 1))
|
||||
{
|
||||
data = Wire.read();
|
||||
|
||||
Wire.beginTransmission(IP5306_ADDR);
|
||||
Wire.write(IP5306_REG_SYS_CTL0);
|
||||
if (en) Wire.write(data | CHARGE_OUT_BIT);
|
||||
else Wire.write(data &(~CHARGE_OUT_BIT));
|
||||
Wire.endTransmission();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
```
|
||||
|
||||
## isChargeFull()
|
||||
|
||||
**Syntax:**
|
||||
|
||||
<mark>bool isChargeFull(bool en);</mark>
|
||||
|
||||
**Description:**
|
||||
|
||||
This function check battery level.
|
||||
|
||||
**Definition:**
|
||||
|
||||
```arduino
|
||||
bool isChargeFull(){
|
||||
uint8_t data;
|
||||
Wire.beginTransmission(IP5306_ADDR);
|
||||
Wire.write(IP5306_REG_READ1);
|
||||
Wire.endTransmission(false);
|
||||
if(Wire.requestFrom(IP5306_ADDR, 1))
|
||||
{
|
||||
data = Wire.read();
|
||||
if (data & (1 << CHARGE_FULL_BIT)) return true;
|
||||
else return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
```
|
||||
|
||||
## canControl()
|
||||
|
||||
**Syntax:**
|
||||
|
||||
<mark>bool canControl();</mark>
|
||||
|
||||
**Description:**
|
||||
|
||||
This function checks the existence of the battery controller
|
||||
|
||||
**Definition:**
|
||||
|
||||
```arduino
|
||||
bool canControl(){
|
||||
uint8_t data;
|
||||
Wire.beginTransmission(IP5306_ADDR);
|
||||
Wire.write(IP5306_REG_READ0);
|
||||
return(Wire.endTransmission()==0);
|
||||
}
|
||||
```
|
||||
|
||||
## isCharging()
|
||||
|
||||
**Syntax:**
|
||||
|
||||
<mark>bool isCharging(){</mark>
|
||||
|
||||
**Description:**
|
||||
|
||||
This function checks the state of the charge
|
||||
|
||||
**Definition:**
|
||||
|
||||
```arduino
|
||||
bool canControl(){
|
||||
uint8_t data;
|
||||
Wire.beginTransmission(IP5306_ADDR);
|
||||
Wire.write(IP5306_REG_READ0);
|
||||
return(Wire.endTransmission()==0);
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## setWakeupButton()
|
||||
|
||||
**Syntax:**
|
||||
|
||||
<mark>void setWakeupButton(uint8_t button){</mark>
|
||||
|
||||
**Description:**
|
||||
|
||||
This function set the port to exit sleep
|
||||
|
||||
**Definition:**
|
||||
|
||||
```arduino
|
||||
void setWakeupButton(uint8_t button) {
|
||||
_wakeupPin = button;
|
||||
}
|
||||
```
|
||||
|
||||
## reset()
|
||||
|
||||
**Syntax:**
|
||||
|
||||
<mark>void reset()</mark>
|
||||
|
||||
**Description:**
|
||||
|
||||
This function reset the CPU.
|
||||
|
||||
**Definition:**
|
||||
|
||||
```arduino
|
||||
void POWER::reset() {
|
||||
esp_restart();
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## batteryMode()
|
||||
|
||||
**Syntax:**
|
||||
|
||||
<mark>bool batteryMode(bool en)</mark>
|
||||
|
||||
**Description:**
|
||||
|
||||
This function controls battery supply
|
||||
|
||||
**Definition:**
|
||||
|
||||
```arduino
|
||||
bool batteryMode(bool en){
|
||||
|
||||
uint8_t data;
|
||||
Wire.beginTransmission(IP5306_ADDR);
|
||||
Wire.write(IP5306_REG_READ1);
|
||||
Wire.endTransmission();
|
||||
|
||||
if(Wire.requestFrom(IP5306_ADDR, 1))
|
||||
{
|
||||
data = Wire.read();
|
||||
|
||||
Wire.beginTransmission(IP5306_ADDR);
|
||||
Wire.write(IP5306_REG_READ1);
|
||||
if (en) Wire.write(data | BOOST_ENABLE_BIT);
|
||||
else Wire.write(data &(~BOOST_ENABLE_BIT));
|
||||
Wire.endTransmission();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## deepSleep()
|
||||
|
||||
**Syntax:**
|
||||
|
||||
<mark>void deepSleep()</mark>
|
||||
|
||||
**Description:**
|
||||
|
||||
This function shifts to deep sleep mode
|
||||
|
||||
**Definition:**
|
||||
|
||||
```arduino
|
||||
void deepSleep(){
|
||||
|
||||
#ifdef M5STACK_FIRE
|
||||
// Keep power keep boost on
|
||||
setPowerBoostKeepOn(true);
|
||||
#endif
|
||||
|
||||
// power off the Lcd
|
||||
M5.Lcd.setBrightness(0);
|
||||
M5.Lcd.sleep();
|
||||
|
||||
// ESP32 into deep sleep
|
||||
esp_sleep_enable_ext0_wakeup((gpio_num_t)_wakeupPin , LOW);
|
||||
|
||||
while(digitalRead(_wakeupPin) == LOW) {
|
||||
delay(10);
|
||||
}
|
||||
esp_deep_sleep_start();
|
||||
}
|
||||
```
|
||||
+49
-24
@@ -4,42 +4,67 @@
|
||||
|
||||
**Syntax:**
|
||||
|
||||
<mark>void begin(bool LCDEnable=true, bool SDEnable=true, bool SerialEnable=true);</mark>
|
||||
<mark>void begin(bool LCDEnable=true, bool SDEnable=true, bool SerialEnable=true,bool I2CEnable=false);</mark>
|
||||
|
||||
**Description:**
|
||||
|
||||
This function sets enable/disable LCD, TF Card and Serial port.
|
||||
This function sets enable/disable LCD, TF Card,Serial port and I2C port.
|
||||
|
||||
**Definition:**
|
||||
|
||||
```arduino
|
||||
void M5Stack::begin(bool LCDEnable, bool SDEnable, bool SerialEnable) {
|
||||
if (isInited) return;
|
||||
else isInited = true;
|
||||
if (SerialEnable) {
|
||||
Serial.begin(115200);
|
||||
Serial.flush();
|
||||
delay(50);
|
||||
Serial.print("M5Stack initializing...");
|
||||
}
|
||||
if (LCDEnable) {
|
||||
Lcd.begin();
|
||||
}
|
||||
if (SDEnable) {
|
||||
SD.begin(TFCARD_CS_PIN, SPI, 40000000);
|
||||
}
|
||||
setWakeupButton(BUTTON_A_PIN);
|
||||
void M5Stack::begin(bool LCDEnable, bool SDEnable, bool SerialEnable,bool I2CEnable) {
|
||||
|
||||
// Correct init once
|
||||
if (isInited) return;
|
||||
else isInited = true;
|
||||
|
||||
// UART
|
||||
if (SerialEnable) {
|
||||
Serial.begin(115200);
|
||||
Serial.flush();
|
||||
delay(50);
|
||||
Serial.print("M5Stack initializing...");
|
||||
}
|
||||
|
||||
// LCD INIT
|
||||
if (LCDEnable) {
|
||||
Lcd.begin();
|
||||
}
|
||||
|
||||
// TF Card
|
||||
if (SDEnable) {
|
||||
SD.begin(TFCARD_CS_PIN, SPI, 40000000);
|
||||
}
|
||||
|
||||
// TONE
|
||||
// Speaker.begin();
|
||||
|
||||
// Set wakeup button
|
||||
Power.setWakeupButton(BUTTON_A_PIN);
|
||||
|
||||
// I2C init
|
||||
if(I2CEnable)
|
||||
{
|
||||
Wire.begin(21, 22);
|
||||
}
|
||||
|
||||
if (SerialEnable) {
|
||||
Serial.println("OK");
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Example:**
|
||||
void M5Stack::update() {
|
||||
|
||||
```arduino
|
||||
#include <M5Stack.h>
|
||||
//Button update
|
||||
BtnA.read();
|
||||
BtnB.read();
|
||||
BtnC.read();
|
||||
|
||||
void setup() {
|
||||
M5.begin();
|
||||
//Speaker update
|
||||
Speaker.update();
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
## update()
|
||||
|
||||
@@ -0,0 +1,248 @@
|
||||
# Power
|
||||
|
||||
## setPowerBoostKeepOn()
|
||||
|
||||
**構文:**
|
||||
|
||||
<mark>bool setPowerBoostKeepOn(bool en);</mark>
|
||||
|
||||
**説明:**
|
||||
|
||||
電源供給状態を設定します。
|
||||
|
||||
**定義:**
|
||||
|
||||
```arduino
|
||||
bool setPowerBoostKeepOn(bool en){
|
||||
uint8_t data;
|
||||
Wire.beginTransmission(IP5306_ADDR);
|
||||
Wire.write(IP5306_REG_SYS_CTL0);
|
||||
Wire.endTransmission();
|
||||
|
||||
if(Wire.requestFrom(IP5306_ADDR, 1))
|
||||
{
|
||||
data = Wire.read();
|
||||
|
||||
Wire.beginTransmission(IP5306_ADDR);
|
||||
Wire.write(IP5306_REG_SYS_CTL0);
|
||||
if (en) Wire.write(data | BOOST_OUT_BIT);
|
||||
else Wire.write(data &(~BOOST_OUT_BIT));
|
||||
Wire.endTransmission();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
```
|
||||
|
||||
## setCharge()
|
||||
|
||||
**構文:**
|
||||
|
||||
<mark>bool setCharge(bool en);</mark>
|
||||
|
||||
**説明:**
|
||||
|
||||
充電状態を設定します。
|
||||
|
||||
**定義:**
|
||||
|
||||
```arduino
|
||||
bool POWER::setCharge(bool en){
|
||||
uint8_t data;
|
||||
Wire.beginTransmission(IP5306_ADDR);
|
||||
Wire.write(IP5306_REG_SYS_CTL0);
|
||||
Wire.endTransmission();
|
||||
|
||||
if(Wire.requestFrom(IP5306_ADDR, 1))
|
||||
{
|
||||
data = Wire.read();
|
||||
|
||||
Wire.beginTransmission(IP5306_ADDR);
|
||||
Wire.write(IP5306_REG_SYS_CTL0);
|
||||
if (en) Wire.write(data | CHARGE_OUT_BIT);
|
||||
else Wire.write(data &(~CHARGE_OUT_BIT));
|
||||
Wire.endTransmission();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
```
|
||||
|
||||
## isChargeFull()
|
||||
|
||||
**構文:**
|
||||
|
||||
<mark>bool isChargeFull(bool en);</mark>
|
||||
|
||||
**説明:**
|
||||
|
||||
満充電かを判定します
|
||||
|
||||
**定義:**
|
||||
|
||||
```arduino
|
||||
bool isChargeFull(){
|
||||
uint8_t data;
|
||||
Wire.beginTransmission(IP5306_ADDR);
|
||||
Wire.write(IP5306_REG_READ1);
|
||||
Wire.endTransmission(false);
|
||||
if(Wire.requestFrom(IP5306_ADDR, 1))
|
||||
{
|
||||
data = Wire.read();
|
||||
if (data & (1 << CHARGE_FULL_BIT)) return true;
|
||||
else return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
```
|
||||
|
||||
## canControl()
|
||||
|
||||
**構文:**
|
||||
|
||||
<mark>bool canControl();</mark>
|
||||
|
||||
**説明:**
|
||||
|
||||
電源コントローラが使用可能かを判断します
|
||||
|
||||
**定義:**
|
||||
|
||||
```arduino
|
||||
bool canControl(){
|
||||
uint8_t data;
|
||||
Wire.beginTransmission(IP5306_ADDR);
|
||||
Wire.write(IP5306_REG_READ0);
|
||||
return(Wire.endTransmission()==0);
|
||||
}
|
||||
```
|
||||
|
||||
## isCharging()
|
||||
|
||||
**構文:**
|
||||
|
||||
<mark>bool isCharging(){</mark>
|
||||
|
||||
**説明:**
|
||||
|
||||
充電中かを返答します
|
||||
|
||||
**定義:**
|
||||
|
||||
```arduino
|
||||
bool canControl(){
|
||||
uint8_t data;
|
||||
Wire.beginTransmission(IP5306_ADDR);
|
||||
Wire.write(IP5306_REG_READ0);
|
||||
return(Wire.endTransmission()==0);
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## setWakeupButton()
|
||||
|
||||
**構文:**
|
||||
|
||||
<mark>void setWakeupButton(uint8_t button){</mark>
|
||||
|
||||
**説明:**
|
||||
|
||||
スリープ復帰信号ポートを設定します
|
||||
|
||||
**定義:**
|
||||
|
||||
```arduino
|
||||
void setWakeupButton(uint8_t button) {
|
||||
_wakeupPin = button;
|
||||
}
|
||||
```
|
||||
|
||||
## reset()
|
||||
|
||||
**構文:**
|
||||
|
||||
<mark>void reset()</mark>
|
||||
|
||||
**説明:**
|
||||
|
||||
CPUをリセットします
|
||||
|
||||
**定義:**
|
||||
|
||||
```arduino
|
||||
void POWER::reset() {
|
||||
esp_restart();
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## batteryMode()
|
||||
|
||||
**構文:**
|
||||
|
||||
<mark>bool batteryMode(bool en)</mark>
|
||||
|
||||
**説明:**
|
||||
|
||||
バッテリーの供給状態を設定します
|
||||
|
||||
**定義:**
|
||||
|
||||
```arduino
|
||||
bool batteryMode(bool en){
|
||||
|
||||
uint8_t data;
|
||||
Wire.beginTransmission(IP5306_ADDR);
|
||||
Wire.write(IP5306_REG_READ1);
|
||||
Wire.endTransmission();
|
||||
|
||||
if(Wire.requestFrom(IP5306_ADDR, 1))
|
||||
{
|
||||
data = Wire.read();
|
||||
|
||||
Wire.beginTransmission(IP5306_ADDR);
|
||||
Wire.write(IP5306_REG_READ1);
|
||||
if (en) Wire.write(data | BOOST_ENABLE_BIT);
|
||||
else Wire.write(data &(~BOOST_ENABLE_BIT));
|
||||
Wire.endTransmission();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## deepSleep()
|
||||
|
||||
**構文:**
|
||||
|
||||
<mark>void deepSleep()</mark>
|
||||
|
||||
**説明:**
|
||||
|
||||
省エネモードに移行します
|
||||
|
||||
**定義:**
|
||||
|
||||
```arduino
|
||||
void deepSleep(){
|
||||
|
||||
#ifdef M5STACK_FIRE
|
||||
// Keep power keep boost on
|
||||
setPowerBoostKeepOn(true);
|
||||
#endif
|
||||
|
||||
// power off the Lcd
|
||||
M5.Lcd.setBrightness(0);
|
||||
M5.Lcd.sleep();
|
||||
|
||||
// ESP32 into deep sleep
|
||||
esp_sleep_enable_ext0_wakeup((gpio_num_t)_wakeupPin , LOW);
|
||||
|
||||
while(digitalRead(_wakeupPin) == LOW) {
|
||||
delay(10);
|
||||
}
|
||||
esp_deep_sleep_start();
|
||||
}
|
||||
```
|
||||
+53
-18
@@ -4,32 +4,67 @@
|
||||
|
||||
**説明:**
|
||||
|
||||
LCD、TFカード、シリアルポートの有効化/無効化を設定します。
|
||||
LCD、TFカード、シリアルポート、I2Cの有効化/無効化を設定します。
|
||||
|
||||
**構文:**
|
||||
|
||||
<mark>void begin(bool LCDEnable=true, bool SDEnable=true, bool SerialEnable=true);</mark>
|
||||
<mark>void begin(bool LCDEnable=true, bool SDEnable=true, bool SerialEnable=true,bool I2CEnable=false);</mark>
|
||||
|
||||
**定義:**
|
||||
|
||||
```arduino
|
||||
void M5Stack::begin(bool LCDEnable, bool SDEnable, bool SerialEnable) {
|
||||
if (isInited) return;
|
||||
else isInited = true;
|
||||
if (SerialEnable) {
|
||||
Serial.begin(115200);
|
||||
Serial.flush();
|
||||
delay(50);
|
||||
Serial.print("M5Stack initializing...");
|
||||
}
|
||||
if (LCDEnable) {
|
||||
Lcd.begin();
|
||||
}
|
||||
if (SDEnable) {
|
||||
SD.begin(TFCARD_CS_PIN, SPI, 40000000);
|
||||
}
|
||||
setWakeupButton(BUTTON_A_PIN);
|
||||
void M5Stack::begin(bool LCDEnable, bool SDEnable, bool SerialEnable,bool I2CEnable) {
|
||||
|
||||
// Correct init once
|
||||
if (isInited) return;
|
||||
else isInited = true;
|
||||
|
||||
// UART
|
||||
if (SerialEnable) {
|
||||
Serial.begin(115200);
|
||||
Serial.flush();
|
||||
delay(50);
|
||||
Serial.print("M5Stack initializing...");
|
||||
}
|
||||
|
||||
// LCD INIT
|
||||
if (LCDEnable) {
|
||||
Lcd.begin();
|
||||
}
|
||||
|
||||
// TF Card
|
||||
if (SDEnable) {
|
||||
SD.begin(TFCARD_CS_PIN, SPI, 40000000);
|
||||
}
|
||||
|
||||
// TONE
|
||||
// Speaker.begin();
|
||||
|
||||
// Set wakeup button
|
||||
Power.setWakeupButton(BUTTON_A_PIN);
|
||||
|
||||
// I2C init
|
||||
if(I2CEnable)
|
||||
{
|
||||
Wire.begin(21, 22);
|
||||
}
|
||||
|
||||
if (SerialEnable) {
|
||||
Serial.println("OK");
|
||||
}
|
||||
}
|
||||
|
||||
void M5Stack::update() {
|
||||
|
||||
//Button update
|
||||
BtnA.read();
|
||||
BtnB.read();
|
||||
BtnC.read();
|
||||
|
||||
//Speaker update
|
||||
Speaker.update();
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
**使用例:**
|
||||
|
||||
@@ -0,0 +1,230 @@
|
||||
# Power
|
||||
|
||||
## setPowerBoostKeepOn()
|
||||
|
||||
**函数原型:**
|
||||
|
||||
<mark>bool setPowerBoostKeepOn(bool en);</mark>
|
||||
|
||||
**功能:BOOST输出常开功能**
|
||||
|
||||
**函数实现:**
|
||||
|
||||
```arduino
|
||||
bool setPowerBoostKeepOn(bool en){
|
||||
uint8_t data;
|
||||
Wire.beginTransmission(IP5306_ADDR);
|
||||
Wire.write(IP5306_REG_SYS_CTL0);
|
||||
Wire.endTransmission();
|
||||
|
||||
if(Wire.requestFrom(IP5306_ADDR, 1))
|
||||
{
|
||||
data = Wire.read();
|
||||
|
||||
Wire.beginTransmission(IP5306_ADDR);
|
||||
Wire.write(IP5306_REG_SYS_CTL0);
|
||||
if (en) Wire.write(data | BOOST_OUT_BIT);
|
||||
else Wire.write(data &(~BOOST_OUT_BIT));
|
||||
Wire.endTransmission();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
```
|
||||
|
||||
## setCharge()
|
||||
|
||||
**函数原型:**
|
||||
|
||||
<mark>bool setCharge(bool en);</mark>
|
||||
|
||||
**功能:设置充电状态**
|
||||
|
||||
**函数实现:**
|
||||
|
||||
```arduino
|
||||
bool POWER::setCharge(bool en){
|
||||
uint8_t data;
|
||||
Wire.beginTransmission(IP5306_ADDR);
|
||||
Wire.write(IP5306_REG_SYS_CTL0);
|
||||
Wire.endTransmission();
|
||||
|
||||
if(Wire.requestFrom(IP5306_ADDR, 1))
|
||||
{
|
||||
data = Wire.read();
|
||||
|
||||
Wire.beginTransmission(IP5306_ADDR);
|
||||
Wire.write(IP5306_REG_SYS_CTL0);
|
||||
if (en) Wire.write(data | CHARGE_OUT_BIT);
|
||||
else Wire.write(data &(~CHARGE_OUT_BIT));
|
||||
Wire.endTransmission();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
```
|
||||
|
||||
## isChargeFull()
|
||||
|
||||
**函数原型:**
|
||||
|
||||
<mark>bool isChargeFull(bool en);</mark>
|
||||
|
||||
**功能:确认完全充电**
|
||||
|
||||
**函数实现:**
|
||||
|
||||
```arduino
|
||||
bool isChargeFull(){
|
||||
uint8_t data;
|
||||
Wire.beginTransmission(IP5306_ADDR);
|
||||
Wire.write(IP5306_REG_READ1);
|
||||
Wire.endTransmission(false);
|
||||
if(Wire.requestFrom(IP5306_ADDR, 1))
|
||||
{
|
||||
data = Wire.read();
|
||||
if (data & (1 << CHARGE_FULL_BIT)) return true;
|
||||
else return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
```
|
||||
|
||||
## canControl()
|
||||
|
||||
**函数原型:**
|
||||
|
||||
<mark>bool canControl();</mark>
|
||||
|
||||
**功能:确认可以使用电源控制器**
|
||||
|
||||
**函数实现:**
|
||||
|
||||
```arduino
|
||||
bool canControl(){
|
||||
uint8_t data;
|
||||
Wire.beginTransmission(IP5306_ADDR);
|
||||
Wire.write(IP5306_REG_READ0);
|
||||
return(Wire.endTransmission()==0);
|
||||
}
|
||||
```
|
||||
|
||||
## isCharging()
|
||||
|
||||
**函数原型:**
|
||||
|
||||
<mark>bool isCharging(){</mark>
|
||||
|
||||
**功能:确认是否正在充电**
|
||||
|
||||
**函数实现:**
|
||||
|
||||
```arduino
|
||||
bool canControl(){
|
||||
uint8_t data;
|
||||
Wire.beginTransmission(IP5306_ADDR);
|
||||
Wire.write(IP5306_REG_READ0);
|
||||
return(Wire.endTransmission()==0);
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## setWakeupButton()
|
||||
|
||||
**函数原型:**
|
||||
|
||||
<mark>void setWakeupButton(uint8_t button){</mark>
|
||||
|
||||
**功能:设置睡眠返回端口**
|
||||
|
||||
**函数实现:**
|
||||
|
||||
```arduino
|
||||
void setWakeupButton(uint8_t button) {
|
||||
_wakeupPin = button;
|
||||
}
|
||||
```
|
||||
|
||||
## reset()
|
||||
|
||||
**函数原型:**
|
||||
|
||||
<mark>void reset()</mark>
|
||||
|
||||
**功能:执行CPU重置**
|
||||
|
||||
**函数实现:**
|
||||
|
||||
```arduino
|
||||
void POWER::reset() {
|
||||
esp_restart();
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## batteryMode()
|
||||
|
||||
**函数原型:**
|
||||
|
||||
<mark>bool batteryMode(bool en)</mark>
|
||||
|
||||
**功能:设置电池供电状态**
|
||||
|
||||
**函数实现:**
|
||||
|
||||
```arduino
|
||||
bool batteryMode(bool en){
|
||||
|
||||
uint8_t data;
|
||||
Wire.beginTransmission(IP5306_ADDR);
|
||||
Wire.write(IP5306_REG_READ1);
|
||||
Wire.endTransmission();
|
||||
|
||||
if(Wire.requestFrom(IP5306_ADDR, 1))
|
||||
{
|
||||
data = Wire.read();
|
||||
|
||||
Wire.beginTransmission(IP5306_ADDR);
|
||||
Wire.write(IP5306_REG_READ1);
|
||||
if (en) Wire.write(data | BOOST_ENABLE_BIT);
|
||||
else Wire.write(data &(~BOOST_ENABLE_BIT));
|
||||
Wire.endTransmission();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## deepSleep()
|
||||
|
||||
**函数原型:**
|
||||
|
||||
<mark>void deepSleep()</mark>
|
||||
|
||||
**功能:进入 deep sleep 状态**
|
||||
|
||||
**函数实现:**
|
||||
|
||||
```arduino
|
||||
void deepSleep(){
|
||||
|
||||
#ifdef M5STACK_FIRE
|
||||
// Keep power keep boost on
|
||||
setPowerBoostKeepOn(true);
|
||||
#endif
|
||||
|
||||
// power off the Lcd
|
||||
M5.Lcd.setBrightness(0);
|
||||
M5.Lcd.sleep();
|
||||
|
||||
// ESP32 into deep sleep
|
||||
esp_sleep_enable_ext0_wakeup((gpio_num_t)_wakeupPin , LOW);
|
||||
|
||||
while(digitalRead(_wakeupPin) == LOW) {
|
||||
delay(10);
|
||||
}
|
||||
esp_deep_sleep_start();
|
||||
}
|
||||
```
|
||||
+53
-18
@@ -4,31 +4,66 @@
|
||||
|
||||
**函数原型:**
|
||||
|
||||
<mark>void begin(bool LCDEnable=true, bool SDEnable=true, bool SerialEnable=true);</mark>
|
||||
<mark>void begin(bool LCDEnable=true, bool SDEnable=true, bool SerialEnable=true,bool I2CEnable=false);</mark>
|
||||
|
||||
<!-- <mark>fillScreen(color)</mark> # for micropython -->
|
||||
|
||||
**功能:清串口缓冲区,设置串口波特率为 115200;初始化 LCD;初始化 SD 卡;设置按键 A 是睡眠唤醒按键。**
|
||||
**功能:清串口缓冲区,设置串口波特率为 115200;初始化 LCD;初始化 SD 卡;初始化 I2C;设置按键 A 是睡眠唤醒按键。**
|
||||
|
||||
**函数实现**
|
||||
```arduino
|
||||
void M5Stack::begin(bool LCDEnable, bool SDEnable, bool SerialEnable) {
|
||||
if (isInited) return;
|
||||
else isInited = true;
|
||||
if (SerialEnable) {
|
||||
Serial.begin(115200);
|
||||
Serial.flush();
|
||||
delay(50);
|
||||
Serial.print("M5Stack initializing...");
|
||||
}
|
||||
if (LCDEnable) {
|
||||
Lcd.begin();
|
||||
}
|
||||
if (SDEnable) {
|
||||
SD.begin(TFCARD_CS_PIN, SPI, 40000000);
|
||||
}
|
||||
setWakeupButton(BUTTON_A_PIN);
|
||||
void M5Stack::begin(bool LCDEnable, bool SDEnable, bool SerialEnable,bool I2CEnable) {
|
||||
|
||||
// Correct init once
|
||||
if (isInited) return;
|
||||
else isInited = true;
|
||||
|
||||
// UART
|
||||
if (SerialEnable) {
|
||||
Serial.begin(115200);
|
||||
Serial.flush();
|
||||
delay(50);
|
||||
Serial.print("M5Stack initializing...");
|
||||
}
|
||||
|
||||
// LCD INIT
|
||||
if (LCDEnable) {
|
||||
Lcd.begin();
|
||||
}
|
||||
|
||||
// TF Card
|
||||
if (SDEnable) {
|
||||
SD.begin(TFCARD_CS_PIN, SPI, 40000000);
|
||||
}
|
||||
|
||||
// TONE
|
||||
// Speaker.begin();
|
||||
|
||||
// Set wakeup button
|
||||
Power.setWakeupButton(BUTTON_A_PIN);
|
||||
|
||||
// I2C init
|
||||
if(I2CEnable)
|
||||
{
|
||||
Wire.begin(21, 22);
|
||||
}
|
||||
|
||||
if (SerialEnable) {
|
||||
Serial.println("OK");
|
||||
}
|
||||
}
|
||||
|
||||
void M5Stack::update() {
|
||||
|
||||
//Button update
|
||||
BtnA.read();
|
||||
BtnB.read();
|
||||
BtnC.read();
|
||||
|
||||
//Speaker update
|
||||
Speaker.update();
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
**例程**
|
||||
|
||||
Reference in New Issue
Block a user