#include <ESP8266WiFi.h>
#include <ESPAsyncTCP.h>
#include <ESPAsyncWebServer.h>
#include <LiquidCrystal.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); //設置LCD1602的I2C位址為0x27,LCD1602
AsyncWebServer server(80);
const char* ssid = "tcy-3"; //wifi ssid
const char* password = "034375396"; //wifi password
const char* PARAM_INPUT_1 = "input1";
const char index_html[] PROGMEM = R"rawliteral(
<!DOCTYPE HTML><html><head>
<title>Smart Notice Board</title>
<meta name="viewport" content="width=device-width, initial-scale=5">
<p> <font size="9" face="sans-serif"> <marquee> Smart Notice Board </marquee> </font> </p>
</head><body><center>
<form action="/get">
Enter Text to Display: <input type="text" name="input1">
<input type="submit" value="Send">
</form><br>
</center></body></html>)rawliteral";
void notFound(AsyncWebServerRequest *request)
{
request->send(404, "text/plain", "Not found");
}
void setup() {
Serial.begin(115200);
lcd.init(); // 給LCD的I2C通訊初始化
lcd.backlight(); // 點亮LCD背光燈
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Smart Notice Board");
wifiConnect();
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request)
{
request->send_P(200, "text/html", index_html);
});
server.on("/get", HTTP_GET, [] (AsyncWebServerRequest *request) {
String message;
String inputParam;
if (request->hasParam(PARAM_INPUT_1)) {
message = request->getParam(PARAM_INPUT_1)->value();
inputParam = PARAM_INPUT_1;
lcd.clear();
lcd.setCursor(0,0);
lcd.print(message);
}
else {
message = "No message sent";
inputParam = "none";
}
Serial.println(message);
request->send(200, "text/html", index_html);
});
server.onNotFound(notFound);
server.begin();
}
void loop()
{
for (int positionCounter = 0; positionCounter < 29; positionCounter++)
{
lcd.scrollDisplayLeft();
delay(500);
}
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
if(WiFi.status() != WL_CONNECTED)
{
wifiConnect();
}
lcd.setCursor(0, 1);
lcd.print("IP:"+WiFi.localIP());
}
void wifiConnect()
{
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
if (WiFi.waitForConnectResult() != WL_CONNECTED)
{
Serial.println("WiFi Failed!");
return;
}
Serial.println();
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
}