Adresser ws2812 en HTTP

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

Bonjour,
Avant de te lancer dans le codage, as-tu réfléchi sur la manière de programmer ton ruban de LED?
Si tu veux pouvoir changer la couleur des LED individuellement, tu te doutes bien que tu ne vas pas pouvoir gérer 240 pages afin d'affecter une couleur à chacune des LEDs.
Il faudrait donc réfléchir sur un outil pour gérer cette problématique. Et peut-être limiter les possibilités de programmation à ce que tu es certain de pouvoir réaliser.
Typiquement, la programmation de l'état de 240 LEDs individuellement (couleur, luminance) .va demander la gestion d'un éditeur relativement sophistiqué. C'est faisable mais c'est peut-être un peu lourd. Tu pourrais te limiter à des séquences de transitions d'une couleur à une autre sur la longueur du ruban par exemple ou l'affichage de patterns simples. La librairie fastled offre pas mal de possibilités.

Une remarque, si c'est un projet de 3ème le code et ses commentaires vont sans doute être lus par des profs. Il faudrait peut-être travailler sur la différence entre le participe passé et l'infinitif.

Je veux faire rouge ,vert ,bleu et jaune pour les couleurs, je ne veux pas changer la luminance. J'utilise déjà fastled Merci

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.