如何将'wemos mini'模块转换为 Web 服务?甚至可能吗?



所以我试图使一个wemos迷你模块(d1系列)到一个web服务器,让它运行不同的命令。(比如每隔几秒钟打开/关闭或甚至眨眼一次)

我已经写了一些代码(在arduino),但我不太工作。我想知道是什么问题。

这是我目前得到的:

#include <WiFiClient.h>
#include <ESP8266WiFi.h>
#include <ESPAsyncTCP.h>
#include <ESPAsyncWebServer.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClientSecure.h>
#include <Adafruit_Sensor.h>
#include <Arduino.h>
#include <SoftwareSerial.h>
const char* ssid = "ssid name";
const char* password = "ssid password";

#define ledPin LED_BUILTIN
WiFiServer server(80);

void setup() {
Serial.begin(115200);
delay(10);


pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);

// Connect to WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");

// Start the server
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request) {
request->send_P(200, "text/html", index_html, processor);
});
server.on("/on", HTTP_GET, [](AsyncWebServerRequest *request) {
request->send_P(200, "text/plain", on().c_str());
});
server.on("/off", HTTP_GET, [](AsyncWebServerRequest *request) {
request->send_P(200, "text/plain", off().c_str());
});
server.on("/blink", HTTP_GET, [](AsyncWebServerRequest *request) {
request->send_P(200, "text/plain", blink().c_str());
});
server.onNotFound(notFound);
server.begin();
Serial.println("Server started");

// Print the IP address
Serial.print("Use this URL : ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");

}

void loop() {
// Check if a client has connected
on_led();
off_led();
blink_led();

}
我真的很感谢你的时间。谢谢你。

似乎你忘了声明一些你在循环函数中使用的函数。

on_led();
off_led();
blink_led();

和你在服务器地址中使用的函数:

processor();
on();
off();
blink();

我想你需要这样的东西:

int on_flag = 0;
int off_flag = 0;
int blink_flag = 1;
String on()
{
on_flag = 1;
off_flag = 0;
blink_flag = 0;
return String("Ok");
}
String off()
{
on_flag = 0;
off_flag = 1;
blink_flag = 0;
return String("Ok");
}
String blink()
{
on_flag = 0;
off_flag = 0;
blink_flag = 1;
return String("Ok");
}
void on_led(){
if (on_flag){
digitalWrite(ledPin, LOW);
}
}
void off_led(){
if (off_flag){
digitalWrite(ledPin, HIGH);
}
}
int del = 500 // 0.5 Sec
void blink_led(){
if (blink_flag){
digitalWrite(ledPin, LOW);
delay(del);
digitalWrite(ledPin, HIGH);
delay(del);
}
}

使用这些代码,您将能够根据本地服务器的请求打开或关闭led或使其每0.5秒闪烁一次。请注意,在进一步的步骤中,您需要创建一个字符数组和一个带有处理器函数的html页面,并使用JS来处理请求。

我希望它对你有用。

相关内容

最新更新