Problema sistema Domotica [arduino uno]

Ciao a tutti! E' da un pò di tempo che sto provando a realizzare un sistema di domotica a mio avviso semplice e molto efficace con accensione di qualche luce tramite relè e un'allarme che quando inserita, suona se rileva una porta/finestra aperta.. Insomma tutto questo controllato localmente tramite ethernet shield con pagina web. Per esempio se io nell'url scrivo "indirizzoipmioarduino../PIN1=ON" arduino rileva il PIN1=ON e ovviamente accende il PIN1, conoscete meglio di me questo sistema insomma (credo). ** Sono andato ad aggiungere uno schermo lcd 16*2 , ed ecco il problema, una volta montato e programmato, lui funziona (per esempio gli ho detto di stamparmi "allarme attivato" e l'indirizzo ip di arduino visto che ho il dhcp sul router)) ma, come dalla mia pagina web locale vado ad accendere un pin tramite l'url o così, non funziona :~ Ho notato stampando la stringa letta da arduino sul seriale che sono diverse da quando non c'era l'cd... Aiuti?! OVVIAMENTE l'lcd l ho messo sui pin 7,6,5,4,3,2 , in modo da non disturbare l'ethernet shield.. GRAZIE!!!!

Non so se usi una schedina SD; per quella viene usato il pin 4 Arduino non ha tanta memoria RAM. Se si usano tanti print senza la macro F() si esaurice velocemente la RAM e ci sono delle malfunzioni strane.

Dacci lo sketch.

Ciao Uwe

Ciao! Grazie della risposta. Non uso la scheda microSd quindi posso utilizzare il pin4 … Cosa è questa ‘macro F()’? Ecco lo sketch :

// AMEDEI ULTIMAte 13-06-2014 -- 14-06-2014
#include <String.h>
#include <SPI.h>
#include <Ethernet.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(7,6,5,4,3,2);



byte mac[] = {0x00,0x0D,0x88,0x2A,0x92,0xCA}; 
EthernetServer server(80);

int LC = 9;
int LS = 8; 
int finestraCucina=A0;
int statoAllarme=1;
int flagAllarme;
int flagPC;
int buzzer=8;
int sp=0;





void controllo(){
    flagPC=!digitalRead(finestraCucina);

flagAllarme= (flagPC && statoAllarme);
  if (flagAllarme==0){
         noTone(buzzer);
         }
         
          
           else if (flagAllarme==1){
           tone(buzzer,1500);
        
          }
          }
          


void schermo(){
  lcd.setCursor(0,1);
  if (statoAllarme != sp){
  if (statoAllarme==1){
  lcd.print("Allarme on");
  sp=1;

  }
  else if(statoAllarme==0){
  lcd.print("Allarme off");
  sp=0;

  }
  }
}  
          
          
          

String readString;
boolean LEDON = false; 
boolean LEDON2 = false; 


void setup(){


  Ethernet.begin(mac);
  pinMode(LC, OUTPUT);
  pinMode (LS, OUTPUT);
  pinMode (finestraCucina,INPUT);
  pinMode(buzzer,OUTPUT);
  Serial.begin(9600);
  Serial.println(Ethernet.localIP());
  lcd.begin(16,2);
  lcd.print(Ethernet.localIP());
  

}

