NodeMCU Perte du serveur au bout de quelques minutes

Vos échanges, bricolages, idées et questions concernant l'ESP8266, les NodeMCU,Weemos, et consort
Répondre
Seboux
Messages : 1
Enregistré le : 12 mai 2019, 19:08

NodeMCU Perte du serveur au bout de quelques minutes

Message par Seboux » 12 mai 2019, 19:32

Bonjour,

Mon projet consiste à piloter un bandeau de led à partir d'un serveur web.
Néanmoins, je ne comprends pas pourquoi mais je perds mon serveur au bout de quelques minutes.
Je n'ai pas de problème hardware donc je ne vais pas en parler.
Voici mon code :

Code : Tout sélectionner

////////////////////////////////////////////////////////////////
// Programme simple de webserver
////////////////////////////////////////////////////////////////
#include <ESP8266WiFi.h> 

#include <Adafruit_NeoPixel.h> // Charge la librairie Neo Pixel d'Adafruit utilisé pour piloter le ruban de LED

#define PIXEL_PIN 4 // 0--> D3 : On définit le pin où est connecté la patte DATA du bandeau
#define PIXEL_COUNT 150 // On définit le nombre de LED compris sur le Ruban de LED soit 150 pour le ruban de 5m50

Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800); // Paramètre l'objet strip qui correspond à toute les LED du ruban

const char* ssid = "****";
const char* password = "****";

/* Définition des couleurs */
int RED[3] = {255, 0, 0}; // Couleur Rouge
int GREEN[3] = {0, 255, 0}; // Couleur Verte
int CYAN[3] = {0, 255, 255}; // Couleur Cyan
int YELLOW[3] = {255, 125, 0}; // Couleur Jaune
int ORANGE[3] = {255, 40, 0}; // Couleur Orange
int PURPLE[3] = {255, 0 , 255}; // Couleur Violette
int PINK[3] = {255, 0, 100}; // Couleur Rose
int BLUE[3] = {0, 0, 255}; // Couleur Bleu
int WHITE[3] = {255, 255, 255}; // Couleur Blanche

//ESP8266WebServer server(80);
WiFiServer server(80);

void setup() {
  delay(1000);
  Serial.begin(115200);
  
  // Connect to WiFi network
  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");
// 
//  // Start the server
  server.begin();
  Serial.println("Server started");
 
  // Print the IP address
  Serial.print("Use this URL to connect: ");
  Serial.print("http://");
  Serial.println(WiFi.localIP());

   strip.begin(); // Lance la connection
   strip.show(); // Initialise toute les led à 'off'

 
}

void chenillardUp(int temps, int r, int v, int b)
{
  for(int i = 0 ; i < 150 ; i++)
  {
     strip.setPixelColor(i, r, v, b);
        strip.show();
            strip.setPixelColor(i, 0, 0, 0);
        strip.show();
          delay(temps);  
  }
}

void progressiveUp(int temps, int r, int v, int b)
{
  for(int lumi = 0 ; lumi < 100 ; lumi++)
  {
     for(int i = 0 ; i < 150 ; i++)
    {
       strip.setPixelColor(i, r, v, b);
    }
    strip.setBrightness(lumi); 
    strip.show();
    delay(temps);
  }
}

void anim_nineColor(int temps)
{
  for(int i = 0 ; i < PIXEL_COUNT ; i = i + 9)
  {
   strip.setPixelColor(i, RED[0], RED[1], RED[2]);
   strip.setPixelColor(i+1, GREEN[0], GREEN[1], GREEN[2]);
   strip.setPixelColor(i+2, CYAN[0], CYAN[1], CYAN[2]);
   strip.setPixelColor(i+3, YELLOW[0], YELLOW[1], YELLOW[2]);
   strip.setPixelColor(i+4, ORANGE[0], ORANGE[1], ORANGE[2]);
   strip.setPixelColor(i+5, PURPLE[0], PURPLE[1], PURPLE[2]);
   strip.setPixelColor(i+6, PINK[0], PINK[1], PINK[2]);
   strip.setPixelColor(i+7, BLUE[0], BLUE[1], BLUE[2]);
   strip.setPixelColor(i+8, WHITE[0], WHITE[1], WHITE[2]);
  }  
   strip.show();
   delay(temps);
}

void anim_rainbowCycle(uint8_t wait) 
{
  uint16_t i, j, numbers;
  numbers = 256 * 5;
    for(j=0; j < numbers; j++) { // 5 cycles of all colors on wheel
    for(i=0; i < PIXEL_COUNT; i++) {
      strip.setPixelColor(i, Wheel(((i * 256 / PIXEL_COUNT) + j) & 255));
    }
    strip.show();
    delay(wait);
  }
}

