Go Down

Topic: Probleme serveur web (Read 1 time) previous topic - next topic

matth59

Sep 06, 2011, 01:34 pm Last Edit: Sep 06, 2011, 06:17 pm by Jean-François Reason: 1
Bonjour,

Ce petit topic pour vous soumettre un probleme qui est en train de me rendre fou:

Materiel: carte Duemilanove avec un shield Ethernet DFRobot (W5100)

Je veut piloter des sorties digital via une pages web (bouton ON/OFF) embarquer dans la carte, tous fonctionne bien avec 4 bouton ON/OFF et qd je rajoute un 5eme bouton  la page web ne veu plus ce charger.

Voila mon code ce sera plus parlant:

Dès que je met dans le 5eme bouton L = 109 ou 110, plantage.

Merci d'avance pour votre aide.


Code: [Select]

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 172, 16, 1, 150 };
byte gateway[] = { 172, 16, 1, 1 };
byte subnet[] = { 255, 255, 0, 0 };              
Server server(80);                                                

int Out1 = 1;
int Out2 = 2;
int Out3 = 3;
int Out4 = 5;
int Out5 = 6;
int Out6 = 7;
int Out7 = 8;

String readString = String(); //string for fetching data from address
String ValeurL;

void setup(){

 Ethernet.begin(mac, ip, gateway, subnet);
 
 pinMode(Out1, OUTPUT);
 pinMode(Out2, OUTPUT);
 pinMode(Out3, OUTPUT);
 pinMode(Out4, OUTPUT);
 pinMode(Out5, OUTPUT);
 pinMode(Out6, OUTPUT);
 pinMode(Out7, OUTPUT);

 
 digitalWrite(Out1, HIGH);
 digitalWrite(Out2, HIGH);
 digitalWrite(Out3, HIGH);
 digitalWrite(Out4, HIGH);
 digitalWrite(Out5, HIGH);
 digitalWrite(Out6, HIGH);
 digitalWrite(Out7, HIGH);
 
 
 Serial.begin(9600);
}
void loop(){

// Create a client connection
Client client = server.available();
 if (client) {
   while (client.connected()) {
     
  if (client.available()) {
   char c = client.read();
   
   Serial.println(c);
   
   if (readString.length() < 30)
     {
       readString.concat(c);        
     }  
       if (c == '\n') {
         
         Serial.println(readString);
         
        ValeurL = readString.substring (8,11);

       
        if(ValeurL == 101)
          {
            digitalWrite(Out1, LOW);    // set the LED on
            Serial.println("Switch 1 = ON");
           }
       
        if(ValeurL == 102)
          {
            digitalWrite(Out1, HIGH); // set the LED OFF
             Serial.println("Switch 1 = OFF");
           }
           
        if(ValeurL == 103)
          {
            digitalWrite(Out2, LOW);    // set the LED on
            Serial.println("Switch 2 = ON");
           }
       
        if(ValeurL == 104)
          {
            digitalWrite(Out2, HIGH); // set the LED OFF
             Serial.println("Switch 2 = OFF");
           }
        if(ValeurL == 105)
          {
            digitalWrite(Out3, LOW);    // set the LED on
            Serial.println("Switch 3 = ON");
           }
       
        if(ValeurL == 106)
          {
            digitalWrite(Out3, HIGH); // set the LED OFF
             Serial.println("Switch 3 = OFF");
           }
        if(ValeurL == 107)
          {
            digitalWrite(Out4, LOW);    // set the LED on
            Serial.println("Switch 4 = ON");
           }
       
        if(ValeurL == 108)
          {
            digitalWrite(Out4, HIGH); // set the LED OFF
             Serial.println("Switch 4 = OFF");
           }
       
        if(ValeurL == 1)
          {
            digitalWrite(Out5, LOW); // set the LED OFF
             Serial.println("Switch 5 = ON");
           }
           
        if(ValeurL == 2)
          {
            digitalWrite(Out5, HIGH); // set the LED OFF
             Serial.println("Switch 5 = OFF");
           }

                     
         client.println("HTTP/1.1 200 OK");
         client.println("Content-Type: text/html");
         client.println();
         client.println();
         client.println("<body BGCOLOR=#C0C0C0><h1><center>Home Controler</h1>");
         
         client.print("<table><tr><td>Sw 1</td><td>Sw 2</td><td>Sw 3</td><td>Sw 4</td><td>Sw 5</td><td>Sw 6</td><td>Sw 7</td></tr>");
         
         client.print("<tr>");
         client.print("<td><form method=get name=LED><input type=hidden name=L value=101><input type=submit value=ON></form></td>");      
         client.print("<td><form method=get name=LED><input type=hidden name=L value=103><input type=submit value=ON></form></td>");
         client.print("<td><form method=get name=LED><input type=hidden name=L value=105><input type=submit value=ON></form></td>");
         client.print("<td><form method=get name=LED><input type=hidden name=L value=107><input type=submit value=ON></form></td>");
         client.print("<td><form method=get name=LED><input type=hidden name=L value=107><input type=submit value=ON></form></td>");
 
         client.print("</tr>");
         
         client.print("<tr>");
         client.print("<td><form method=get name=LED><input type=hidden name=L value=102><input type=submit value=OFF></form></td>");      
         client.print("<td><form method=get name=LED><input type=hidden name=L value=104><input type=submit value=OFF></form></td>");
         client.print("<td><form method=get name=LED><input type=hidden name=L value=106><input type=submit value=OFF></form></td>");
         client.print("<td><form method=get name=LED><input type=hidden name=L value=108><input type=submit value=OFF></form></td>");
         client.print("<td><form method=get name=LED><input type=hidden name=L value=108><input type=submit value=OFF></form></td>");

         client.print("</tr>");
         
         client.print("</tr></table>");
         
         client.print("<font size='5'></br>Sw1: ");                      
        if ( digitalRead(Out1) == 0){
             client.println("<font color='green' size='5'>ON</font>");
          } else {
             client.println("<font color='grey' size='5'>OFF</font>");
            }      

         client.print("<font size='5'></br>Sw2: ");                
        if ( digitalRead(Out2) == 0 ){
             client.println("<font color='green' size='5'>ON</font>");
           } else {      
             client.println("<font color='grey' size='5'>OFF</font>");
            }            
       
         client.print("<font size='5'></br>Sw3: ");                
        if ( digitalRead(Out3) == 0){
             client.println("<font color='green' size='5'>ON</font>");
           } else {        
             client.println("<font color='grey' size='5'>OFF</font>");
            }            
       
         client.print("<font size='5'></br>Sw4: ");                
        if ( digitalRead(Out4) == 0 ){
             client.println("<font color='green' size='5'>ON</font>");
           } else {        
             client.println("<font color='grey' size='5'>OFF</font>");
            }    
 
          client.print("<font size='5'></br>Sw5: ");                
        if ( digitalRead(Out5) == 0 ){
             client.println("<font color='green' size='5'>ON</font>");
           } else {        
             client.println("<font color='grey' size='5'>OFF</font>");
            }
           
          client.print("<font size='5'></br>Sw6: ");                
        if ( digitalRead(Out6) == 0 ){
             client.println("<font color='green' size='5'>ON</font>");
           } else {        
             client.println("<font color='grey' size='5'>OFF</font>");
            }
           
          client.print("<font size='5'></br>Sw7: ");                
        if ( digitalRead(Out7) == 0 ){
             client.println("<font color='green' size='5'>ON</font>");
           } else {        
             client.println("<font color='grey' size='5'>OFF</font>");
            }
         
         
         Serial.println(digitalRead(Out1));
         Serial.println(digitalRead(Out2));
         Serial.println(digitalRead(Out3));
         Serial.println(digitalRead(Out4));  
         
         client.println("</body></html>");
         //clearing string for next read
         readString="";
         
         client.stop();
           }
         }
       }
      }
    }    
 


