Salve a tutti. Ho da poco finito di assemblare un piccolo progettino così composto: Scheda Arduino UNO, Ethernet shield e modulo da due relè al quale ho collegato una lampadina. Il mio scopo è di poter accendere e spegnare a mio piacimento, collegandomi alla pagina web creata da arduino e cliccando sul bottone presente. Fin qui nulla di strano. Il problema è che, dopo aver acceso la prima volta, la lampadina è rimasta accesa per circa un'ora e poi si è spenta. L'ho riaccesa ed è rimasta accesa per 8 minuti. L'ho riaccesa e si è rispenta dopo 6 minuti. Al momento che vi sto scrivendo è accesa da circa 15 minuti. Insomma, per non farla troppo lunga, non riesco a capire questo funzionamento discontinuo.
Avete qualche idea in merito?
Grazie per la vostra attenzione. allego codice sketch e foto del modulo relè.
/**
Questo programma mostra come sia possibile inserire del codice HTML all'interno della
pagina web del webserver di Arduino*/
#include <SPI.h>
#include <Ethernet.h>
int pinLED = 9; // pin a cui è connesso il Relay1
int pinLED1 = 8; // pin a cui è connesso il Relay2
boolean acceso = false;
// Mac Address di Arduino
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress ip(192, 168, 1, 18);
// Viene inizializzata la libreria Ethernet di Arduino e il webserver gira sulla porta 81
EthernetServer server(81);
void setup() {
pinMode(pinLED,OUTPUT);
pinMode(pinLED1,OUTPUT);
digitalWrite(pinLED,LOW);
digitalWrite(pinLED1,LOW);
Serial.begin(9600);
// Viene inizializzato il webserver e la connessione di rete
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}
void loop() {
// Vengono ascoltati nuovi client
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
// Finisce una richiesta HTTP
boolean currentLineIsBlank = true;
String postText ="";
while (client.connected()) {
if (client.available()) {
char c = client.read();
if(postText.length()<10){
postText +=c;
}
// Se viene completato l'invio della richiesta HTTP, allora il server invia la risposta
if (c == '\n' && currentLineIsBlank) {
// Viene fatta una risposta HTTP, in pratica viene creata una pagina WEB in HTML
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close"); // Dopo la risposta la connessione si interrompe
client.println();
client.println("<meta charset=UTF-8>"); // serve per inserire i caretteri speciali
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<head> <TITLE>Attilio</TITLE> </head>"); // Viene creato il Titolo
client.println("<body> <center><h1> Benvenuto nel Webserver Arduino </h1></center>"); // Viene inserito del testo
client.println("<center><h3> Attraverso questa pagina è possibile accendere e spegnere le luci del vialetto </h3></center>");
client.println("</body>");
client.println("</html>");
break;
}
if (c == '\n') {
currentLineIsBlank = true;
}
else if (c != '\r') {
currentLineIsBlank = false;
}
}
}
// Se l'utente ha premuto l'icona per accendere il LED
if(postText.indexOf("?on") >0){
digitalWrite(pinLED,HIGH);
digitalWrite(pinLED1,HIGH);
Serial.println("Accendi le luci");
acceso = true;
}
// Se l'utente ha premuto l'icona per spegnere il LED
if(postText.indexOf("?off") >0 ){
digitalWrite(pinLED,LOW);
digitalWrite(pinLED1,LOW);
Serial.println("Spegni le luci");
acceso = false;
}
// Viene cambiata la pagina WEB a seconda che il LED sia spento, oppure acceso
if(acceso){
client.println("<center><a href=\"./?off\"> <img src = \"http://ismanettoneblog.altervista.org/blog/wp-content/uploads/2014/03/led-red.png\"alt = \"Spegni\" ></a></center>");
client.println("<center><h3> Le luci sono accese </h3></center>");
}else{
client.println("<center><a href=\"./?on\"> <img src = \"http://ismanettoneblog.altervista.org/blog/wp-content/uploads/2014/03/led-green.png\"alt = \"Accendi\" ></a></center>");
client.println("<center><h3> Le luci sono spente </h3></center>");
}
delay(1);
// Viene chiusta la connessione
client.stop();
Serial.println("client disconnected");
}
}