void anim_theaterChaseRainbow(uint8_t wait)
{
  for (int j=0; j < 256; j++) {     // cycle all 256 colors in the wheel
    for (int q=0; q < 3; q++) {
      for (int i=0; i < PIXEL_COUNT; i=i+3) {
        strip.setPixelColor(i+q, Wheel( (i+j) % 255));    //turn every third pixel on
      }
      strip.show();
  
      delay(wait*2.5);

      for (int i=0; i < PIXEL_COUNT; i=i+3) {
        strip.setPixelColor(i+q, 0);        //turn every third pixel off
      }
    }
  }
}

void anim_fire()
{
int r = ORANGE[0];
int g = ORANGE[1]+5;
int b = ORANGE[2];

int variation = 100;

for(int x = 0; x <PIXEL_COUNT; x++)
{
int flicker = random(0,variation);
int r1 = r-flicker;
int g1 = g-flicker;
int b1 = b-flicker;
if(g1<0) g1=0;
if(r1<0) r1=0;
if(b1<0) b1=0;
strip.setPixelColor(x,r1,g1, b1);
}
strip.show();
delay(random(50,115));
}


uint32_t Wheel(byte WheelPos) {
  WheelPos = 255 - WheelPos;
  if(WheelPos < 85) {
    return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  }
  if(WheelPos < 170) {
    WheelPos -= 85;
    return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
  WheelPos -= 170;
  return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
}
 
void loop() {

  // Control de la connection client
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
 
  // Attente de l'envoi de quelque chose du client
  Serial.println("new client");
  while (!client.available()){ 
    delay(10);
  }
 
  // Première ligne de la requête
  String request = client.readStringUntil('\r');
  Serial.println(request);
  client.flush();

  if (request.indexOf("/LED=ROUGE") != -1)                    // Rouge
  {
    for( int i = 0; i<PIXEL_COUNT; i++)
    {
    strip.setPixelColor(i, 255, 0, 0);
    strip.show();
    } 
  }

  if (request.indexOf("/LED=VERT") != -1)                     // Vert
  {
    for( int i = 0; i<PIXEL_COUNT; i++)
    {
    strip.setPixelColor(i, 0, 255, 0);
    strip.show();
    } 
  }

  if (request.indexOf("/LED=CYAN") != -1)                     // Cyan
  {
    for( int i = 0; i<PIXEL_COUNT; i++)
    {
    strip.setPixelColor(i, 0, 255, 255);
    strip.show();
    } 
  }

    if (request.indexOf("/LED=JAUNE") != -1)                  // JAUNE
  {
    for( int i = 0; i<PIXEL_COUNT; i++)
    {
    strip.setPixelColor(i, 255, 125, 0);
    strip.show();
    } 
  }

  if (request.indexOf("/LED=ORANGE") != -1)                   // Orange
  {
    for( int i = 0; i<PIXEL_COUNT; i++)
    {
    strip.setPixelColor(i, 255, 40, 0);
    strip.show();
    } 
  }

  if (request.indexOf("/LED=VIOLET") != -1)                   // Violet
  {
    for( int i = 0; i<PIXEL_COUNT; i++)
    {
    strip.setPixelColor(i, 255, 0, 255);
    strip.show();
    } 
  }

  if (request.indexOf("/LED=ROSE") != -1)                     // Rose
  {
    for( int i = 0; i<PIXEL_COUNT; i++)
    {
    strip.setPixelColor(i, 255, 0, 100);
    strip.show();
    } 
  }

  if (request.indexOf("/LED=BLEU") != -1)                     // Bleu
  {
    for( int i = 0; i<PIXEL_COUNT; i++)
    {
    strip.setPixelColor(i, 0, 0, 255);
    strip.show();
    } 
  }

  if (request.indexOf("/LED=BLANC") != -1)                    // Blanc
  {
    for( int i = 0; i<PIXEL_COUNT; i++)
    {
    strip.setPixelColor(i, 255, 255, 255);
    strip.show();
    } 
  }
  
  if (request.indexOf("/LED=CHENILLARD_UP") != -1)            // Chenillard up
  {
    chenillardUp(10, 255, 255, 255);
  }
  
  if (request.indexOf("/LED=PROGRESSIVE_UP") != -1)           // Progressive up
  {
    progressiveUp(20, 125, 20, 200);
  }

  if (request.indexOf("/LED=ANIM_NINECOLOR") != -1)           // Anim nine color
  {
    anim_nineColor(20);
  }

  if (request.indexOf("/LED=ANIM_RAINBOWCYCLE") != -1)        // Anim rainbow cycle
  {
  anim_rainbowCycle(10);
  }

  if (request.indexOf("/LED=ANIM_THEATERCHASERAINBOW") != -1) // Anim theater chase rainbow
  {
  anim_theaterChaseRainbow(10);
  }

  if (request.indexOf("/LED=ANIM_FIRE") != -1)                // Anim fire
  {
  anim_fire();
  }

  if (request.indexOf("/LED=STOP") != -1)                     // Stop
  {
    chenillardUp(1, 255, 255, 255);
  }

  
  // Réponse à la requête
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  //client.println("Refresh: 5\r\n");
  client.println(""); 
  
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
  client.println("<head>");
  client.println("</head>");
  client.println("<body>");
  client.println("<div style=\"text-align:center\">");
  client.println("<h1>Gestion du bandeau de LED</h1><br><br>");
  client.print("Choix de la couleur : ");
  client.println("<br><br>");
  client.println("<a href=\"/LED=ROUGE\"\"><button style=\"height: 50px; width: 100px; background-color: rgb(255,0,0)\"> ROUGE </button></a>");
  client.println("<a href=\"/LED=VERT\"\"><button style=\"height: 50px; width: 100px; background-color: rgb(0,255,0)\"> VERT </button></a>");
  client.println("<a href=\"/LED=CYAN\"\"><button style=\"height: 50px; width: 100px; background-color: rgb(0,255,255)\"> CYAN </button></a>");
  client.println("<a href=\"/LED=JAUNE\"\"><button style=\"height: 50px; width: 100px; background-color: rgb(255,255,0)\"> JAUNE </button></a>");
  client.println("<a href=\"/LED=ORANGE\"\"><button style=\"height: 50px; width: 100px; background-color: rgb(255,125,0)\"> ORANGE </button></a>");
  client.println("<br><br>");
  client.println("<a href=\"/LED=VIOLET\"\"><button style=\"height: 50px; width: 100px; background-color: rgb(255,0,255)\"> VIOLET </button></a>");
  client.println("<a href=\"/LED=ROSE\"\"><button style=\"height: 50px; width: 100px; background-color: rgb(255,0,100)\"> ROSE </button></a>");
  client.println("<a href=\"/LED=BLEU\"\"><button style=\"height: 50px; width: 100px; background-color: rgb(0,0,255)\"> BLEU </button></a>");
  client.println("<a href=\"/LED=BLANC\"\"><button style=\"height: 50px; width: 100px; background-color: rgb(255,255,255)\"> BLANC </button></a><br /><br />");
  client.println("<br><br>");
  client.print("Choix de l'animation : ");
  client.println("<br><br>");
  client.println("<a href=\"/LED=CHENILLARD_UP\"\"><button style=\"height: 50px; width: 150px\"> Chenillard up </button></a>");
  client.println("<a href=\"/LED=PROGRESSIVE_UP\"\"><button style=\"height: 50px; width: 150px\"> Progressive up </button></a>");
  client.println("<br><br>");  
  client.println("<a href=\"/LED=ANIM_NINECOLOR\"\"><button style=\"height: 50px; width: 150px\"> Nine color </button></a>");
  client.println("<a href=\"/LED=ANIM_RAINBOWCYCLE\"\"><button style=\"height: 50px; width: 150px\"> Rainbow cycle </button></a>");
  client.println("<br><br>");  
  client.println("<a href=\"/LED=ANIM_THEATERCHASERAINBOW\"\"><button style=\"height: 50px; width: 150px\"> Chase rainbow </button></a>");
  client.println("<a href=\"/LED=ANIM_FIRE\"\"><button style=\"height: 50px; width: 150px\"> Fire </button></a>");
  client.println("<br><br>");
  client.println("<br><br>");
  client.print("Fin : ");
  client.println("<br><br>");
  client.println("<a href=\"/LED=STOP\"\"><button style=\"height: 50px; width: 100px\"> STOP </button></a>");
  client.println("</body>");
  client.println("</html>");
 
  delay(1);

  client.stop();
  Serial.println("Client disonnected");
  Serial.println("");
 
}
J'ai une page web jolie et simple (je n'arrive pas à mettre de photos sur ce forum).
Pouvez vous m'expliquer mon erreur svp?
Merci d'avance,
Modifié en dernier par Neutrino le 12 mai 2019, 19:48, modifié 1 fois.
Raison : Mise en forme du code

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Répondre