Edit de Jean-François : Merci de mettre les balise "code".

Vovov


Dès que je met dans le 5eme bouton L = 109 ou 110, plantage.

Code: [Select]

[...]
         client.print("<td><form method=get name=LED><input type=hidden name=L value=105><input type=submit value=ON></form></td>");
         client.print("<td><form method=get name=LED><input type=hidden name=L value=107><input type=submit value=ON></form></td>");
         client.print("<td><form method=get name=LED><input type=hidden name=L value=107><input type=submit value=ON></form></td>");
 
         client.print("</tr>");
         
         client.print("<td><form method=get name=LED><input type=hidden name=L value=106><input type=submit value=OFF></form></td>");
         client.print("<td><form method=get name=LED><input type=hidden name=L value=108><input type=submit value=OFF></form></td>");
         client.print("<td><form method=get name=LED><input type=hidden name=L value=108><input type=submit value=OFF></form></td>");
[...]



Je serais étonné que ce soit la cause de ton "plantage" mais note que le 5ème bouton a les même value que le 4ième !

trigger

Salut salut,

Je suis aussi sur un sketch de domotique et je suis vraiment d'avoir trouvé le tiens car tu utilises une tout autre méthode et je dois dire que je trouve cela vraiment cool :)

Comme j'avais un peu de temps j'ai bricolé ton code  :smiley-roll-sweat:

