Bonjour,
Comme indiqué dans ma présentation, je suis en train de réaliser un WALL-E:
je travail sous VS CODE:
à chaque fois que j’agis sur ma page web le serveur rebout :
Connexion etablie!
Adresse IP: 192.168.1.91
Serveur actif!
G0
CORRUPT HEAP: Bad head at 0x3ffd0028. Expected 0xabba1234 got 0xa5a5a5a5
assert failed: multi_heap_free multi_heap_poisoning.c:253 (head != NULL)
Backtrace:0x40083661:0x3ffd26300x4008b8d1:0x3ffd2650 0x40090ce1:0x3ffd2670 0x40090927:0x3ffd27a0 0x40083ac5:0x3ffd27c0 0x40090d11:0x3ffd27e0 0x400db622:0x3ffd2800 0x400db631:0x3ffd2820 0x400d7aee:0x3ffd2840 0x400d9b4d:0x3ffd2860 0x400d54b3:0x3ffd2880 0x400d54c1:0x3ffd28a0 0x40143412:0x3ffd28c0 0x4014370a:0x3ffd28f0 0x40143720:0x3ffd2910 0x401438b1:0x3ffd2930
ELF file SHA256: 0000000000000000
Le "G0" sous "Serveur actif" est le retour attendu de ma page.
voici mon code:
main.ccp
#include <Arduino.h>
#include <ESPAsyncWebServer.h>
#include <SPIFFS.h>
#include "Wire.h"
#include "LiquidCrystal_I2C.h"
#include "DallasTemperature.h"
#include "OneWire.h"
#include "DHT.h"
#include "Adafruit_Sensor.h"
const int cap_DHT11 = 5;
LiquidCrystal_I2C LCD(0x27,16,2);
// -------------------determination de capteur DHT11 sur la borne 5
DHT dht(cap_DHT11,DHT11);
// -------------------determination capteur DS18b20 sur la borne 23
OneWire oneWire(23);
DallasTemperature ds(&oneWire);
const char* ssid = "ma_box";
const char* password = "mon_passe_word";
const char* PARAM_INPUT_1 = "output";
const char* PARAM_INPUT_2 = "state";
const int led = 2;
const int capteurLuminosite = 34;
AsyncWebServer server(80);
void setup()
{
//----------------------------------------Serial
Serial.begin(115200);
// while (!Serial){}
Serial.print("\n");
//----------------------------------------GPIO
pinMode(led, OUTPUT);
digitalWrite(led, LOW);
pinMode(capteurLuminosite, INPUT);
//----------------------------------------SPIFFS
if(!SPIFFS.begin())
{
Serial.println("Erreur SPIFFS...");
return;
}
File root = SPIFFS.open("/");
File file = root.openNextFile();
while (file)
{
Serial.print("File: ");
Serial.println(file.name());
file.close();
file = root.openNextFile();
}
//----------------------------------------WIFI
Serial.begin(115200);
delay(1000);
Serial.println("\n");
WiFi.begin(ssid, password);
Serial.print("Tentative de connexion...");
while(WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(100);
}
Serial.println("\n");
Serial.println("Connexion etablie!");
Serial.print("Adresse IP: ");
Serial.println(WiFi.localIP());
//----------------------------------------SERVER
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request)
{
request->send(SPIFFS, "/index.html", "text/html");
});
server.on("/w3.css", HTTP_GET, [](AsyncWebServerRequest *request)
{
request->send(SPIFFS, "/w3.css", "text/css");
});
server.on("/script.js", HTTP_GET, [](AsyncWebServerRequest *request)
{
request->send(SPIFFS, "/script.js", "text/javascript");
});
server.on("/jquery-3.6.1.min.js", HTTP_GET, [](AsyncWebServerRequest *request)
{
request->send(SPIFFS, "/jquery-3.6.1.min.js", "text/javascript");
});
server.on("/servoControl", HTTP_POST, [](AsyncWebServerRequest *request)
{
String data[1];
if (request->hasParam("servo", true))
{
data[0] = request-> getParam("servo",true)-> value();
data[1] = request-> getParam("value",true)-> value();
Serial.print (data[0]);
Serial.println (data[1]);
}
request->send(204);
});
server.begin();
Serial.println("Serveur actif!");
//--------------------------init LCD
}
//---------------------------- Fonction
void loop()
{
}
scrip.js
function servoControl(item, servo, value) {
$.ajax({
url: "/servoControl",
type: "POST",
data: {"servo": servo, "value": value},
dataType: "json",
});
}
index.html
<!DOCTYPE html>
<html lang="fr">
<head>
<title>Pilotage du WALL-E</title>
<meta name="viewport" content="width=device-width, initial-scale=1"charset="UTF-8" />
<link rel="stylesheet" type="text/css" href="w3.css">
<script type="text/javascript" src="jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="script.js"></script>
</head>
<body class="w3-animate-opacity">
<div class="w3-card w3-blue w3-padding-small w3-center">
<h1>Wall-E</h1>
</div>
<div class="w3-margin w3-center w3-card w3-padding-24">
<div class="w3-padding">Eye Left</div>
<div class="w3-padding">
<input id="head-rotation" class="set-slide custom-range" type="range" min="0" max="100" step="1" value="50" onfocus="this.oldvalue = this.value;" onchange="servoControl(this,'G',value)"/> </div>
</div>
<div class="w3-padding w3-center">
<i>@Rasta 2022</a></i>
</div>
</body>
</html>
je ne comprends pas encore tout le code, mais avant d'aller plus loin je souhaite comprendre le problème.
Merci par avance
Rasta