Monitor Seriale

Salve,
sono nuovo del forum, vorrei chiedere aiuto.
Girando per internet e poi cimentandomi da solo, ho creato un codice per una centralina di controllo irriguo, gestibile tramite ethernet. Lo sketch funziona completamente, ma sono ad una condizione, che sia acceso il monitor seriale del Programma di Arduino(quello che serve per vedere i dati sulla seriale). Se io chiudo il monitor seriale il programma non gira piu. Se io collego un'alimentazione esterna idem.
Vorrei capire come mai. Posto sotto il codice.
Se qualcuno riesce a delucidarmi sarebbe Gentilissimo.
Premetto Uso Arduino Mega, con Ethernet Shield, con RTC DS1307.

quasi6.ino (16.1 KB)

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:

"collego alimentazione esterna..." quale, soprattutto a quanti ampere e su quale ingresso di Arduino.

l'alimentazione esterna, intendo un alimentatore da 12v, 1A alla classica presa di alimentazione esterna presente sulla shield di arduino. IL concetto piu che altro, è, che se il monitor seriale è chiuso l'arduino non fa girare lo scketc. vorrei capire un po meglio come mai!

Non saprei, a occhio non mi pare nel codice ci siano vincoli sulla seriale.

Certo che il codice non è il massimo. Molte cose che non si capiscono, esempio parentesi graffe inutili.
Oppure vettore per una frase tipo "Lunedi" e il vettore serve solo in una .println(), a che serve passare da un vettore ?
Esempi:

switch(test)
{ case 1:
  {  // parentesi inutile
  } // parentesi inutile
  break;
...

Oppure

istruzione ...;
{     // parentesi inutili
  if()
  {
  }
  else
  {
  }
}   // parentesi inutile
istruzione..;
char xx[]="Lunedi";
Serial.print("Il giorno è:");
Serial.println(xx);        
CHE SENSO HA ?  quando si può evitare il vettore ?!?
Serial.print("Il giorno è:");
Serial.print("Lunedi");

P.S. nel IDE usa CTRL+T che ti sistema l'indentazione.

Innanzi tutto grazie per i consigli, purtroppo non sono ancora ben franco sul codice, in quanto certe cose non le comprendo tipo le parentesi graffe. Ad esempio se tiro via quelle che dici te sul "case" dello switch non il compilatore mi da errore e non posso continuare. Praticamente le vuole.
Per quanto riguarda i vettori della seriale, li uso come debug del codice una volta caricato. Per capire cosa fa l'arduino mentre è in esecuzione. Una volta finito il codice gli elimino tutti, perchè non mi servono.
Cmq ho provato a fare il Ctrl+T, riorganizza tutta la formattazione giusto?
Ho riprovato ad usarlo su arduino ma sempre lo stesso problema se chiudo il pannello di monitor seriale il programma non gira piu. Non riesco a capire come mai...

Vedo di spiegare un po meglio cosa vorrei sullo sketch che magari qualcuno ha idee migliori... mi servirebbe che in modalità normale, senza accedere da browser, lo sketch continuasse a girare nella parte praticamente dell'"else" del prima condizione. l'ultimo else nello sketch. In maniera che cosi funzioni in modo automatico con l'orario impostato. nel momento in cui io accedo da internet, per un momento esce dal suddetto else, en entra nella prima parte del programma in cui ce la compilazione di tutta la pagina web e i pulsanti per usarla in manuale, per poter comandare l'uscita in maniera manuale. Questo sarebbe cio che vorrei. Non so se lo scketch sia corretto...

Ame90:
1.Ad esempio se tiro via quelle che dici te sul "case" dello switch non il compilatore mi da errore e non posso continuare. Praticamente le vuole.
2.Per quanto riguarda i vettori della seriale, li uso come debug del codice una volta caricato. Per capire cosa fa l'arduino mentre è in esecuzione. Una volta finito il codice gli elimino tutti, perchè non mi servono.
3.Cmq ho provato a fare il Ctrl+T, riorganizza tutta la formattazione giusto?

  1. probabilmente elimini quelle sbagliate. Ogni case di uno switch viene terminato da break; e NON richiede le graffe.
    Solo lo switch richiede le graffe che richiuduno tutti i case.
    http://www.cplusplus.com/doc/tutorial/control/
  2. io non dico che devi eliminare le frasi serial.print ma che è inutile come sono scritte.
    Quindi esempio questa pezzo:
case 1:
{
 char stringgg[] = "Lunedi";
      client.println("<hr/><p> Giorno ");
      client.println(stringgg);
      client.println("
</p>");
      Serial.println ("Lunedi"); 
 }
    break;

Hai le graffe che non servono a nulla e un vettore inutile:

case 1:
  client.println("<hr/><p> Giorno ");
  client.println("Lunedi");
  client.println("
</p>");
  Serial.println ("Lunedi"); 
  break;
  1. si, il CTRL+T fa solo indentazione

Che scheda ethernet usi, quella ufficiale ?
Lo sketch mi pare per il resto abbastanza giusto. Non vedo problemi rispetto alla seriale.
Ovviamente se qualcun'altro controlla il programma di @Ame90, magari mi sfugge qualcosa e NON abbiamo risolto.

La scheda ethernet non é l'originale, pero é compatibile con arduino mega, infatti funziona correttamente quando si accede alla pagina web. provo quest'oggi con la scheda originale. per vedere se cambia qualcosa.

Come da Buon elettronico, oggi ho voluto fare qualche prova aggiuntiva... quindi: ho sostituito la scheda ethernet con quella originale ed effettivamente miglioramenti ce ne sono stati. Seconda cosa, invece che l'alimentatore sopra citato ho montato un'alimentatore classico dei cellulari alla porta usb e funziona tutto correttamente!! Problema RISOLTO... solo questione di Alimentazioni. Grazie mille a tutti dell'aiuti.,...