esp8266 作为webserver 控制LED

#include
#include
#include
/*** 该工程可以在2.6.3版本esp8266库中运行,没在更高版本库中进行测试 ***/SDA接D2,SCL接D1 I2C接口屏
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=https://www.it610.com/article/*/ SDA, /* reset=*/ U8X8_PIN_NONE); // All Boards without Reset of the Display, Full screen buffer mode
//U8G2_R0正常显示
//U8G2_R1 90度顺时针旋转
//U8G2_R2 180度顺时针旋转
//U8G2_R3 270度顺时针旋转
const char* ssid = "zhiyong"; //待连接WIFI,改成自己的wifi账号密码
const char* password = "l13314167123"; //待连接WIFI密码
WiFiServer server(80); //默认端口
String readString = ""; //建立一个字符串对象用来接收存放来自客户的数据
//响应头
String responseHeaders =
String("") +
"HTTP/1.1 200 OK\r\n" +
"Content-Type: text/html\r\n" +
"Connection: close\r\n" +
"\r\n";
//网页
String myhtmlPage =
String("") +
"" +
"" +
""+//增加中文显示UTF-8是网络中文默认编码
"ESP8266 Web Server Test - 锐客网" +
"" +
"" +
"" +
"关闭状态" +
"" +
"" +
"

bool isLedTurnOpen = false; // 记录LED状态
int LED = 2 //对应板子编号D4
void setup()
{
u8g2.begin();
u8g2.enableUTF8Print(); // enable UTF8 support for the Arduino print() function
u8g2.setFont(u8g2_font_wqy15_t_chinese2); //u8g2_font_unifont_t_chinese2
pinMode(LED, OUTPUT);
digitalWrite(LED, LOW); // 熄灭LED

WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
show("正在连接中", 1);
delay(500);
}
show("服务端已连接", 3);
delay(500);
server.begin();
show( WiFi.localIP().toString().c_str(), 3);
delay(1000);
}
void show(String str, int n) {
u8g2.clearBuffer(); // 清除内部缓冲区
u8g2.setCursor(0, 15);
u8g2.print("Web Server");
u8g2.setCursor(0, 15 + 15 * n);
u8g2.print(str);
u8g2.sendBuffer(); // transfer internal memory to the display
delay(500);
}
void loop()
{
WiFiClient client = server.available(); //尝试建立客户对象
if (client)//如果当前有客户可用
{
boolean currentLineIsBlank = true;
show("客户端已连接", 3);
delay(100);
while (client.connected()) //如果客户端建立连接
{
if (client.available()) //等待有可读数据
{
char c = client.read(); //读取一字节数据
readString += c; //拼接数据
/************************************************/
if (c == '\n' && currentLineIsBlank) //等待请求头接收完成(接收到空行)
{
//比较接收到的请求数据
if (readString.startsWith("GET / HTTP/1.1")) //如果是网页请求
{
client.print(responseHeaders); //向客户端输出网页响应
client.print(myhtmlPage); //向客户端输出网页内容
client.print("\r\n");
}
else if (readString.startsWith("GET /Switch")) //如果是改变LED状态请求
{
if (isLedTurnOpen == false)
{
show("LED 已经点亮", 2);
delay(100);
digitalWrite(LED, HIGH); // 点亮LED点亮(高电平控制),led灯如果是低电平控制,把D4脚接LED负极(短脚),LED正极(长脚)接3.3,digitalWrite(LED, LOW)为灯亮
client.print("LED 已经点亮");
isLedTurnOpen = true;
}
else
{
show("LED 已经关闭", 2);
delay(100);
digitalWrite(LED, LOW ); // 熄灭LED
client.print("LED 已经关闭");
isLedTurnOpen = false;
}
}
else
{
client.print("\r\n");
}
break;
}
if (c == '\n')
{
currentLineIsBlank = true; //开始新行
}
else if (c != '\r')
{
currentLineIsBlank = false; //正在接收某行中
}

}
}
delay(1); //等待客户完成接收
client.stop(); //结束当前连接:
show("客户端已断开", 3);
delay(1000);
readString = "";
}
}


【esp8266 作为webserver 控制LED】

    推荐阅读