Following change point (M5stack #124)

・fixed ad Add some API document.
This commit is contained in:
Mori Naoyuki
2019-03-04 23:22:39 +09:00
parent f24975adef
commit 01aabcfebc
6 changed files with 881 additions and 60 deletions
+248
View File
@@ -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
View File
@@ -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()
+248
View File
@@ -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
View File
@@ -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();
}
```
**使用例:**
+230
View File
@@ -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
View File
@@ -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();
}
```
**例程**