void loop()
{

  /*inizio client*/
  EthernetClient client = server.available();
  if (client)
  {
    boolean currentLineIsBlank = true;
    while (client.connected())
    {
      if (client.available())
      {
        char c = client.read();
        readString.concat(c); //Inserisco carattere nella stringa
        
        if (c == '\n' && currentLineIsBlank)
        {
          Serial.print(readString);
          if(readString.indexOf("L1=1") > 0) 
          {
            // il led sarà acceso
            digitalWrite(LC, HIGH); // accendo il led
            LEDON = true;
            Serial.print("ON pin ");
            Serial.println(LC);
          }
          if(readString.indexOf("L1=0") > 0)
          {
            //il led sarà spento
            digitalWrite(LC, LOW); //sengo il led
            LEDON = false;
            Serial.print("OFF pin ");
            Serial.println(LC);
            Serial.print(readString);
          }  
          if(readString.indexOf("L2=1") > 0) 
          {
            // il led sarà acceso
            digitalWrite(LS, HIGH); // accendo il led
            LEDON2 = true;
            Serial.print("ON pin ");
            Serial.println(LS);
          }
          if(readString.indexOf("L2=0") > 0)
          {
            //il led sarà spento
            digitalWrite(LS, LOW); //sengo il led
            LEDON2 = false;
            Serial.print("OFF pin ");
            Serial.println(LS);
          }
          if(readString.indexOf("ALL=1") > 0)
          {
            statoAllarme=1;
            sp=0;
            Serial.println("Allarme attivato");
           }
            
           if(readString.indexOf("A=0") > 0)
         {
          statoAllarme=0;
          sp=1;
         Serial.println("Allarme disattivato");
           } 
         //html
          client.println("HTTP/1.1 200 OK.....");
          client.println("Content-Type: text/html");
          client.println();
          // inizializzo pagina (da togliere se uso ajax)
          client.print("<html><head><title>ARDUINO Controllo Led via WEB</title></head><body>");
          //inizai il body
          client.println("<div style='width:720px; height:1280px;'>"); //risoluzione

          client.println("<h1>CONTROLLO LUCI</h1>");
          client.println("<hr />");
          client.print("<h1>Stato luce n. ");
          client.print(LC);
          client.println("</h1>");
          client.println("
");
          //scrivo il LED status
          client.print("<font size='7'>PIN status: ");
          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.print("<h2><a href='/?L1=1'>ACCENDI</a> | <a href='/?L1=0'>SPEGNI</a></h2>");
          client.println("<hr />");
          client.print("<h1>PIN control n. ");
          client.print(LS);
          client.println("</h1>");
          client.println("
");
          //scrivo il LED status
          client.print("<font size='7'>PIN status: ");
          if (LEDON2)
          {
            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.print("<h2><a href='/?L2=1'>ACCENDI</a> | <a href='/?L2=0'>SPEGNI</a></h2>");
          client.println("<hr />");
          
           client.println("<h1>CONTROLLO FINESTRE</h1>");
          
          flagPC=!digitalRead(finestraCucina);
          
          if(flagPC==LOW){
         client.println("<span style='color:green; font-weight:bold;'>Finestra Cucina CHIUSA</span></font>");
         noTone(2);
         }
          
           else if(flagPC==HIGH){
          client.println("<span style='color:red; font-weight:bold;'>Finestra Cucina APERTA</span></font>");
          tone(2,2000);
          }
          
          client.println("<hr />");         
           if(statoAllarme==0){
           
           client.println("<span style='color:green; font-weight:bold;'>Stato allarme : DISATTIVATO</span></font>");
           client.println("<h2><a href='/?ALL=1'>ATTIVA</a></h2>");
           
           }
           
           else if(statoAllarme==1){
             
             client.println("<span style='color:green; font-weight:bold;'>Stato allarme : ATTIVO</span></font>");
             client.println("<h2><a href='/?A=0'>DISATTIVA</a></a></h2>");
             }
             
             
          
          
          
          
          client.print("<h4>Created by: <a href='alessandroAmedei' target='_blank' />alessandroAmedei</a></h4>");
          client.println("<hr />");
          
           client.print("<h2><a href='/?'>AGGIORNA</a></h2>");
          // chiudo il div
          client.println("</div>");
          // chiudo pagina da togliere se uso ajax
          client.println("</body></html>");
          // pulisco la stringa per la successiva lettura
          readString="";
          //fermo il client
          client.stop();
        } //if c == /n
      } // if client available
    } // while client connesso
  } // if client
  
  

controllo();  
schermo();

} // fine loop

//55330697
//55330697 Amedei Alessandro

Le funzioni schermo e controllo le richiamo infondo!