Bonjour,
pour mon école (projet 3ieme) je voudrais avec un esp8266 piloter un ruban de 240 leds en wifi et en commande http qui peut être géré depuis une page web et allumer chaque led séparément ou plusieurs et choisir sa couleur, j'arrive à allumer tous les rubans en couleur mais pas chaque led séparée avec la commande " http://IP_ESP/led_green"(j'ai ajouté une alimentation séparée pour les rubans).
Je pars d'un de mes projets en 24 leds voici mon code je sais que je dois pas faire de boucle comme on me la conseillé sur le forum anglais mais je ne vois pas comment faire et je dois modifier mon if (request.indexOf("/LED=GREEN") != -1) { pour ajouter mes numéros de led a afficher
Merci
#include <ESP8266WiFi.h>
#include <FastLED.h>
#define NUM_LEDS 24
#define LED_PIN 16
CRGB leds[NUM_LEDS];
const char* ssid = "Wifi bureau";
const char* password = "*********";
int ledPin = 16;
WiFiServer server(80);
int n;
void setup()
{
FastLED.addLeds<WS2812B, LED_PIN, GRB>(leds, NUM_LEDS);
FastLED.setBrightness(100);
// initialisation de la communication série
Serial.begin(115200);
delay(100);
// initialisation de la sortie pour la led
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
// Connexion wifi
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
// connection en cours ...
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
// Wifi connecter
Serial.println("WiFi connecter");
// Démmarrage du serveur.
server.begin();
Serial.println("Serveur demarrer !");
// Affichage de l'adresse IP
Serial.print("Utiliser cette adresse URL pour la connexion :");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
}
void loop()
{
WiFiClient client;
// Vérification si le client est connecter.
client = server.available();
if (!client)
{
return;
}
// Attendre si le client envoie des données ...
Serial.println("nouveau client");
while(!client.available()){
delay(1);
}
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
int value = LOW;
if (request.indexOf("/LED=GREEN") != -1) {
for(int n;n<=NUM_LEDS;n++)
{
leds[n] = CRGB::Green;
FastLED.show();
}
}
if (request.indexOf("/LED=RED") != -1) {
for(int n;n<=NUM_LEDS;n++)
{
leds[n] = CRGB::Red;
FastLED.show();
}
}
if (request.indexOf("/LED=OFF") != -1) {
for(int n;n<=NUM_LEDS;n++)
{
leds[n] = CRGB::Black;
FastLED.show();
}
}
// Réponse
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("");
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.print("Etat de la led : ");
if(value == HIGH) {
client.print("On");
} else {
client.print("Off");
}
client.println("<br><br>");
client.println("<a href=\"/LED=GREEN\"\"><button>Libre </button></a>");
client.println("<a href=\"/LED=RED\"\"><button>Occupe </button></a><br />");
client.println("<a href=\"/LED=OFF\"\"><button>OFF </button></a><br />");
client.println("</html>");
delay(1);
Serial.println("Client deconnecter");
Serial.println("");
Merci