Blocco del software senza connessione client ad arduino.

Salve a tutti.
Mi rivolgo a voi, perchè da solo non riesco a trovare una soluzione.
Volevo creare con arduino un progetto che riesca a gestire il riscaldamento della casa.
Hardware usato: Arduino Mega 2560, scheda eth connessa al router, sonde temp. DTH11, e schede rele per le uscite delle valvole.
Ho scritto un programma che riesca a gestire impostazione temperatura di set, lettura, e manuale da una pagina html, connettendomi con il cellulare a 'ip di arduino.
Tutto sembra funzionare egregiamente fino a che resto connesso con un client a arduino, ma non appena disconetto il client, arduino si blocca e non gestisce più gli ingressi e uscite come dovrebbe. Riparte non appena accedo a l'ip di nuovo o, cosa strana se apro il monitor seriale.
Penso che ci sia sicuramente un errore nel programma, però non riesco a capire dove si impalla...
Vi prego aiutatemi perchè inizia a fare freddo......Vi allego il programma per chi ha 5 minuti da dargli un occhio. (Scusate se è scritto un pò male)
Grazie....

Casa_1.7.ino (33.7 KB)

Può essere un eccessivo uso della Ram
http://forum.arduino.cc/index.php?topic=299737.0

int t1set;
 int t2set;
 int t3set;
 int t4set;
 int t5set;
 int t6set;
 int t7set;
 int t8set;
 
 int t1setting = 16;
 int t2setting = 16;
 int t3setting = 16;
 int t4setting = 16;
 int t5setting = 16;
 int t6setting = 16;
 int t7setting = 16;
 int t8setting = 16;

se questi parametri non assumeranno valori interi oltre il 255 dichiarali come byte

byte t2set;
...
...
byte t1setting = 16;
...
...
...

cosa strana se apro il monitor seriale.

ogni volta che apri il monitor seriale, il micro si resetta, riavviando il programma, ecco perchè torna a funzionare.

Riparte non appena accedo a l'ip di nuovo

questa non l'ho capita, se si inchioda richiamando l'ip da browser dovrebbe darti "pagina non trovata"

essepi84:
Salve a tutti.

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento se non lo hai già fatto: Regolamento
Qui una serie di link utili, non inerenti al tuo problema:

Premetto che in fatto di programmazione sono una capra e ancora di più per quanto riguarda server e client, però credo che ci sia un errore in come è strutturato il codice. In pratica tutti i comandi dei relè, sono all'interno dell'if iniziale che viene eseguito solo se client è true (cioè con client attivo). Per questo appena un client si ricollega tutto torna a funzionare...

Buongiorno a tutti...
Grazie per l'interessamento...
Ieri sera ho fatto un po di test, seguendo le vostre osservazioni...

test 1:
Non è un problema di memoria, ho ridotto a l'osso il tutto, ma non cambia il risultato.

test 2:
Seguendo il consiglio di marinaio67, ho controllato il programma per la 1000' volta, e in effetti l'if della conessione del client contiene anche i comandi dei rele....azzz...non me ne ero mai accorto....adesso devo rivedere il tutto perchè ho provato a portare fuori da l'if i comandi, ma non funziona... qualcosa non torna....
rivedo il tutto e appena ho trovato la gabola vi faccio sapere...

Grazie mille....