Pages: [1] 2   Go Down
Author Topic: Problema accensione led da web  (Read 1100 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao a tutti ho un problema,
Allora ho una scheda relè costruita da me con 6 relè che accendono un led. La mia idea è quella di controllare i singoli relè quindi accendere i led da pagina web usando arduino.
Lo sketch usato da me funziona fino a 4 relè poi quando vado ad aggiungere l'utilizzo di un quinto relè smette di funzionare. credo sia un problema di interazione tra html e arduino..volevo sapere come posso risolvere. Ecco il mio sketch
grazie

Code:
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 1, 252 };
EthernetServer server(80);
String readString;
byte out_1 = 2;
byte out_2 = 3;
byte out_3 = 4;
byte out_4 = 5;
//byte out_5 = 6;

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);  
 // Serial.begin(9600);          
}
 
void loop(){
 
 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) {
          //Serial.print(readString);
              
        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);
        
        //  PAGINA HTML    
        client.println("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("<BR><BR>");
      
        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("</body></html>");
        
        readString="";
      
        delay(1);
        client.flush();
        client.stop();
        }
      }
    }
  }
}

edit by mod: per favore usa i tag code per includere il codice
« Last Edit: April 21, 2013, 04:29:47 pm by leo72 » Logged

Switzerland
Offline Offline
Faraday Member
**
Karma: 115
Posts: 5998
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Se come scheda ethernet usi quella standard di Arduino, allora ho idea che hai un po' di conflitti tra i pin utilizzati dalla scheda ethernet e quelli che usi per i relé ... primo tra tutti il pin 4 che è RISERVATO.

Se ti guardi il modulo Ethernet qui : http://arduino.cc/en/Main/ArduinoEthernetShield vedrai che :

"Arduino communicates with both the W5100 and SD card using the SPI bus (through the ICSP header). This is on digital pins 11, 12, and 13 on the Duemilanove and pins 50, 51, and 52 on the Mega. On both boards, pin 10 is used to select the W5100 and pin 4 for the SD card. These pins cannot be used for general i/o. On the Mega, the hardware SS pin, 53, is not used to select either the W5100 or the SD card, but it must be kept as an output or the SPI interface won't work."

Se invece usi un'altra scheda, con altra piedinatura ... bé allora dicci quale è smiley

Guglielmo
Logged

Search is Your friend ... or I am Your enemy !

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 271
Posts: 21881
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 :
Code:
client.println("HTTP/1.1 200 OK");
scrivi
Code:
client.println(F("HTTP/1.1 200 OK"));

Ciao Uwe
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
Logged

Switzerland
Offline Offline
Faraday Member
**
Karma: 115
Posts: 5998
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

... il pin 4 l'hai comunque dichiarato come OUTPUT e messo ad high vero ? Perché, per evitare qualsiasi problema, va comunque inizializzato smiley-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
Logged

Search is Your friend ... or I am Your enemy !

Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

allora ho dichiarato il pin 4 come output e lo messo high.
Ecco i piedini da me utilizzati:
Code:
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...
Logged

Offline Offline
Full Member
***
Karma: 4
Posts: 215
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Switzerland
Offline Offline
Faraday Member
**
Karma: 115
Posts: 5998
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

... 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 smiley

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

Guglielmo

Logged

Search is Your friend ... or I am Your enemy !

Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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ù.
Logged

Switzerland
Offline Offline
Faraday Member
**
Karma: 115
Posts: 5998
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Search is Your friend ... or I am Your enemy !

Offline Offline
Full Member
***
Karma: 4
Posts: 215
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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!
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
Logged

Genova
Offline Offline
Faraday Member
**
Karma: 40
Posts: 3443
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley-lol
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 smiley e postarlo?

« Last Edit: April 22, 2013, 01:51:45 pm by pablos » Logged

no comment

Switzerland
Offline Offline
Faraday Member
**
Karma: 115
Posts: 5998
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

....
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 ... ????????? smiley-lol smiley-lol smiley-lol

Guglielmo
Logged

Search is Your friend ... or I am Your enemy !

Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho allegato lo schema della scheda relè che utilizzo


* Scheda rele.jpg (105.7 KB, 644x928 - viewed 28 times.)
Logged

Pages: [1] 2   Go Up
Jump to: