1.字幕留言器
ESP8266端
#include <ESP8266WiFi.h> // 提供Wi-Fi功能的程式庫
#include <ESP8266WebServer.h> // 提供網站伺服器功能的程式庫
//////////////////////////////////////////////////////////////////////////////////
#define SSID "----"
#define PASSWORD "-----"
//////////////////////////////////////////////////////////////////////////////////
ESP8266WebServer server(80); // 宣告網站伺服器物件與埠號
String data;
// 定義處理首頁請求的自訂函式
void rootRouter() {
server.send(200, "text/html", "Hello from <b>ESP8266</b>!");
}
void setup() {
Serial.begin(9600);
WiFi.mode(WIFI_STA);
WiFi.begin(SSID, PASSWORD);
while (WiFi.status() != WL_CONNECTED) {delay(500);}
server.on("/index.html", rootRouter); // 處理首頁連結請求的事件
server.on("/", rootRouter);
server.on("/say", []() {
String data=server.arg("A");
String cmd =data;
Serial.print(cmd);
server.send(200, "text/html", "Jeux say <b>" + data + "</b><br>" );
});
server.onNotFound([](){ // 處理「找不到指定路徑」的事件
server.send(404, "text/plain", "File NOT found!");
});
server.begin();
Serial.println("HTTP server started.");
}
void loop() {
server.handleClient(); // 處理用戶連線
}
Arduino端
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,16,2); // 若LCD 無法啟用,請將0X3F 改為0X27
String cmd;
void lcd_disp(String data){
lcd.clear();
int cmd_length = data.length();
if(cmd_length<17){
for(int i=0 ; i<cmd_length ; i++){
lcd.setCursor(i,0);
lcd.print(data.charAt(i));
}}else{
for(int i=0 ; i<16 ; i++){
lcd.setCursor(i,0);
lcd.print(data.charAt(i));
}
for(int i=16 ; i<cmd_length ; i++){
lcd.setCursor(i-16,1);
lcd.print(data.charAt(i));
}}}
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
lcd.clear();
}
void loop() {
if(Serial.available()){
cmd="";
while(Serial.available()){
char c = Serial.read();
cmd+= c;
delay(10);}
lcd_disp(cmd);
}}