Problema accensione led da web

Quale Arduino usi? Come alimenti i relé? Hai usato un transistore per pilotare i relé?

Stai riempendo la RAM e si blocca velocemente. Usa F() per non copiare il testo in RAM quando lo stampi:

al posto di :

client.println("HTTP/1.1 200 OK");

scrivi

client.println(F("HTTP/1.1 200 OK"));

Ciao Uwe

intanto vi ringrazio per il vostro aiuto.
Si esatto uso la scheda ethernet standard presente su arduino.
Ho provato a cambiare il piedino 4 e ad utilizzare il piedino 7 ma niente stesso problema.
Vi spiego, fino a quattro pin collegati funziona perfettamente, con 5 pin collegati non mi commuta l'uscita allo stato alto.
Ho messo lo stesso l'istruzione per non far caricare in Ram ma il problema persiste. E' possibile che non suporti più di quattro pin che lavorano contemporaneamente?

... il pin 4 l'hai comunque dichiarato come OUTPUT e messo ad high vero ? Perché, per evitare qualsiasi problema, va comunque inizializzato :wink:

Per il resto ...
... questa cosa dei 4 che commutano e il quinto che non va più ... te la fa anche se cambi pin ? Ovvero se invece di non collegare il 7, ad esempio lo colleghi e scolleghi il 2 (... così sono sempre 4 relé) va ???

Guglielmo

allora ho dichiarato il pin 4 come output e lo messo high.
Ecco i piedini da me utilizzati:

byte out_1 = 1;
byte out_2 = 3;
byte out_3 = 5;
byte out_4 = 6;
byte out_5 = 7;

Niente da fare. continua a non funzionare...

Non è un problema elettrico?
Prova a sostituire sui pin di uscita la scheda relè con dei led e relativi resistori e vedi se riesci ad accenderli senza problemi.

... difatti ... avevo proposto di provare con un'altra combinazione di 4 relé proprio per vedere se era un problema dei CINQUE (e quindi magari legato a problemi di assorbimento) o ad altro :slight_smile:

Con solo QUATTRO relé ... comunque scelti, funziona ??? E' solo quando si aggiunge un QUALSIASI quinto che da problemi ???

Guglielmo

si esatto con quattro relè funziona perfettamente... quando vado ad aggiungere il quinto relè non mi funziona più niente.. la scheda relè è a posto perchè provandoli singolarmente funzionano tutti.
Si incasina quando vado ad aggiungere il quinto o più.

Allora, con QUALUNQUE combinazione di quattro relé ti funziona, quando attacchi il quinto non va più ...
... con cosa stai alimentando il tutto e che genere di relé stai usando (modello, caratteristiche, ...) ?

Guglielmo

Magari posta lo schema della scheda relè che dici di aver realizzato e le connessioni con arduino, la mia impressione e quella di Guglielmo è che ci siano problemi di assorbimento corrente. Rischi di danneggiare anche Arduino!

Allora la schedà rele è alimentata da un alimentatore a parte da 12 VOLT. Mentre i relè sono pilotati da un transistor 2N22.. dite che può essere lì il problema?

i pin 0 e 1 sono impegnati dalla seriale e tu hai nello sketch un serial.begin(9600)..... hai tolto il 4 e hai messo l'1 XD
il problema è che su 12 post non hai ancora detto come hai collegato questi relè .... per ora hai detto il modello del Tr, tra una decina di post riusciremo a capire quali componenti hai usato, ma non riesci proprio a fare un disegno, una foto del disegno, una foto dello schermo, un fax :slight_smile: e postarlo?

pablos:
....
il problema è che su 12 post non hai ancora detto come hai collegato questi relè .... per ora hai detto il modello del Tr,
....

... magari c'avesse detto il modello del trasformatore ... c'ha detto che a 12V ... e ... ????????? XD XD XD

Guglielmo

Ho allegato lo schema della scheda relè che utilizzo

Ma hai fatto quello che ti ha detto @UWE ?
visto che pare piu' un problema di Ram

Stai riempendo la RAM e si blocca velocemente. Usa F() per non copiare il testo in RAM quando lo stampi:

al posto di :
Code:

client.println("HTTP/1.1 200 OK");

scrivi
Code:

client.println(F("HTTP/1.1 200 OK"));

Ciao Uwe

Si che l'ho inserito.. ecco il mio codice intero:

#include <SPI.h>
#include <Ethernet.h> 
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 254, 177 };
EthernetServer server(80);
String readString;

byte out_1 = 2;
byte out_2 = 3;
byte out_3 = 5;
byte out_4 = 6;
byte out_5 = 7;
//byte out_6 = 8;



void setup()
{ 
  Ethernet.begin(mac, ip);
  pinMode(out_1, OUTPUT);
  pinMode(out_2, OUTPUT);
  pinMode(out_3, OUTPUT); 
  pinMode(out_4, OUTPUT);
  pinMode(out_5, OUTPUT);    
  //pinMode(out_6, OUTPUT);
  
  
  
         
}
 
