Hola a tod@s,
estoy empezando de nuevo en esto, y estoy con un proyecto para tener luz de luna en el acuario. Lo estoy haciendo en un ESP8266.
Tengo un Sketch donde tengo varias pestañas, la principal donde inicializo el programa, luego tengo Server.hpp (Servidor Web), ESP8266_Utils.hpp (Conexión red local), config.h (parámetros de la conexión a la wifi), config.hpp (aquí hay dos funciones, una Leer() qué lee los datos del fichero config.txt que está en el servidor Web (potencia del Led, de momento) y Escribe (valornuevo) que quiero que escriba el valor nuevo de la potencia del Led si se ha cambiado a través de la página web. --> Esto es lo que no logro que funcione.
Dentro de la pestaña Server.hpp se recoge el nuevo valor de la potencia del Led (en el monitor serie sale es valor, quisiera llamar a la función Escribir(valornuevo) con el valor nuevo que se ha modificado desde la página web.
Cuando hago la petición, por ejemplo Escribir(500) me aparece un error en la compilación Compilation error: 'Escribir' was not declared in this scope.
Si pongo la llamada dentro del Setup{} si funciona
ServidorWeb.ino
#include <ESP8266WiFi.h>
#include <ESPAsyncWebServer.h>
#include <FS.h>
#include <LittleFS.h>
#include "config.h"
#include "Server.hpp"
#include "ESP8266_Utils.hpp"
#include "config.hpp"
void setup(void)
{
Serial.begin(115200);
ConnectWiFi_STA();
InitServer();
Leer();
}
void loop() {}
Server.hpp
AsyncWebServer server(80);
void handleFormPWM(AsyncWebServerRequest *request)
{
String pwmValue = request->arg("pwmValue");
Serial.print("PWM:\t");
Serial.println(pwmValue);
analogWrite(14, pwmValue.toInt());
///////// --------------------------------> Aquí me da error si pongo Escribir(500)
request->redirect("/");
}
void InitServer()
{
server.serveStatic("/", LittleFS, "/").setDefaultFile("index.html");
server.on("/LED", HTTP_POST, handleFormPWM);
server.onNotFound([](AsyncWebServerRequest *request) {
request->send(400, "text/plain", "Not found");
});
server.begin();
Serial.println("HTTP server started");
}
ESP8266_Utils.hpp
#include <LiquidCrystal_I2C.h>
int lcdColumns = 16;
int lcdRows = 2;
LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows);
void ConnectWiFi_STA()
{
lcd.init();
lcd.backlight();
Serial.println("");
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(100);
Serial.print('.');
}
Serial.println("");
Serial.print("Iniciado STA:\t");
Serial.println(ssid);
Serial.print("IP address:\t");
Serial.println(WiFi.localIP());
lcd.print(WiFi.localIP());
}
config.hpp
void Leer(){
LittleFS.begin();
int potencia;
File f = LittleFS.open("/config.txt", "r");
if (!f) {
Serial.println("no existe fichero de configuracon");
}
else
{
Serial.println("Potencia: ");
while (f.available()) {
potencia = f.read();
Serial.write(potencia);
}
f.close();
}
analogWrite(14, potencia);
}
// Escribir en la flash en valor nuevo
void Escribir(int potencianueva)
{
LittleFS.begin();
//int potencianueva;
File f = LittleFS.open("/config.txt", "w");
if (!f) {
Serial.println("no existe fichero de configuracon");
}
else
{
Serial.println("Potencia Nueva: ");
Serial.println(potencianueva);
if (f.print(potencianueva)) {
Serial.println("Fichero escrito");
} else {
Serial.println("Escritura fallidaa");
}
delay(2000);
f.close();
}
}
Gracias de antemano