#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是网络中文默认编码
"
"" +
"" +
"" +
"关闭状态" +
"" +
"" +
"
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】
推荐阅读
- 小程序|【视频倒放神器】超级玩法(千万不要倒放视频,太魔性了根本停不下来......)
- 小程序|最难忘的新年祝福,第一个让大家都惊喜的小程序(有趣、恶搞、好玩)
- 小程序|【自制壁纸生成器】2022新年壁纸领取,换一张手机壁纸,迎接2022叭~
- 白皮书|阿拉丁指数丨《2021 年度小程序互联网发展白皮书》4.5 亿+DAU 小程序的 6 大发展趋势
- 学习笔记|uni-app开发小程序
- 微信小程序的广告方式有哪些
- 公众号关联微信小程序功能介绍
- 微信小程序|微信小程序从入门到入土教程(02)
- 小程序|小程序性能优化的一些实践