给我一个html页面中有一个滑条,拖动滑条能控制esp8266灯的亮度的代码,以及对应的esp8266的代码
时间: 2024-03-11 17:47:05 浏览: 49
好的,以下是一个HTML页面,可以通过滑块控制ESP8266上的LED灯的亮度:
```html
<!DOCTYPE html>
<html>
<head>
<title>ESP8266 LED Control</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
.slidecontainer {
width: 100%;
text-align: center;
margin-top: 20px;
}
.slider {
-webkit-appearance: none;
width: 80%;
height: 10px;
margin-bottom: 10px;
background: #ddd;
outline: none;
opacity: 0.7;
-webkit-transition: .2s;
transition: opacity .2s;
}
.slider:hover {
opacity: 1;
}
.slider::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
width: 20px;
height: 20px;
background: #4CAF50;
cursor: pointer;
}
.slider::-moz-range-thumb {
width: 20px;
height: 20px;
background: #4CAF50;
cursor: pointer;
}
</style>
</head>
<body>
<h1>ESP8266 LED Control</h1>
<div class="slidecontainer">
<input type="range" min="0" max="100" value="50" class="slider" id="myRange">
<p>LED Brightness: <span id="demo"></span>%</p>
</div>
<script>
var slider = document.getElementById("myRange");
var output = document.getElementById("demo");
// Update the current slider value (each time you drag the slider handle)
slider.oninput = function() {
output.innerHTML = this.value;
sendData(this.value);
}
function sendData(brightness) {
var xhttp = new XMLHttpRequest();
xhttp.open("GET", "/setBrightness?brightness=" + brightness, true);
xhttp.send();
}
</script>
</body>
</html>
```
在这个页面中,我们使用了一个 `<input type="range">` 元素来创建一个滑块。通过JavaScript,我们可以监听滑块的输入事件并更新页面上的文本显示。每次滑块的值发生变化时,我们都将调用 `sendData()` 函数,并将当前的亮度值作为参数传递给它。 `sendData()` 函数使用XMLHttpRequest对象向ESP8266发送一个GET请求,该请求将设置灯的亮度。
以下是ESP8266上的代码,它将接收到的亮度值转换为PWM信号并控制LED的亮度:
```c++
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
// Replace with your network credentials
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
// Create an instance of the server
ESP8266WebServer server(80);
// Define the LED pin
const int ledPin = D1;
void setup() {
// Initialize the LED pin as an output
pinMode(ledPin, OUTPUT);
// Connect to Wi-Fi network
WiFi.begin(ssid, password);
Serial.begin(115200);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
// Start the server
server.on("/setBrightness", handleSetBrightness);
server.begin();
Serial.println("HTTP server started");
}
void loop() {
// Handle client requests
server.handleClient();
// Add your custom code here
}
void handleSetBrightness() {
String brightnessString = server.arg("brightness");
int brightness = brightnessString.toInt();
// Convert the brightness value to a PWM signal
int pwmValue = map(brightness, 0, 100, 0, 1023);
// Set the LED brightness
analogWrite(ledPin, pwmValue);
// Send a response to the client
server.send(200, "text/plain", "Brightness set to " + brightnessString + "%");
}
```
在这个代码中,我们连接到Wi-Fi网络并启动一个Web服务器。当收到来自HTML页面的请求时,服务器将调用 `handleSetBrightness()` 函数。这个函数将从请求参数中获取亮度值并将其转换为PWM信号,然后使用 `analogWrite()` 函数来控制LED的亮度。最后,服务器将向客户端发送一个响应,指示亮度已经设置。
请注意,这只是一个示例代码,需要根据实际情况进行修改。
阅读全文