Problème d'affichage html pour un projet

Bonjour, je suis débutant dans la programmation arduino, je cherche a fabriquer un "chasse pigeon". C'est a dire un appareil capable d'émettre un son d'une fréquence aléatoire dans une plage donné pour effrayer ces animaux sans leur faire de mal. De plus, je cherche a ce que ce système soit pilotable par internet.
Ce système est composé d'une carte Mega, d'une horloge interne, d'un shield ethernet.

Le code est bien avancé mais lors de nos tests nous ne parvenons pas à afficher la page html via le navigateur Firefox, alors que sur le moniteur Arduino il est indiqué qu'un nouveau client est connecté.
Si au passage vous repérez des erreurs je vous en serais reconnaissant. Je précise que le code html a été vérifié plusieurs fois et ne présente apparemment pas d'erreurs (apparemment).
Merci d'avance pour votre aide.

Voici le code complet :

#include <String.h>
#include <SPI.h>
#include <Ethernet.h>
#include <Server.h>
#include <Wire.h>
#include <Client.h>
#define MaxHeaderLenght 16


byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x9D, 0xFC };
byte ip[] = {169,254,60,96};
byte subnet[] = {255, 255, 0, 0};
byte gateway[] = {169,254,60,96};
EthernetServer server(80);



byte h=0;
byte d=0;
byte f=0;
byte t=0;

  
  
String HttpHeader = String(16);




void setup() {
HttpHeader="";
  pinMode (A7,OUTPUT);
  Serial.begin(9600);
  Ethernet.begin(mac, ip, subnet, gateway);
  server.begin();
  Serial.print("Le serveur est a l'adresse: ");
  Serial.println(Ethernet.localIP());

}