void loop(){
 
 //digitalWrite(out_7, LOW);
 EthernetClient  client = server.available();
 
  if (client) {
    boolean currentLineIsBlank = true;
   
    while (client.connected()) {
      if (client.available()) { 
        char c = client.read();
        readString.concat(c);   
        if (c == '\n' && currentLineIsBlank) {
          
               
        if(readString.indexOf("on_1") > 0) digitalWrite(out_1, HIGH);        
        if(readString.indexOf("off_1") > 0) digitalWrite(out_1, LOW);          
        if(readString.indexOf("on_2") > 0) digitalWrite(out_2, HIGH);        
        if(readString.indexOf("off_2") > 0) digitalWrite(out_2, LOW);          
        if(readString.indexOf("on_3") > 0) digitalWrite(out_3, HIGH);        
        if(readString.indexOf("off_3") > 0) digitalWrite(out_3, LOW); 
        if(readString.indexOf("on_4") > 0) digitalWrite(out_4, HIGH);        
        if(readString.indexOf("off_4") > 0) digitalWrite(out_4, LOW);
       if(readString.indexOf("on_5") > 0) digitalWrite(out_5, HIGH);        
        if(readString.indexOf("off_5") > 0) digitalWrite(out_5, LOW);
        //if(readString.indexOf("on_6") > 0) digitalWrite(out_6, HIGH);        
        //if(readString.indexOf("off_6") > 0) digitalWrite(out_6, LOW);
         
        //  PAGINA HTML      
        client.println(F("HTTP/1.1 200 OK"));
        client.println("Content-Type: text/html");
        client.println();
        client.print("<html><head><title>ARDUINO Controllo WEB</title><meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' ></head><body>");
        client.print("

");
       
        client.print("<span>STATO LUCE 1 </span>");
        if (digitalRead(out_1)== true) client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"ON\" STYLE=\"background-color:#00FF00\"/>");  
        else client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"OFF\" STYLE=\"background-color:#C0C0C0\"/>");
        client.print("<p><p/>");   
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"On\" onclick =\" location.href='/?on_1'\">");
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"Off\" onclick =\" location.href='/?off_1'\">");                   
        client.print("<p><p/>");
        
        client.print("<span>STATO LUCE 2 </span>");       
        if (digitalRead(out_2)== true) client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"ON\" STYLE=\"background-color:#00FF00\"/>");  
        else client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"OFF\" STYLE=\"background-color:#C0C0C0\"/>");       
        client.print("<p><p/>"); 
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"On\" onclick =\" location.href='/?on_2'\">");
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"Off\" onclick =\" location.href='/?off_2'\">");
        client.print("<p><p/>");
        
        client.print("<span>STATO LUCE 3 </span>");
        if (digitalRead(out_3)== true) client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"ON\" STYLE=\"background-color:#00FF00\"/>");  
        else client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"OFF\" STYLE=\"background-color:#C0C0C0\"/>");
        client.print("<p><p/>");
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"On\" onclick =\" location.href='/?on_3'\">");
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"Off\" onclick =\" location.href='/?off_3'\">");        
        client.print("<p><p/>");
        
        client.print("<span>STATO LUCE 4 </span>");
        if (digitalRead(out_4)== true) client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"ON\" STYLE=\"background-color:#00FF00\"/>");  
        else client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"OFF\" STYLE=\"background-color:#C0C0C0\"/>");
        client.print("<p><p/>");
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"On\" onclick =\" location.href='/?on_4'\">");
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"Off\" onclick =\" location.href='/?off_4'\">");        
        client.print("<p><p/>");
        
        client.print("<span>STATO LUCE 5 </span>");
        if (digitalRead(out_5)== true) client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"ON\" STYLE=\"background-color:#00FF00\"/>");  
        else client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"OFF\" STYLE=\"background-color:#C0C0C0\"/>");
        client.print("<p><p/>");
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"On\" onclick =\" location.href='/?on_5'\">");
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"Off\" onclick =\" location.href='/?off_5'\">");
        client.print("<p><p/>");*/
        
        /*client.print("<span>STATO LUCE 6 </span>");
        if (digitalRead(out_6)== true) client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"ON\" STYLE=\"background-color:#00FF00\"/>");  
        else client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"OFF\" STYLE=\"background-color:#C0C0C0\"/>");
        client.print("<p><p/>");
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"On\" onclick =\" location.href='/?on_6'\">");
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"Off\" onclick =\" location.href='/?off_6'\">");
        client.print("<p><p/>");*/
        
        client.print("</body></html>");
         
        readString="";
        
        delay(1);
        client.flush();
        client.stop(); 
        }
      }
    }
  }
}

va' fatto su TUTTE le client.print
non solo sulla prima riga

... senti ... ma ce lo vuoi dire o no che potenza ha l'alimentatore e quanto assorbe ognuno di quei relé ??? Non abbiamo mica la palla di cristallo eh ! Come facciamo a calcolare se ti si blocca perché, ad esempio, l'alimentatore non ce la fa ad alimentare più di 4 relé ?

Grazie :slight_smile:

Guglielmo

L'ho aggiunto a tutte le righe e funziona perfettamente anche con 6 led :slight_smile:

Grazie mille a tutti! Dove hai letto che la "F" serve per evitare il caricamento sulla RAM? Così posso studiarmelo da solo :slight_smile:

Ringrazio ancora TUTTI per il vostro tempo a me dedicatomi e per la vostra gentilezza! :slight_smile:

http://playground.arduino.cc/Learning/Memory