效果
原理
由于贫、没有ws2812.。。只好拿红绿蓝三色凑个数吧,点哪个亮哪个,支持都亮、单亮、双亮
待改进之处
- pwm可变亮度
- ws2812可调色
- 连接wifi自动弹出控制页面
代码
/*
192.168.1.4
*/
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#ifndef APSSID
#define APSSID "ESPap" //wifi名称,自可修改
#define APPSK "123789" //wifi密码,自可修改
#endif
const char *ssid = APSSID;
const char *password = APPSK;
int ledRed = D0; //红灯引脚,自可修改
int ledGreen = D1;
int ledBlue = D2;
ESP8266WebServer server(80);
void handleRoot() {
server.send(200, "text/html", "<br><br><br><form action=\"/ledred\" method=\"POST\" style='text-align: center;'><input type=\"submit\" value=\"RED LED\"></form><br><br><br><form action=\"/ledgreen\" method=\"POST\" style='text-align: center;'><input type=\"submit\" value=\"Green LED\"></form><br><br><br><form action=\"/ledblue\" method=\"POST\" style='text-align: center;'><input type=\"submit\" value=\"BLUE LED\"></form>");
}
void handleNotFound(){
server.sendHeader("Location","/");
server.send(303);
}
void handleLedRed(){
digitalWrite(ledRed,!digitalRead(ledRed));
server.sendHeader("Location","/");
server.send(303);
}
void handleLedGreen(){
digitalWrite(ledGreen,!digitalRead(ledGreen));
server.sendHeader("Location","/");
server.send(303);
}
void handleLedBlue(){
digitalWrite(ledBlue,!digitalRead(ledBlue));
server.sendHeader("Location","/");
server.send(303);
}
void setup() {
pinMode(ledRed, OUTPUT);
pinMode(ledGreen, OUTPUT);
pinMode(ledBlue, OUTPUT);
delay(1000);
WiFi.softAP(ssid,password);
IPAddress myIP = WiFi.softAPIP();
server.on("/", handleRoot);
server.onNotFound(handleNotFound);
server.on("/ledred", HTTP_POST,handleLedRed);
server.on("/ledgreen", HTTP_POST,handleLedGreen);
server.on("/ledblue", HTTP_POST,handleLedBlue);
server.begin();
}
void loop() {
server.handleClient();
}
参考
- https://blog.csdn.net/weixin_43031092/article/details/106794102