void loop() {
  
               
  EthernetClient client = server.available();
       if (client) {
       Serial.println("new client");
  
        boolean currentLineIsBlank = true;
        while (client.connected()) {
        if (client.available()) {
        char c= client.read(); 
       
          if (HttpHeader.length() <16)    {     
            HttpHeader = HttpHeader + c; 
          }
          
            if (c=='\n'&& currentLineIsBlank) {
              Serial.println(HttpHeader); }
              
              
              
              
              if (HttpHeader.indexOf("h=0") > 0) { (h=0); }
                else if (HttpHeader.indexOf("h=1") > 0) { (h=1); }
                   else if (HttpHeader.indexOf("h=2") > 0) { (h=2); } 
                      else if (HttpHeader.indexOf("h=3") > 0) { (h=3); }
                         else if (HttpHeader.indexOf("h=4") > 0) { (h=4); }
                            else if (HttpHeader.indexOf("h=5") > 0) { (h=5); }
                               else if (HttpHeader.indexOf("h=6") > 0) { (h=6); }
                                  else if (HttpHeader.indexOf("h=7") > 0) { (h=7); }
                                     else if (HttpHeader.indexOf("h=8") > 0) { (h=8); }
                                        else if (HttpHeader.indexOf("h=9") > 0) { (h=9); }
                                           else if (HttpHeader.indexOf("h=10") > 0) { (h=10); }
                                              else if (HttpHeader.indexOf("h=11") > 0) { (h=11); }
                                                 else if (HttpHeader.indexOf("h=12") > 0) { (h=12); }
                                                    else if (HttpHeader.indexOf("h=13") > 0) { (h=13); } 
                                                       else if (HttpHeader.indexOf("h=14") > 0) { (h=14); }
                                                          else if (HttpHeader.indexOf("h=15") > 0) { (h=15); }
                                                            else if (HttpHeader.indexOf("h=16") > 0) { (h=16); }
                                                               else if (HttpHeader.indexOf("h=17") > 0) { (h=17); }
                                                                  else if (HttpHeader.indexOf("h=18") > 0) { (h=18); }
                                                                     else if (HttpHeader.indexOf("h=19") > 0) { (h=19); }
                                                                        else if (HttpHeader.indexOf("h=20") > 0) { (h=20); }
                                                                           else if (HttpHeader.indexOf("h=21") > 0) { (h=21); }
                                                                              else if (HttpHeader.indexOf("h=22") > 0) { (h=22); }
                                                                                 else if (HttpHeader.indexOf("h=23") > 0) { (h=23); }
                                                                                   
        
   
        
            
             if (HttpHeader.indexOf("d=15") > 0) { (d=15); }
                else if (HttpHeader.indexOf("d=30") > 0) { (d=30); }
                  else if (HttpHeader.indexOf("d=45") > 0) { (d=45); }
                    else if (HttpHeader.indexOf("d=59") > 0) { (d=59); }
                    
        
    
          client.println("HTTP/1.1 200 OK");
          client.println("<!DOCTYPE HTML>");
          client.println("Content-Type: text/html");
          client.println("<HTML>");
          client.println("<HEAD><title>Configuration du chasse nuisibles </title></HEAD>");
          client.println("<BODY>");
          client.println("<h3>Panneau de configuration du chasse nuisibles</h3>");
          client.println("<FORM ACTION='sitechassenuisible.html' METHOD='GET'>");
          client.println("<P>Heure de debut :");
          client.println("<SELECT NAME='h' multiple size=1>");
          client.println("<OPTION VALUE='00'>00:00");
          client.println("<OPTION VALUE='01'>01:00");
          client.println("<OPTION VALUE='02'>02:00");
          client.println("<OPTION VALUE='03'>03:00");
          client.println("<OPTION VALUE='04'>04:00");
          client.println("<OPTION VALUE='05'>05:00");
          client.println("<OPTION VALUE='06'>06:00");
          client.println("<OPTION VALUE='07'>07:00");
          client.println("<OPTION VALUE='08'>08:00");
          client.println("<OPTION VALUE='09'>09:00");
          client.println("<OPTION VALUE='10'>10:00");
          client.println("<OPTION VALUE='11'>11:00");
          client.println("<OPTION VALUE='12'>12:00");
          client.println("<OPTION VALUE='13'>13:00");
          client.println("<OPTION VALUE='14'>14:00");
          client.println("<OPTION VALUE='15'>15:00");
          client.println("<OPTION VALUE='17'>17:00");
          client.println("<OPTION VALUE='18'>18:00");
          client.println("<OPTION VALUE='19'>19:00");
          client.println("<OPTION VALUE='20'>20:00");
          client.println("<OPTION VALUE='21'>21:00");
          client.println("<OPTION VALUE='22'>22:00");
          client.println("<OPTION VALUE='23'>23:00");
          client.println("</SELECT> </P>");
          client.println("<P>Duree :");
          client.println("<SELECT NAME='d' multiple size=1>");
          client.println("<OPTION VALUE='0'>00:00");
          client.println("<OPTION VALUE='15'>00:15");
          client.println("<OPTION VALUE='30'>00:30");
          client.println("<OPTION VALUE='45'>00:45");
          client.println("<OPTION VALUE='59'>00:59");
          client.println("</SELECT> </P>");
          client.println("<INPUT TYPE='submit' VALUE='Envoyer la requete'>");
          client.println("</FORM>");
          client.println("</BODY>");
          client.println("</HTML>");
          
         

      }
    
            Wire.beginTransmission(0x68); 
          Wire.write(0); 
          Wire.endTransmission(); 
        

          
          Wire.requestFrom(0x68, 7);  // demander si tout est nécessaire
          byte secs = Wire.read();
          byte mins = Wire.read();
          byte hrs = Wire.read();
          byte jour = Wire.read();
          byte date = Wire.read();
          byte mois = Wire.read();
          byte annee = Wire.read();
         
          byte t = hrs*60 + mins ;
          while ( t > h*60 && t < h*60 + d ) {
            byte f = random(200,15000);
            byte l = random(60000,180000);
            tone(A7, f, l);
            Wire.beginTransmission(0x68); 
            Wire.write(0); 
            Wire.endTransmission(); 
        
            Wire.requestFrom(0x68, 7); 
            byte secs = Wire.read();
            byte mins = Wire.read();
            byte hrs = Wire.read();
            byte jour = Wire.read();
            byte date = Wire.read();
            byte mois = Wire.read();
            byte annee = Wire.read();
            byte t = hrs*60 + mins ;
             }




}
delay(1);
    // close the connection:
    client.stop();
    Serial.println("client disonnected");
  }}

Bonjour,

Deux conseils :

  • webduino
  • PROGMEM (voir la fonction F())
    :wink:

Le premier va te simplifier grandement la vie pour la gestion du protocole HTTP, le second va faire que ton code passe en mémoire flash.
Tu as plein d'exemples sur le forum, une petite recherche avec "webduino" devrait t'en sortir un paquet.