Arduino示例程序
ESP8266部分
1. ESP8266获取MAC地址
#include
void setup(){
Serial.begin(9600);
delay(500);
Serial.println();
Serial.print("MAC: ");
Serial.println(WiFi.macAddress());
String s = WiFi.macAddress();
s.replace(":", "");
Serial.println(s);
}
void loop(){
delay(1000);
}
2. ESP8266看门狗
void setup() {
Serial.begin(115200);
Serial.println("starting...");
ESP.wdtEnable(WDTO_2S);
}
void loop() {
for(int i=0; i<10; i++) {
Serial.println("feed");
ESP.wdtFeed();
delay(1000);
}
Serial.println("not feed");
while(1) {
}
}
由于delay()
函数会自动喂狗,因此loop
部分可以省略掉ESP.wdtFeed()
void loop() {
for(int i=0; i<10; i++) {
Serial.println("feed");
delay(1000);
}
Serial.println("not feed");
while(1) {
}
}
但不能在while(1){}
循环中加入delay()
,如下代码无法触发看门狗超时
void loop() {
for(int i=0; i<10; i++) {
Serial.println("feed");
ESP.wdtFeed();
delay(1000);
}
Serial.println("not feed");
while(1) {
delay(1000);
}
}
另外loop
函数结束时也会自动喂狗,因此如下代码也无法触发看门狗超时
void setup() {
Serial.begin(115200);
Serial.println("starting...");
ESP.wdtEnable(WDTO_2S);
}
void loop() {
}
3. 代码重启ESP8266
主要用到ESP.restart()
void setup() {
Serial.begin(115200);
Serial.println("starting...");
}
int cnt = 0;
void loop() {
if(cnt++ < 10) {
Serial.printf("wait %d\n", cnt);
delay(1000);
} else {
Serial.println("restart");
ESP.restart();
}
}