Donc tu utilisais la broche 1 donc le TX ce qui posait problème ...
j'ai aussi modifier le masque de sous réseau ( aucune idée si ça a changé quelque chose ou non ^^)

le commentaire précédent étant bien juste et a permis un de-bug rapide, merci :)
tiens voila donc le code qui commande les 7 sorties ;)

EDIT: il ne tiens je te le fou dans un com suivant

bon courage pour la suite,
Amicalement,
Trigger

trigger

Code: [Select]
#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 1, 9 };
byte gateway[] = { 192,168,1,254 };
byte subnet[] = { 255, 255, 255, 0 };               
Server server(80);                                                 

int Out1 = 2;
int Out2 = 3;
int Out3 = 5;
int Out4 = 6;
int Out5 = 7;
int Out6 = 8;
int Out7 = 9;

String readString = String(); //string for fetching data from address
String ValeurL;

void setup(){

  Ethernet.begin(mac, ip, gateway, subnet);
 
  pinMode(Out1, OUTPUT);
  pinMode(Out2, OUTPUT);
  pinMode(Out3, OUTPUT);
  pinMode(Out4, OUTPUT);
  pinMode(Out5, OUTPUT);
  pinMode(Out6, OUTPUT);
  pinMode(Out7, OUTPUT);

 
  digitalWrite(Out1, HIGH);
  digitalWrite(Out2, HIGH);
  digitalWrite(Out3, HIGH);
  digitalWrite(Out4, HIGH);
  digitalWrite(Out5, HIGH);
  digitalWrite(Out6, HIGH);
  digitalWrite(Out7, HIGH);
 
 
  Serial.begin(9600);
}
void loop(){

// Create a client connection
Client client = server.available();
  if (client) {
    while (client.connected()) {
     
   if (client.available()) {
    char c = client.read();
   
    Serial.println(c);
   
    if (readString.length() < 30)
      {
        readString.concat(c);       
      } 
        if (c == '\n') {
         
          Serial.println(readString);
         
         ValeurL = readString.substring (8,11);

         
         if(ValeurL == 101)
           {
             digitalWrite(Out1, LOW);    // set the LED on
             Serial.println("Switch 1 = ON");
            }
       
         if(ValeurL == 102)
           {
             digitalWrite(Out1, HIGH); // set the LED OFF
              Serial.println("Switch 1 = OFF");
            }
           
         if(ValeurL == 103)
           {
             digitalWrite(Out2, LOW);    // set the LED on
             Serial.println("Switch 2 = ON");
            }
       
         if(ValeurL == 104)
           {
             digitalWrite(Out2, HIGH); // set the LED OFF
              Serial.println("Switch 2 = OFF");
            }
         if(ValeurL == 105)
           {
             digitalWrite(Out3, LOW);    // set the LED on
             Serial.println("Switch 3 = ON");
            }
       
         if(ValeurL == 106)
           {
             digitalWrite(Out3, HIGH); // set the LED OFF
              Serial.println("Switch 3 = OFF");
            }
         if(ValeurL == 107)
           {
             digitalWrite(Out4, LOW);    // set the LED on
             Serial.println("Switch 4 = ON");
            }
       
         if(ValeurL == 108)
           {
             digitalWrite(Out4, HIGH); // set the LED OFF
              Serial.println("Switch 4 = OFF");
            }   
           
         if(ValeurL == 109)
           {
             digitalWrite(Out5, LOW); // set the LED OFF
              Serial.println("Switch 5 = ON");
            }
           
         if(ValeurL == 110)
           {
             digitalWrite(Out5, HIGH); // set the LED OFF
              Serial.println("Switch 5 = OFF");
            }

         if(ValeurL == 111)
           {
             digitalWrite(Out6, LOW);    // set the LED on
             Serial.println("Switch 6 = ON");
            }
       
         if(ValeurL == 112)
           {
             digitalWrite(Out6, HIGH); // set the LED OFF
              Serial.println("Switch 6 = OFF");
            }   
           
         if(ValeurL == 113)
           {
             digitalWrite(Out7, LOW); // set the LED OFF
              Serial.println("Switch 7 = ON");
            }
           
         if(ValeurL == 114)
           {
             digitalWrite(Out7, HIGH); // set the LED OFF
              Serial.println("Switch 7 = OFF");
            }
         
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          client.println();
          client.println("<body BGCOLOR=#C0C0C0><h1><center>Home Controler</h1>");
         
          client.print("<table><tr><td>Sw 1</td><td>Sw 2</td><td>Sw 3</td><td>Sw 4</td><td>Sw 5</td><td>Sw 6</td><td>Sw 7</td></tr>");
         
          client.print("<tr>");
          client.print("<td><form method=get name=LED><input type=hidden name=L value=101><input type=submit value=ON></form></td>");     
          client.print("<td><form method=get name=LED><input type=hidden name=L value=103><input type=submit value=ON></form></td>");
          client.print("<td><form method=get name=LED><input type=hidden name=L value=105><input type=submit value=ON></form></td>");
          client.print("<td><form method=get name=LED><input type=hidden name=L value=107><input type=submit value=ON></form></td>");
          client.print("<td><form method=get name=LED><input type=hidden name=L value=109><input type=submit value=ON></form></td>");
          client.print("<td><form method=get name=LED><input type=hidden name=L value=111><input type=submit value=ON></form></td>");
          client.print("<td><form method=get name=LED><input type=hidden name=L value=113><input type=submit value=ON></form></td>");   
          client.print("</tr>");
         
          client.print("<tr>");
          client.print("<td><form method=get name=LED><input type=hidden name=L value=102><input type=submit value=OFF></form></td>");     
          client.print("<td><form method=get name=LED><input type=hidden name=L value=104><input type=submit value=OFF></form></td>");
          client.print("<td><form method=get name=LED><input type=hidden name=L value=106><input type=submit value=OFF></form></td>");
          client.print("<td><form method=get name=LED><input type=hidden name=L value=108><input type=submit value=OFF></form></td>");
          client.print("<td><form method=get name=LED><input type=hidden name=L value=110><input type=submit value=OFF></form></td>");
          client.print("<td><form method=get name=LED><input type=hidden name=L value=112><input type=submit value=OFF></form></td>");
          client.print("<td><form method=get name=LED><input type=hidden name=L value=114><input type=submit value=OFF></form></td>");
          client.print("</tr>");
           
          client.print("</tr></table>");
           
          client.print("<font size='5'></br>Sw1: ");                     
         if ( digitalRead(Out1) == 0){
              client.println("<font color='green' size='5'>ON</font>");
           } else {
              client.println("<font color='grey' size='5'>OFF</font>");
             }       

          client.print("<font size='5'></br>Sw2: ");               
         if ( digitalRead(Out2) == 0 ){
              client.println("<font color='green' size='5'>ON</font>");
            } else {       
              client.println("<font color='grey' size='5'>OFF</font>");
             }             
         
          client.print("<font size='5'></br>Sw3: ");                 
         if ( digitalRead(Out3) == 0){
              client.println("<font color='green' size='5'>ON</font>");
            } else {       
              client.println("<font color='grey' size='5'>OFF</font>");
             }             
         
          client.print("<font size='5'></br>Sw4: ");               
         if ( digitalRead(Out4) == 0 ){
              client.println("<font color='green' size='5'>ON</font>");
            } else {       
              client.println("<font color='grey' size='5'>OFF</font>");
             }   
   
           client.print("<font size='5'></br>Sw5: ");               
         if ( digitalRead(Out5) == 0 ){
              client.println("<font color='green' size='5'>ON</font>");
            } else {       
              client.println("<font color='grey' size='5'>OFF</font>");
             }
             
           client.print("<font size='5'></br>Sw6: ");               
         if ( digitalRead(Out6) == 0 ){
              client.println("<font color='green' size='5'>ON</font>");
            } else {       
              client.println("<font color='grey' size='5'>OFF</font>");
             }
             
           client.print("<font size='5'></br>Sw7: ");               
         if ( digitalRead(Out7) == 0 ){
              client.println("<font color='green' size='5'>ON</font>");
            } else {       
              client.println("<font color='grey' size='5'>OFF</font>");
             }
         
         
          Serial.println(digitalRead(Out1));
          Serial.println(digitalRead(Out2));
          Serial.println(digitalRead(Out3));
          Serial.println(digitalRead(Out4));   
         
          client.println("</body></html>");
          //clearing string for next read
          readString="";
         
          client.stop();
            }
          }
        }
       }
     }     
   


Go Up