|

Piloter une LED avec un bouton d’une page internet sur serveur Web ESP32

Prérequis :

  • 1 x Carte ESP32
  • 1 x Led
  • 1 x Résistance 220Ω
  • Fils de connexion

Version IDE :

  • Arduino IDE 2.3.5

Bibliothèque :

Vidéo de démonstration :

Schéma de câblage :

Code :

Code Arduino :
int LED_verte = 18;
int EtatLEDVerte;
#include "LittleFS.h"
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>
#include <WiFi.h>
const char *ssid = "......"; // "Votre Nom_du_routeur"
const char *password = "......"; // "Votre Mot_de_passe_du_routeur"

AsyncWebServer server(80);

void setup() {
  Serial.begin(115200);
  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.");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());

  server.begin();


  if (!LittleFS.begin()) {
    Serial.println("An Error has occurred while mounting LittleFS");
    return;
  }

  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request) {
    request->send(LittleFS, "/index.html", "text/html");
  });

  server.on("/EtatLEDVerteOn", HTTP_GET, [](AsyncWebServerRequest *request) {
    EtatLEDVerte = 1;
    request->send(204);
  });

  server.on("/EtatLEDVerteOff", HTTP_GET, [](AsyncWebServerRequest *request) {
    EtatLEDVerte = 0;
    request->send(204);
  });

    server.on("/lire_EtatLEDVerte", HTTP_GET, [](AsyncWebServerRequest *request) {
    String InfoEtatLEDVerte = String(EtatLEDVerte);
    request->send(200, "text/plain", InfoEtatLEDVerte);
  });

  server.on("/script.js", HTTP_GET, [](AsyncWebServerRequest *request) {
    request->send(LittleFS, "/script.js", "text/javascript");
  });

  delay(10);
  pinMode(LED_verte, OUTPUT);
}

void loop() {
  if (EtatLEDVerte == 1) {
    digitalWrite(LED_verte, HIGH);
  } else {
    digitalWrite(LED_verte, LOW);
  }
}
Code HTML :

( index.html )

<!DOCTYPE html>
<html lang="fr">

    <head>
        <title>ESP</title>
        <meta name="viewport" content="width=device-width, initial-scale=1" charset="UTF-8" />
        <script type="text/javascript" src="script.js"></script>  
    </head>

    <body>
        <center>
            <div>
                <br>
                <h2>Bienvenue sur votre serveur Web ESP32</div></h2>
                <h4>LED Verte</h4>
                <button onclick="LED_Verte_On()">ON</button>
                <button onclick="LED_Verte_Off()">OFF</button>
                <p>Etat de la LED Verte : <span id="EtatLEDVerte"></span></p>
                </a>
            </div>
        </center>
    </body>

</html>
Code Javascript :

( script.js )

function LED_Verte_On() {
    var xhttp = new XMLHttpRequest();
    xhttp.open("GET", "EtatLEDVerteOn", true);
    xhttp.send();
    EtatLEDVerte();
}

function LED_Verte_Off() {
    var xhttp = new XMLHttpRequest();
    xhttp.open("GET", "EtatLEDVerteOff", true);
    xhttp.send();
    EtatLEDVerte();
}


function EtatLEDVerte() {
    var xhttp = new XMLHttpRequest();
    var ValeurEtatLEDVerte;
    xhttp.onreadystatechange = function () {
        if (this.readyState == 4 && this.status == 200) {
            ValeurEtatLEDVerte = this.responseText;
              if(ValeurEtatLEDVerte == 1){
              document.getElementById("EtatLEDVerte").textContent = "ON";   
              document.getElementById("EtatLEDVerte").style.color = "green";
              }else{
              document.getElementById("EtatLEDVerte").textContent = "OFF"; 
              document.getElementById("EtatLEDVerte").style.color = "red";
              }
        //console.log(ValeurEtatLEDVerte); 
        //return ValeurEtatLEDVerte;
        }
    };

    xhttp.open("GET", "lire_EtatLEDVerte", true);
    xhttp.send();
     
};

function functioninterval() {
  EtatLEDVerte();
 }
setInterval( functioninterval, 500 );

Publications similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *