物聯網-wemos D1 Mini (esp8266)實驗二 --- 蜂鳴器版失物尋找 附完整原始碼和註釋
阿新 • • 發佈:2018-12-11
#include <ESP8266WiFi.h> #include <ESP8266WebServer.h> //HTML主頁mainPage static const char mainPage[] PROGMEM = u8R"( <!DOCTYPE html> <html> <head> <title>ESP8266</title> <meta name='viewport' content='width=device-width, initial-scale=1.0'> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> <a href='call?buzzer=ON'>呼叫蜂鳴器</a> <br><br> <a href='call?buzzer=OFF'>關閉蜂鳴器</a> <p>蜂鳴器失物找尋測試</p> </body> </html> )"; //錯誤路徑HTML static const char errorPage[] PROGMEM= u8R"( 路徑錯誤 )"; //設定路徑HTML static const char settingPage[] PROGMEM= u8R"( 請設定 )"; String buzzerState = u8"OFF";//蜂鳴器狀態 ESP8266WebServer _esp8266WebServer(80);//定義esp82666WebServer例項 void handleRoot() {//網頁根目錄處理函式 _esp8266WebServer.send(200, "text/html", mainPage);//"text/html":以html的格式輸出 } void handleNotFound() {//網路路徑不存在處理函式 _esp8266WebServer.send(404, "text/plain", errorPage);//"text/plain":原樣無格式輸出 } void handleSetting() {//網頁設定處理函式 _esp8266WebServer.send(200, "text/plain", settingPage); } void buzzerStateHandel() { if (_esp8266WebServer.hasArg(u8"buzzer")) { buzzerState = _esp8266WebServer.arg(u8"buzzer"); if (buzzerState == u8"ON") { pinMode(D1, OUTPUT); digitalWrite(D1, HIGH); } else if (buzzerState == u8"OFF") { pinMode(D1, OUTPUT); digitalWrite(D1, LOW); } _esp8266WebServer.send(200, u8"text/plain", String(u8"OK")); } } // setup() 啟動時執行一次 void setup() { //伺服器設定 while (!WiFi.softAP(u8"MYBUZZER", u8"", 1,false));//ap賬號(MYBUZZER)、密碼(無)設定。 _esp8266WebServer.on("/call", buzzerStateHandel);//含有buzzer這個變數的處理函式 _esp8266WebServer.on("/", handleRoot); _esp8266WebServer.onNotFound(handleNotFound); _esp8266WebServer.on("/setting", handleSetting); _esp8266WebServer.begin(); //蜂鳴器設定為off狀態 pinMode(D1, OUTPUT); digitalWrite(D1, LOW); } // loop() 迴圈執行 void loop() { _esp8266WebServer.handleClient(); }