Ciao a tutti mi chiamo Fabrizio e ho iniziato a programmare con Arduino da pochi mesi collegando 4 relè per aprire il cancello e altri apparecchi ma recentemente collegando anche il led ir per accendere la televisione da web e cliccando 4 o 5 volte sulla pagina web arduino si blocca inspiegabilmente ed escono molte scritte strane perdendo così la connessione!
Sarei molto grato se qualcuno sarebbe così gentile da controllarmi il codice se è formalmente corretto
Vi ringrazio
#include <IRremote.h>
#include <IRremoteInt.h>
#include <String.h>
#include <SPI.h>
#include <Ethernet.h>
#include <Tone.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // mac address
byte ip[] = { 192, 168, 1, 9 }; // ip arduino internet in
byte gateway[] = { 192, 168, 1, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
Server server(80);
IRsend irsend;
unsigned int Samsung[68] ={4550,4450,600,1600,650,1650,600,1600,650,500,600,500,650,500,600,500,650,500,600,1650,600,1600,650,1600,650,500,600,500,650,500,600,500,650,500,600,500,650,1600,600,500,650,500,600,500,650,500,600,500,650,500,600,1600,650,500,600,1650,600,1650,600,1650,600,1650,600,1650,600,1650,600};
unsigned int dream[70] ={260,700,240,2560,260,700,240,2720,240,1240,260,1240,240,840,240,2040,260,12700,260,700,240,840,240,700,260,700,240,700,260,2700,260,700,240,700,260,15424,260,700,240,2560,260,700,240,2720,240,1240,260,1240,240,840,240,2040,260,12700,260,700,
240,1920,240,1760,260,700,240,700,260,2700,260,700,240,700};
unsigned int box[72] ={260,15424,260,700,240,2560,240,720,240,2720,240,1240,240,1260,240,840,240,2040,260,12700,240,720,240,1900,260,1760,240,720,240,700,240,2720,240,720,240,700,240,11960,260,700,240,2560,260,700,240,2720,240,1240,260,1240,240,840,2040,260,12700,240,720,240,1760,260,1900,240,720,240,700,240,2720,260,700,240,700,260};
int sensorPin = 0;
int led3 = 3;
int led5 = 5;
int led6 = 6;
int led7 = 7;
int led8 = 8;
int led9 = 9; // pin attuatore
boolean LEDON = false; // flag status attuatore
boolean LEDONn = false; // flag status attuatore
boolean LEDN = false; // flag status attuatore
String readString; //string
void setup(){
Ethernet.begin(mac, ip, gateway, subnet);
pinMode(led9, OUTPUT);
pinMode(led8, OUTPUT);
pinMode(led7, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(led5, OUTPUT);
}
void loop(){
int reading = analogRead(sensorPin);
int voltage = reading * 6.5;
voltage /= 1024.0;
{
//temperatura
int temperatureC = (voltage - 0.5) * 10 ; //converting from 10 mv per degree wit 500 mV offset
/*inizio client*/
// listen for incoming clients
Client client = server.available();
if (client) {
Serial.println("new client");
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
readString.concat(c); //store characters to string
if (c == '\n' && currentLineIsBlank) {
if(readString.indexOf("L=1") > 0) {//apricancello
digitalWrite(led9, HIGH);
delay(1000);
digitalWrite(led9, LOW);
}
if(readString.indexOf("L=2") > 0) {//rele ON
digitalWrite(led8, HIGH);
LEDON = true;
//accende il led
}
if(readString.indexOf("L=3") > 0) {//rele OFF
digitalWrite(led8, LOW);
LEDON = false;
}
if(readString.indexOf("L=4") > 0) {//rele ON
digitalWrite(led7, HIGH);
LEDONn = true;
}
if(readString.indexOf("L=5") > 0) {//rele OFF
digitalWrite(led7, LOW);
LEDONn = false;
}
if(readString.indexOf("L=6") > 0) {//rele ON
digitalWrite(led6, HIGH);
LEDN = true;
}
if(readString.indexOf("L=7") > 0) {//rele OFF
digitalWrite(led6, LOW);
LEDN = false;
}
if(readString.indexOf("L=8") > 0) { //rele tutti OFF
delay(10);tone1.play(850,140);
digitalWrite(led6, LOW);
delay(250);
digitalWrite(led7, LOW);
delay(250);
digitalWrite(led8, LOW);
LEDN = false;
LEDONn = false;
LEDON = false;
}
if(readString.indexOf("L=9") > 0) { //accendi solo tv
irsend.sendRaw(Samsung,68,38);
digitalWrite(led3, LOW);
delay(1000);
irsend.sendNEC(0xA55A38C7,32);
irsend.sendNEC(0xA55A38C7,32);
digitalWrite(led3, LOW);
irsend.sendRaw(dream,70,38);
irsend.sendRaw(box,72,38);
}
if(readString.indexOf("L=10") > 0) {//accendi tv + ampli + cancello
digitalWrite(led9, HIGH);
delay(1000);
digitalWrite(led9, LOW);
irsend.sendRaw(dream,70,38);
irsend.sendRaw(box,72,38);
irsend.sendRaw(Samsung,68,38);
delay(1000);
irsend.sendNEC(0xA55A38C7,32);
irsend.sendNEC(0xA55A38C7,32);
}
// COSTRUZIONE PAGINA HTML
// inizializzo pagina (da togliere se uso ajax)
// COSTRUZIONE PAGINA HTML
// inizializzo pagina (da togliere se uso ajax)
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.println("<html>");
client.print("<head>");
client.print(" <title>FabryTerry Server Domotica</title> ");
client.println(" <meta name='viewport' content='width=device-width, user-scrollbar=no'>");
client.print("</head>");
client.println(" <body>"); //inizio pagina
client.println("<p>Temperatura ");
client.print(temperatureC);
client.println(" C</p>");
client.println("<hr >");
client.println("<h3>Apertura</h3>"); //apricancello
client.println(" <h3><a href='/?L=1'> APRI </a> </h3>");
client.println("<h3>Rele' n. 8</h3>");
client.println("<a href='/?L=2'>Accendi</a> | <a href='/?L=3'>Spegni</a></h2>"); //primo rele
if (LEDON) {
client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
}
else
{
client.println("<span style='color:grey; font-weight:bold;'>OFF</span></font>");
}
client.println("<hr >");
client.println("<h3>Rele' n. 7</h3>");
client.println("<a href='/?L=4'>Accendi</a> | <a href='/?L=5'>Spegni</a>");//secondo rele
if (LEDONn) {
client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
}
else
{
client.println("<span style='color:grey; font-weight:bold;'>OFF</span></font>");
}
client.println("<hr >");
client.println("<h3>Rele' n. 6</h2>");
client.println("<a href='/?L=6'>Accendi</a> | <a href='/?L=7'>Spegni</a>"); //terzo rele
if (LEDN) {
client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
}
else
{
client.println("<span style='color:grey; font-weight:bold;'>OFF</span></font>");
}
client.println("<hr >");
client.println("<a href='/?L=10'>Accendi + cancello</a> "); // apricancello piu televisione e ampli
client.println("<a href='/?L=9'>Accendi</a> ");//solo accendi tv
client.println("<h3>ALL OFF<h3><a href='/?L=8'>Spegni Tutto</a> "); //spegni tutti i rele
client.println(" </body>");
client.println("</html>");
readString="";
//fermo il client
client.stop();
}}}}}} :~