CÓDIGO AUTOMAÇÃO APARTAMENTO USANDO ARDUINO

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <EEPROM.h>
#include <virtuabotixRTC.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
#include "EmonLib.h"
#include <avr/eeprom.h>
#include "DHT.h"
 #include "SIM900.h"
#include <SoftwareSerial.h>
//Carrega a biblioteca SMS
#include "sms.h"
#include "call.h"
CallGSM call;
SMSGSM sms;
boolean started = false;
char smsbuffer[160];
char n[20];
boolean estado = LOW;
char numero[20] = "031991555945";
char mensagem[30] = "Comando Feito";
char mensagemq1l[30] = "Lampada Quarto1 ligada";
char mensagemq1d[30] = "Lampada Quarto1 Desligada";
char mensagemq2l[30] = "Lampada Quarto2 ligada";
char mensagemq2d[30] = "Lampada Quarto2 Desligada";
char mensagembl[30] = "Lampada Banheiro ligada";
char mensagembd[30] = "Lampada Banheiro Desligada";
char mensagemsl[30] = "Lampada Sala ligada";
char mensagemsd[30] = "Lampada Sala Desligada";
char mensagemcl[30] = "Lampada Cozinha ligada";
char mensagemcd[30] = "Lampada Cozinha Desligada";
char mensagemal[30] = "Lampada Area ligada";
char mensagemad[30] = "Lampada Area Desligada";
String msg_esperadaativalig("Ativaliga");
String msg_esperadadesativalig("Desativaliga");
String msg_esperadaativasms("Ativasms");
String msg_esperadadesativasms("Desativasms");
String msg_esperadaq1l("Quarto1 liga");
String msg_esperadaq1d("Quarto1 desliga");
String msg_esperadaq2l("Quarto2 liga");
String msg_esperadaq2d("Quarto2 desliga");
String msg_esperadabl("Banheiro liga");
String msg_esperadabd("Banheiro desliga");
String msg_esperadasll("Sala liga");
String msg_esperadasld("Sala desliga");
String msg_esperadacl("Cozinha liga");
String msg_esperadacd("Cozinha desliga");
String msg_esperadaal("Area liga");
String msg_esperadaad("Area desliga");
String msg_esperadatemp("T");


#define DHTPIN A4 // pino que estamos conectado
#define DHTTYPE DHT11 // DHT 11

DHT dht(DHTPIN, DHTTYPE);
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();

#define eeprom_read_to(dst_p, eeprom_field, dst_size) eeprom_read_block(dst_p, (void *)offsetof(__eeprom_data, eeprom_field), MIN(dst_size, sizeof((__eeprom_data*)0)->eeprom_field))
#define eeprom_read(dst, eeprom_field) eeprom_read_to(&dst, eeprom_field, sizeof(dst))
#define eeprom_write_from(src_p, eeprom_field, src_size) eeprom_write_block(src_p, (void *)offsetof(__eeprom_data, eeprom_field), MIN(src_size, sizeof((__eeprom_data*)0)->eeprom_field))
#define eeprom_write(src, eeprom_field) { typeof(src) x = src; eeprom_write_from(&x, eeprom_field, sizeof(x)); }
#define MIN(x,y) ( x > y ? y : x )

EnergyMonitor emon1;  
virtuabotixRTC myRTC(A8, A9, A10);


#define pinSensor 4
struct __eeprom_data {
double flash_kwhtotal;};
LiquidCrystal_I2C lcd(0x27,20,4);   //Define endereço e número de colunas e linhas do LCD


#define ventplc 32 // ventilador PLC

#define blq2 22  // botão lamp. quarto 2
#define lq2  23  // lampada do quarto 2
#define lb2  24  // lampada do botão quarto 2

#define blq3 25  // botão lamp. quarto3
#define lq3  26  // lampada do quarto 3
#define lb3  27  // lampada quarto 3

#define blsl 28  // botão lamp. sala
#define lsl  29  // lampada da sala
#define lbsl 30  // lampada botão da sala

#define blb  31   // botão lamp. banheiro
#define lb   32   // lampada botão banheiro
#define lbb  33   // lampada banheiro

#define blc  34   // botão lamp. cozinha
#define lc   35   // lampada botão cozinha
#define lbc  36   // lampada cozinha

#define bla  37   // botão lamp. área
#define la   38   // lampada botão área
#define lba  39   // lampada área

#define bma  40   // botão menu avança
#define bmv  41   // botão menu volta
#define bme  42   // botao menu enter
int value =-1;


int pinoSensorquarto2 = 0;
byte valorLidoquarto2 = 0;
float temperaturaquarto2 = 0;
unsigned  int contquarto2 = 0;
unsigned int automaticoquarto2 = 0;
unsigned int automaticoquarto3 = 0;
unsigned int automaticosala = 0;
int segq2 =0;
 String estadolquarto2  = " Desligada";
 String estadoquarto2   = " MANUAL "  ;

 String estadolquarto3  = " Desligada";
 String estadoquarto3   = " MANUAL "  ;

 String estadolsala     = " Desligada";
 String estadosala      = " MANUAL "  ;

 String estadolbanheiro = " Desligada";
 String estadosbanheiro = " MANUAL "  ;

 String estadolcozinha  = " Desligada";
 String estadocozinha   = " MANUAL "  ;

 String estadolarea    = " Desligada";
 String estadoarea     = " MANUAL "  ;

int q2tdesejado = 10;
String estadotquarto2 ;
int sensorq2 = 2;
int val = 0;
int outputValue;

int pulsobotao = 0; // variavel quarto casal
int pulsobotao1 = 0;// variavel quarto solteiro
int pulsobotao2 = 0;// variavel sala
int pulsobotao3 = 0;// variavel banheiro
int pulsobotao4 = 0;// variavel cozinha
int pulsobotao5 = 0;// variavel area

int segq2at =0;

int escq2 = 0 ;// variavel quarto casal
int escq3 = 0 ;// variavel quarto solteiro
int escq4 = 0 ;// variavel sala
int escq5 = 0 ;// variavel banheiro
int escq6 = 0 ;// variavel cozinha
int escq7 = 0 ;// variavel area
int acertohora = 0 ; // habilita acerto  horas

int segq2p;
String estadocooler = "Desligado em Manual";
int analogPin = 5;
int valAnalog;
int temperatura;

int trava = 0 ;// variavel quarto casal
int trava1 =0; // variavel quarto solteiro
int trava2 =0; // variavel sala
int trava3 =0; // variavel banheiro
int trava4 =0; // variavel cozinha
int trava5 =0; // variavel area
int travama =0;
int travamr =0;
int travame =0;
int trava10; //  trava do controle
int trava11; //  trava do controle
int trava12; //  trava do controle
int trava13; //  trava do controle
int trava14; //  trava do controle
int trava15; //  trava do controle
int acertohoras = 0 ;                        // em "0"desativa o acerto de horas
int xseg = 0;     // variavel guarda o valor que irá igualar com acerto de horas
int xmin = 0;     // variavel guarda o valor que irá igualar com acerto de horas
int xhor = 0;     // variavel guarda o valor que irá igualar com acerto de horas
int xsemana = 0;  // variavel guarda o valor que irá igualar com acerto de horas
int xdia = 0;     // variavel guarda o valor que irá igualar com acerto de horas
int xmes = 0;     // variavel guarda o valor que irá igualar com acerto de horas
int xano = 2016 ; // variavel guarda o valor que irá igualar com acerto de horas
int menu40 = 0;   // variavel guarda o valor que irá igualar com acerto de horas
int menu = 0;     // variavel guarda o valor que irá igualar com acerto de horas

int hlld = 17 ;
int mlld = 0  ;
int hdld = 7  ;
int mdld = 0  ;
int ajustaled = 0; // variável para entra no menu ajustar led
String estadom = "Desligar";
String Rede = "OnLine";

int hlqc = 0;
int mlqc = 0;
int hdqc = 0;
int mdqc = 0;
int onqc = 0;
String onoffqc ="OFF" ;

int hlqs = 0;
int mlqs = 0;
int hdqs = 0;
int mdqs = 0;
int onqs = 0;
String onoffqs ="OFF" ;

int hlb = 00;
int mlb = 00;
int hdb = 00;
int mdb = 00;
int onb = 0;
String onoffb ="OFF" ;

int hlcz = 00;
int mlcz = 00;
int hdcz = 00;
int mdcz = 00;
int oncz = 0;
String onoffcz ="OFF" ;

int hlsl= 00;
int mlsl = 00;
int hdsl = 00;
int mdsl = 00;
int onsl = 0;
String onoffsl ="OFF" ;

int hla = 00;
int mla = 00;
int hda = 00;
int mda = 00;
int ona = 0;
String onoffa ="OFF" ;
String Ajuste ="Ajustar" ;
int menuenter = 0;
int menu91 =0;
int menu92= 0;
int menu93= 0;
int menu94= 0;
int menu95= 0;

int menu101 =0;
int menu102= 0;
int menu103= 0;
int menu104= 0;
int menu105= 0;

int menu111 =0;
int menu112= 0;
int menu113= 0;
int menu114= 0;
int menu115= 0;

int menu121 =0;
int menu122= 0;
int menu123= 0;
int menu124= 0;
int menu125= 0;

int menu131 =0;
int menu132= 0;
int menu133= 0;
int menu134= 0;
int menu135= 0;

int menu141 =0;
int menu142= 0;
int menu143= 0;
int menu144= 0;
int menu145= 0;
int ativalig=0;
int ativasms=1;
//Tensao da rede eletrica
int rede = 110.0;

//Pino do sensor SCT
int pino_sct = A1;
// Ativa led time
int ledtime = 0;
int ledtimea = 1; // define led time irá acender ou não pelo relógio


//Cria variaveis globais
double kwhTotal;
double kwhTotal_Acc;
double vlreais;
double vlreais_Acc;
double realPower;
double pot;
unsigned long ltmillis, tmillis, timems, previousMillis, refresh;
char charBuf[30];


void setup() {

  Serial.begin(9600);      // habilita a leitura serial
//myRTC.setDS1302Time(00, 16, 15, 7, 02, 04, 2016);
emon1.current(pino_sct, 12); //Pino, calibracao - Cur Const= Ratio/BurdenR. 1800/62 = 29.
eeprom_read(kwhTotal, flash_kwhtotal);
previousMillis = millis();
mySwitch.enableReceive(0);

  //Inicializa a serial


  Serial.print("Ligando shield GSM SIM900. ");
  //liga_desliga_GSMShield();
  //Comunicacao com o Shield GSM a 2400 bauds
  /*
  if (gsm.begin(2400))
  {
    Serial.println("nstatus=READY");
    started = true;
  }
  else Serial.println("nstatus=IDLE");

*/

  pinMode(ventplc,OUTPUT); // saida do cooleer

  pinMode(lb2, OUTPUT);    // lampada botão quarto casal
  pinMode(lq2, OUTPUT);    // lampada  quarto casal
  pinMode(blq2,INPUT);     // botão quarto casal

  pinMode(lb3, OUTPUT);    // lampada botão quarto solteiro
  pinMode(lq3, OUTPUT);    // lampada quarto solteiro
  pinMode(blq3,INPUT);     // botão quarto solteito

  pinMode(lbsl, OUTPUT);   // lampada botão sala
  pinMode(lsl,  OUTPUT);   // lampada  sala
  pinMode(blsl, INPUT) ;   // botão   sala

  pinMode(lbb,OUTPUT);     // lampada botão banheiro
  pinMode(lb, OUTPUT);     // lampada  banheiro
  pinMode(blb,INPUT) ;     // botão   banheiro

  pinMode(lbc, OUTPUT);     // lampada botão cozinha
  pinMode(lc, OUTPUT);      // lampada  cozinha
  pinMode(blc, INPUT);      // botão   cozinha

  pinMode(lba, OUTPUT);     // lampada botão area
  pinMode(la, OUTPUT);      // lampada  area
  pinMode(bla, INPUT);      // botão   area

  pinMode(bma, INPUT);     // botão menu AVANÇA
  pinMode(bmv, INPUT);      // botão menu VOLTA
  pinMode(bme, INPUT);      // botão menu ENTER



  dht.begin();

  digitalWrite(blq2,1); // define entrada botão lâmpada do quarto casal senpre em 0
  digitalWrite(blq3,1); // define entrada botão lâmpada do quarto solteiro senpre em 0
  digitalWrite(blsl,1); // define entrada botão lâmpada da sala senpre em 0
  digitalWrite(blb,1); // define entrada botão lâmpada do banheiro senpre em 0
  digitalWrite(blc,1); // define entrada botão lâmpada da cozinha senpre em 0
  digitalWrite(bla,1); // define entrada botão lâmpada da area senpre em 0
  digitalWrite(bma,1); // define entrada botão lâmpada do banheiro senpre em 0
  digitalWrite(bmv,1); // define entrada botão lâmpada da cozinha senpre em 0
  digitalWrite(bme,1); // define entrada botão lâmpada da area senpre em 0
  digitalWrite(bma,1); // define entrada botão lâmpada do banheiro senpre em 0
  digitalWrite(bmv,1); // define entrada botão lâmpada da cozinha senpre em 0
  digitalWrite(bme,1); // define entrada botão lâmpada da area senpre em 0
// inicio gsm



  lcd.init();                  
  lcd.init();
  // Print a message to the LCD.
  lcd.backlight();
  lcd.setCursor(3,0);
  lcd.print("Projeto ");
  lcd.setCursor(0,1);
  lcd.print("Automacao Residencial ");
  delay(1000);
  lcd.clear();

   eeprom_read(kwhTotal, flash_kwhtotal);
  previousMillis = millis();

}  // end setup()

void loop()

{

quarto2();    // rotina quarto casal.
quarto3();    // rotina quarto solteiro.
sala1();    // rotina sala.
banheiro();    // rotina banheiro.
cozinha();    // rotina cozinha.
area();    // rotina sala.
relogio();    // relogio da CPU
ajustehora(); // ajustar horas
botaomenu() ; // logica botão menu
atualisaestado(); // atualisa estado do menu
automatico();
timeled() ;   // rotina do led dos interruptores desligarem no horario selecionado

  float h = dht.readHumidity();
  float  t = dht.readTemperature();


// =====================================================================================================
//início gsm Código
/*

if (started)
  {
 
    //Aguarda SMS
 
    if (gsm.readSMS(smsbuffer, 160, n, 20))
    {
      String msg_recebida(smsbuffer);
 msg_recebida.trim();
 msg_esperadaativalig.trim();
 msg_esperadadesativalig.trim();
 msg_esperadaativasms.trim();
 msg_esperadadesativasms.trim();
 msg_esperadaq1l.trim();
 msg_esperadaq1d.trim();
 msg_esperadaq2l.trim();
 msg_esperadaq2d.trim();
 msg_esperadabl.trim();
 msg_esperadabd.trim();
 msg_esperadasll.trim();
 msg_esperadasld.trim();
 msg_esperadacl.trim();
 msg_esperadacd.trim();
 msg_esperadaal.trim();
 msg_esperadaad.trim();

   
// inico quarto 1

if (msg_recebida ==  msg_esperadatemp)
      {
char mensagemtemp[22] = "ss";    

 
    sms.SendSMS(numero,mensagemtemp);
      }



      if (msg_recebida ==  msg_esperadaativalig)
      {
      ativalig = 1 ;
      sms.SendSMS(numero, mensagem);
      }
    if (msg_recebida ==  msg_esperadadesativalig)
      {
       ativalig =0 ;
       sms.SendSMS(numero, mensagem);
      }
      if (msg_recebida ==  msg_esperadaativasms)
      {
       ativasms =1 ;
       sms.SendSMS(numero, mensagem);
      }
       if (msg_recebida ==  msg_esperadadesativasms)
      {
       ativasms =0 ;
       sms.SendSMS(numero, mensagem);
      }
      // inicio q1
      if (msg_recebida ==  msg_esperadaq1l)
      {
       digitalWrite(lq2,1);
        if( ativalig == 1){
        call.Call("031991555945");
        delay(10000);
        call.HangUp();
        }
        if( ativasms == 1){
    sms.SendSMS(numero, mensagemq1l);
              }
      }
       if (msg_recebida ==  msg_esperadaq1d)
      {
       digitalWrite(lq2,0);
        if( ativalig == 1){
        call.Call("031991555945");
        delay(10000);
        call.HangUp();
        }
        if( ativasms == 1){
    sms.SendSMS(numero, mensagemq1d);
              }
      }

      // fim quarto1
      //inicio qurto2

      if (msg_recebida == msg_esperadaq2l)
      {
      digitalWrite(lq3,1);
     
        // ligação ou sms
        if( ativalig == 1){
        call.Call("031991555945");
        delay(10000);
        call.HangUp();
        }
        if( ativasms == 1){
     sms.SendSMS(numero,  mensagemq2l);

     
      }
      }
      if (msg_recebida ==  msg_esperadaq2d)
      {
       digitalWrite(lq3,0);
       // ligação ou sms
        if( ativalig == 1){
        call.Call("031991555945");
        delay(10000);
        call.HangUp();
        }
        if( ativasms == 1){
    sms.SendSMS(numero, mensagemq2d);
              }
      }
// fim quarto2
   //inicio banheiro

      if (msg_recebida ==  msg_esperadabl)
      {
      digitalWrite(lb,1);
     
        // ligação ou sms
        if( ativalig == 1){
        call.Call("031991555945");
        delay(10000);
        call.HangUp();
        }
        if( ativasms == 1){
     sms.SendSMS(numero, mensagembl);

     
      }
      }
      if (msg_recebida ==  msg_esperadabd)
      {
         digitalWrite(lb,0);
       // ligação ou sms
        if( ativalig == 1){
        call.Call("031991555945");
        delay(10000);
        call.HangUp();
        }
        if( ativasms == 1){
    sms.SendSMS(numero, mensagembd);
              }
      }
// fim banheiro
  //inicio sala

      if (msg_recebida == msg_esperadasll)
      {
       digitalWrite(lsl,1);
     
        // ligação ou sms
        if( ativalig == 1){
        call.Call("031991555945");
        delay(10000);
        call.HangUp();
        }
        if( ativasms == 1){
     sms.SendSMS(numero, mensagemsl);

     
      }
      }
      if (msg_recebida == msg_esperadasld)
      {
        digitalWrite(lsl,0);
       // ligação ou sms
        if( ativalig == 1){
        call.Call("031991555945");
        delay(10000);
        call.HangUp();
        }
        if( ativasms == 1){
    sms.SendSMS(numero, mensagemsd);
              }
      }
// fim sala
  //inicio cozinha

      if (msg_recebida == msg_esperadacl)
      {
      digitalWrite(lc,1);
     
        // ligação ou sms
        if( ativalig == 1){
        call.Call("031991555945");
        delay(10000);
        call.HangUp();
        }
        if( ativasms == 1){
     sms.SendSMS(numero, mensagemcl);

     
      }
      }
      if (msg_recebida ==  msg_esperadacd)
      {
         digitalWrite(lc,0);
       // ligação ou sms
        if( ativalig == 1){
        call.Call("031991555945");
        delay(10000);
        call.HangUp();
        }
        if( ativasms == 1){
    sms.SendSMS(numero, mensagemcd);
              }
      }
// fim cozinha
  //inicio area

      if (msg_recebida == msg_esperadaal)
      {
       digitalWrite(la,1);
     
        // ligação ou sms
        if( ativalig == 1){
        call.Call("031991555945");
        delay(10000);
        call.HangUp();
        }
        if( ativasms == 1){
     sms.SendSMS(numero, mensagemal);

     
      }
      }
      if (msg_recebida ==msg_esperadaad)
      {
        digitalWrite(la,0);
       // ligação ou sms
        if( ativalig == 1){
        call.Call("031991555945");
        delay(10000);
        call.HangUp();
        }
        if( ativasms == 1){
    sms.SendSMS(numero, mensagemad);
              }
      }
// fim area


   
    }                                                    
  }





//fim gsm Código
// =====================================================================================================

*/









// inicia calculo potencia




// Calcula quantidade de tempo desde a última measurment realpower.
ltmillis = tmillis;
tmillis = millis();
timems = tmillis - ltmillis;
double Irms = emon1.calcIrms(1480); // Calculate Irms

// Calcular o número de hoje de kWh consumido.
kwhTotal = (((Irms*127.0)/1000.0) * 1.0/3600.0 * (timems/1000.0));
kwhTotal_Acc = kwhTotal_Acc + kwhTotal;
vlreais = kwhTotal * 0.87012117;
vlreais_Acc = vlreais_Acc + vlreais;

//grava na memoria a cada 1 minuto
if ((millis() - refresh)>= 100)
refresh = millis(); //actualiza a contagem.
{
//Serial.println("Gravando na EEprom");
eeprom_write(kwhTotal, flash_kwhtotal);
previousMillis=millis();
}


if ( menu == 0)
{
acertohoras = 0;

   myRTC.updateTime();
 
imprime_dia_da_semana(myRTC.dayofweek);

 lcd.setCursor(0,1);
  lcd.print("Data :");
  // Chama a rotina que imprime o dia da semana
 lcd.print(" ");
  lcd.print(myRTC.dayofmonth);
  lcd.print("/");
  lcd.print(myRTC.month);
  lcd.print("/");
lcd.print(myRTC.year);
   lcd.setCursor(0,2);
  lcd.print("Hora :");
  // Adiciona um 0 caso o valor da hora seja <10
  if (myRTC.hours < 10)
  {
    lcd.print("0");
  }
  lcd.print(myRTC.hours);
  lcd.print(":");
  // Adiciona um 0 caso o valor dos minutos seja <10
  if (myRTC.minutes < 10)
  {
    lcd.print("0");
  }
  lcd.print(myRTC.minutes);
 lcd.print(":");
  // Adiciona um 0 caso o valor dos segundos seja <10
  if (myRTC.seconds < 10)
  {
    lcd.print("0");
  }
  lcd.println(myRTC.seconds);
lcd.setCursor(0,3);
lcd.print("T: ");
lcd.print(t);
lcd.print("*C");
lcd.print("H: ");
lcd.print(h);
lcd.print("%");
}




if ( menu == 1)
{
lcd.setCursor(12,1);
lcd.print("        ");
lcd.setCursor(12,2);
lcd.print("        ");
lcd.setCursor(12,3);
lcd.print("        ");



lcd.setCursor(0,0);
lcd.print("Gerencia de Energia");
lcd.setCursor(0,1);
lcd.print("Potencia(W) ");
lcd.print(Irms * rede);

lcd.setCursor(0,2);
lcd.print("Corrente(A) ");
lcd.print(Irms);

lcd.setCursor(0,3);
lcd.print("Consumo R$  ");
lcd.print(vlreais_Acc,3);

}

if ( menu == 2)
{
lcd.setCursor(0,0);
lcd.print("Quarto Casal");
lcd.setCursor(0,1);
lcd.print("Lampada");
lcd.setCursor(7,1);
lcd.print(estadolquarto2);
lcd.setCursor(0,3);
lcd.print("<<    >>");
lcd.setCursor(11,3);
 lcd.print(estadom);
}

if ( menu == 3)
{
lcd.setCursor(0,0);
lcd.print("Quarto Solteiro");
lcd.setCursor(0,1);
lcd.print("Lampada");
lcd.setCursor(7,1);
lcd.print(estadolquarto3);
lcd.setCursor(0,3);
lcd.print("<<    >>");
lcd.setCursor(11,3);
 lcd.print(estadom);

}

if ( menu == 4)
{

 lcd.setCursor(0,0);
lcd.print("Sala de Estar");
lcd.setCursor(0,1);
lcd.print("Lampada");
lcd.setCursor(7,1);
lcd.print(estadolsala);
lcd.setCursor(0,3);
lcd.print("<<    >>");
lcd.setCursor(11,3);
 lcd.print(estadom);
}


if ( menu == 5)
{
lcd.setCursor(0,0);
lcd.print("Cozinha");
lcd.setCursor(0,1);
lcd.print("Lampada");
lcd.setCursor(7,1);
lcd.print(estadolcozinha);
lcd.setCursor(0,3);
lcd.print("<<    >>");
lcd.setCursor(11,3);
 lcd.print(estadom);
}

if ( menu == 6)
{
lcd.setCursor(0,0);
lcd.print("Banheiro");
lcd.setCursor(0,1);
lcd.print("Lampada");
lcd.setCursor(7,1);
lcd.print(estadolbanheiro);
lcd.setCursor(0,3);
lcd.print("<<    >>");
lcd.setCursor(11,3);
 lcd.print(estadom);

}
if ( menu == 7)
{
lcd.setCursor(0,0);
lcd.print("Area Servico");
lcd.setCursor(0,1);
lcd.print("Lampada");
lcd.setCursor(7,1);
lcd.print(estadolarea);
lcd.setCursor(0,3);
lcd.print("<<    >>");
lcd.setCursor(11,3);
 lcd.print(estadom);

}

if ( menu == 8)
{
lcd.setCursor(0,0);
lcd.print("Ajustar Horas?");
lcd.setCursor(0,2);
lcd.print("Pressione ENTER");
lcd.setCursor(0,3);
lcd.print("<<    >>");
lcd.setCursor(14,3);
 lcd.print("ENTER");



}

if ( menu == 9)
{
lcd.setCursor(0,0);
lcd.print("Lig / Deslig Autom");
lcd.setCursor(0,1);
lcd.print(" Quarto de Casal");
lcd.setCursor(0,2);
lcd.print("Lig:");
  if (hlqc< 10)
  {
    lcd.print("0");
  }
lcd.print(hlqc);
lcd.print(":");
  if (mlqc< 10)
  {
    lcd.print("0");
  }
lcd.print(mlqc);
lcd.setCursor(9,2);
lcd.print("Desl:");
  if (hdqc< 10)
  {
    lcd.print("0");
  }
lcd.print(hdqc);
lcd.print(":");
  if (mdqc< 10)
  {
    lcd.print("0");
  }
lcd.print(mdqc);

lcd.setCursor(0,3);
lcd.print("<<");
lcd.print(onoffqc);
lcd.print(">>");
lcd.setCursor(13,3);
lcd.print(Ajuste);



}


if ( menu == 10)
{
lcd.setCursor(0,0);
lcd.print("Lig / Deslig Autom");
lcd.setCursor(0,1);
lcd.print(" Quarto de Solteiro");
lcd.setCursor(0,2);
lcd.print("Lig:");
  if (hlqs< 10)
  {
    lcd.print("0");
  }
lcd.print(hlqs);
lcd.print(":");
  if (mlqs< 10)
  {
    lcd.print("0");
  }
lcd.print(mlqs);
lcd.setCursor(9,2);
lcd.print("Desl:");
  if (hdqs< 10)
  {
    lcd.print("0");
  }
lcd.print(hdqs);
lcd.print(":");
  if (mdqs< 10)
  {
    lcd.print("0");
  }
lcd.print(mdqs);

lcd.setCursor(0,3);
lcd.print("<<");
lcd.print(onoffqs);
lcd.print(">>");
lcd.setCursor(13,3);
lcd.print(Ajuste);



}


if ( menu == 11)
{
lcd.setCursor(0,0);
lcd.print("Lig / Deslig Autom");
lcd.setCursor(0,1);
lcd.print(" Banheiro");
lcd.setCursor(0,2);
lcd.print("Lig:");
  if (hlb< 10)
  {
    lcd.print("0");
  }
lcd.print(hlb);
lcd.print(":");
  if (mlb< 10)
  {
    lcd.print("0");
  }
lcd.print(mlb);
lcd.setCursor(9,2);
lcd.print("Desl:");
  if (hdb< 10)
  {
    lcd.print("0");
  }
lcd.print(hdb);
lcd.print(":");
  if (mdb< 10)
  {
    lcd.print("0");
  }
lcd.print(mdb);

lcd.setCursor(0,3);
lcd.print("<<");
lcd.print(onoffb);
lcd.print(">>");
lcd.setCursor(13,3);
lcd.print(Ajuste);



}


if ( menu ==12)
{
lcd.setCursor(0,0);
lcd.print("Lig / Deslig Autom");
lcd.setCursor(0,1);
lcd.print("Sala de Estar");
lcd.setCursor(0,2);
lcd.print("Lig:");
  if (hlsl< 10)
  {
    lcd.print("0");
  }
lcd.print(hlsl);
lcd.print(":");
  if (mlsl< 10)
  {
    lcd.print("0");
  }
lcd.print(mlsl);
lcd.setCursor(9,2);
lcd.print("Desl:");
  if (hdsl< 10)
  {
    lcd.print("0");
  }
lcd.print(hdsl);
lcd.print(":");
  if (mdsl< 10)
  {
    lcd.print("0");
  }
lcd.print(mdsl);

lcd.setCursor(0,3);
lcd.print("<<");
lcd.print(onoffsl);
lcd.print(">>");
lcd.setCursor(13,3);
lcd.print(Ajuste);



}



if ( menu == 13)
{
lcd.setCursor(0,0);
lcd.print("Lig / Deslig Autom");
lcd.setCursor(0,1);
lcd.print("Cozinha");
lcd.setCursor(0,2);
lcd.print("Lig:");
  if (hlcz< 10)
  {
    lcd.print("0");
  }
lcd.print(hlcz);
lcd.print(":");
  if (mlqc< 10)
  {
    lcd.print("0");
  }
lcd.print(mlcz);
lcd.setCursor(9,2);
lcd.print("Desl:");
  if (hdcz< 10)
  {
    lcd.print("0");
  }
lcd.print(hdcz);
lcd.print(":");
  if (mdcz< 10)
  {
    lcd.print("0");
  }
lcd.print(mdcz);
lcd.setCursor(0,3);
lcd.print("<<");
lcd.print(onoffcz);
lcd.print(">>");
lcd.setCursor(13,3);
lcd.print(Ajuste);
}


if ( menu == 14)
{
lcd.setCursor(0,0);
lcd.print("Lig / Deslig Autom");
lcd.setCursor(0,1);
lcd.print("Area de Servico");
lcd.setCursor(0,2);
lcd.print("Lig:");
  if (hla< 10)
  {
    lcd.print("0");
  }
lcd.print(hla);
lcd.print(":");
  if (mla< 10)
  {
    lcd.print("0");
  }
lcd.print(mla);
lcd.setCursor(9,2);
lcd.print("Desl:");
  if (hda< 10)
  {
    lcd.print("0");
  }
lcd.print(hda);
lcd.print(":");
  if (mda< 10)
  {
    lcd.print("0");
  }
lcd.print(mda);

lcd.setCursor(0,3);
lcd.print("<<");
lcd.print(onoffa);
lcd.print(">>");
lcd.setCursor(13,3);
lcd.print(Ajuste);



}



if ( menu == 15)
{
lcd.setCursor(0,0);
lcd.print("Horas de Desligar LED");
lcd.setCursor(0,1);
lcd.print("HORA LIGAR:");
lcd.setCursor(12,1);
lcd.print(hlld);
lcd.setCursor(0,2);
lcd.print("HORA DESL.:");
lcd.setCursor(12,2);
lcd.print(hdld);
lcd.setCursor(0,3);
lcd.setCursor(0,3);
lcd.print("<<    ");
lcd.setCursor(14,3);
 lcd.print("ENTER");



}


if ( menu == 40) // pisca semana
{
  lcd.clear();
lcd.setCursor(0,0);
lcd.print("Semana: ");
lcd.print(xsemana);
lcd.setCursor(0,1);
lcd.print("Horas: ");
  if (xhor< 10)
  {
    lcd.print("0");
  }

lcd.print(xhor);
lcd.print(":");
if (xmin< 10)
  {
    lcd.print("0");
  }
lcd.print(xmin);
lcd.setCursor(0,2);
lcd.print("Data:");
if (xdia< 10)
  {
    lcd.print("0");
  }
lcd.print(xdia);
lcd.print("/");
if (xmes< 10)
  {
    lcd.print("0");
  }
lcd.print(xmes);
lcd.print("/");
if (xano< 10)
  {
    lcd.print("0");
  }
lcd.print(xano);
lcd.setCursor(0,3);
lcd.print("Semana selecionado");

}

if ( menu == 41) // pisca hora
{
  lcd.clear();
lcd.setCursor(0,0);
lcd.print("Semana: ");
lcd.print(xsemana);
lcd.setCursor(0,1);
lcd.print("Horas: ");
  if (xhor< 10)
  {
    lcd.print("0");
  }

lcd.print(xhor);
lcd.print(":");
if (xmin< 10)
  {
    lcd.print("0");
  }
lcd.print(xmin);
lcd.setCursor(0,2);
lcd.print("Data:");
if (xdia< 10)
  {
    lcd.print("0");
  }
lcd.print(xdia);
lcd.print("/");
if (xmes< 10)
  {
    lcd.print("0");
  }
lcd.print(xmes);
lcd.print("/");
if (xano< 10)
  {
    lcd.print("0");
  }
lcd.print(xano);
lcd.setCursor(0,3);
lcd.print("Hora selecionado");
}

if ( menu == 42) // pisca minuto
{
  lcd.clear();
lcd.setCursor(0,0);
lcd.print("Semana: ");
lcd.print(xsemana);
lcd.setCursor(0,1);
lcd.print("Horas: ");
  if (xhor< 10)
  {
    lcd.print("0");
  }

lcd.print(xhor);
lcd.print(":");
if (xmin< 10)
  {
    lcd.print("0");
  }
lcd.print(xmin);
lcd.setCursor(0,2);
lcd.print("Data:");
if (xdia< 10)
  {
    lcd.print("0");
  }
lcd.print(xdia);
lcd.print("/");
if (xmes< 10)
  {
    lcd.print("0");
  }
lcd.print(xmes);
lcd.print("/");
if (xano< 10)
  {
    lcd.print("0");
  }
lcd.print(xano);
lcd.setCursor(0,3);
lcd.print("Minuto selecionado");

}

if ( menu == 43) // pisca dia
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Semana: ");
lcd.print(xsemana);
lcd.setCursor(0,1);
lcd.print("Horas: ");
  if (xhor< 10)
  {
    lcd.print("0");
  }

lcd.print(xhor);
lcd.print(":");
if (xmin< 10)
  {
    lcd.print("0");
  }
lcd.print(xmin);
lcd.setCursor(0,2);
lcd.print("Data:");
if (xdia< 10)
  {
    lcd.print("0");
  }
lcd.print(xdia);
lcd.print("/");
if (xmes< 10)
  {
    lcd.print("0");
  }
lcd.print(xmes);
lcd.print("/");
if (xano< 10)
  {
    lcd.print("0");
  }
lcd.print(xano);
lcd.setCursor(0,3);
lcd.print("Dia selecionado");

}

if ( menu == 44) // pisca mês
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Semana: ");
lcd.print(xsemana);
lcd.setCursor(0,1);
lcd.print("Horas: ");
  if (xhor< 10)
  {
    lcd.print("0");
  }

lcd.print(xhor);
lcd.print(":");
if (xmin< 10)
  {
    lcd.print("0");
  }
lcd.print(xmin);
lcd.setCursor(0,2);
lcd.print("Data:");
if (xdia< 10)
  {
    lcd.print("0");
  }
lcd.print(xdia);
lcd.print("/");
if (xmes< 10)
  {
    lcd.print("0");
  }
lcd.print(xmes);
lcd.print("/");
if (xano< 10)
  {
    lcd.print("0");
  }
lcd.print(xano);
lcd.setCursor(0,3);
lcd.print("Mes selecionado");

}

if ( menu == 45) // pisca ano
{
 lcd.clear();
lcd.setCursor(0,0);
lcd.print("Semana: ");
lcd.print(xsemana);
lcd.setCursor(0,1);
lcd.print("Horas: ");
  if (xhor< 10)
  {
    lcd.print("0");
  }

lcd.print(xhor);
lcd.print(":");
if (xmin< 10)
  {
    lcd.print("0");
  }
lcd.print(xmin);
lcd.setCursor(0,2);
lcd.print("Data:");
if (xdia< 10)
  {
    lcd.print("0");
  }
lcd.print(xdia);
lcd.print("/");
if (xmes< 10)
  {
    lcd.print("0");
  }
lcd.print(xmes);
lcd.print("/");
if (xano< 10)
  {
    lcd.print("0");
  }
lcd.print(xano);
lcd.setCursor(0,3);
lcd.print("Ano selecionado");
}




}  // finaliza rotina Loop();


void quarto2()
       
 {
             // monitor temperatura quarto2
             valorLidoquarto2 = analogRead(pinoSensorquarto2);
             temperaturaquarto2 = (valorLidoquarto2 *  0.00488);
             temperaturaquarto2 = temperaturaquarto2 * 100;

            // botão quarto
          int  leiturabme = digitalRead(bme);
          int leiturablq2 = digitalRead(blq2); // leitura do botão
          int leituralq2 = digitalRead(lq2); // leitura do rele da lampada
       


if (leiturabme ==1) {travame = 0; }
       
if (menu == 2 &&  travame == 0  && leiturabme == 0 && leituralq2 == 0 ){ digitalWrite(lq2,1);  travame = 1 ; lcd.clear();}
if (menu == 2 &&  travame == 0  && leiturabme == 0 && leituralq2 == 1) { digitalWrite(lq2,0);  travame = 1 ; lcd.clear();}
if (leituralq2 == 0 && ledtime == 1 ){digitalWrite(lb2,1);}
if (leituralq2 == 0 && ledtime == 0){digitalWrite(lb2,0);}
if (leituralq2 == 1){digitalWrite(lb2,0);}
             if (leituralq2 == 1 && trava == 0 ){  estadolquarto2 =" Ligada";
              lcd.clear();
                lcd.setCursor(3,1);
  lcd.print("Quarto Casal");
  lcd.setCursor(3,2);
  lcd.print("Lampada Ligada");
  delay(200);

  lcd.clear();

  trava = 1 ;}
           
             if (leituralq2 == 0  && trava == 1){  estadolquarto2 =" Desligada";
             lcd.clear();
              lcd.setCursor(3,1);
  lcd.print("Quarto Casal");
  lcd.setCursor(3,2);
  lcd.print("Lampada Desligada");
  delay(200);
  lcd.clear();

  trava = 0; }
           
         if (leiturablq2 == 0 && pulsobotao == 0 &&  escq2 == 0 && leituralq2 == 0) {
             automaticoquarto2 = 0;
          digitalWrite(lq2,1);
       
           escq2 = 0 ;
         pulsobotao = 1; // trava o set do botão para ficar apagada
 }  
         if ( leiturablq2 == 1) { pulsobotao = 0;}
       
         if (leiturablq2 == 0 && pulsobotao == 0 && escq2 == 0 && leituralq2 == 1) {
         
            automaticoquarto2 = 0;
         
         // pisca botão
       
   
       digitalWrite(lq2,0);
           pulsobotao = 1;
         // trava o set do botão  para ficar acesa
}}
void quarto3()
       
         
         
       
            {
          int  leiturabme = digitalRead(bme);  
          int leiturablq3 = digitalRead(blq3); // leitura do botão
          int leituralq3 = digitalRead(lq3); // leitura do rele da lampada
 if (leiturabme ==1) {travame = 0; }
       
if (menu == 3 &&  travame == 0  && leiturabme == 0 && leituralq3 == 0 ) { digitalWrite(lq3,1); travame = 1 ; lcd.clear();}
if (menu == 3 &&  travame == 0  && leiturabme == 0 && leituralq3 == 1)  {digitalWrite(lq3,0); travame = 1 ; lcd.clear(); }
if (leituralq3 == 0 && ledtime == 1 ){digitalWrite(lb3,1);}
if (leituralq3 == 0 && ledtime == 0){digitalWrite(lb3,0);}
if (leituralq3 == 1){digitalWrite(lb3,0);}
             if (leituralq3 == 1 && trava1 == 0 ){  estadolquarto3 =" Ligada";
              lcd.clear();
                lcd.setCursor(3,1);
  lcd.print("Quarto Solteiro");
  lcd.setCursor(3,2);
  lcd.print("Lampada Ligada");
  delay(200);

  lcd.clear();

  trava1 = 1 ;}
           
             if (leituralq3 == 0  && trava1 == 1){  estadolquarto3 =" Desligada";
             lcd.clear();
              lcd.setCursor(3,1);
  lcd.print("Quarto Solteiro");
  lcd.setCursor(3,2);
  lcd.print("Lampada Desligada");
  delay(200);
  lcd.clear();

  trava1 = 0; }

  if ( leiturablq3 == 1) { pulsobotao1 = 0;}
           
         if (leiturablq3 == 0 && pulsobotao1 == 0 &&  escq2 == 0 && leituralq3 == 0) {
             automaticoquarto2 = 0;
          digitalWrite(lq3,1);
       
           escq2 = 0 ;
         pulsobotao1 = 1; // trava o set do botão para ficar apagada
       
     
             }

         if (leiturablq3 == 0 && pulsobotao1 == 0 && escq3 == 0 && leituralq3 == 1) {
         
                     
         // pisca botão
       
     
       digitalWrite(lq3,0);
           pulsobotao1 = 1;
         // trava o set do botão  para ficar acesa
     
          // contagem em automatica
     
       
}
}


void sala1()
        {
          int  leiturabme = digitalRead(bme);
           int leiturabsl = digitalRead(blsl); // leitura do botão
          int leituralsl = digitalRead(lsl); // leitura do rele da lampada
          if (leiturabme ==1) {travame = 0; }
       
if (menu == 4 &&  travame == 0  && leiturabme == 0 && leituralsl == 0 ) { digitalWrite(lsl,1);travame = 1 ; lcd.clear(); }
if (menu == 4 &&  travame == 0  && leiturabme == 0 && leituralsl == 1) { digitalWrite(lsl,0); travame = 1 ; lcd.clear(); }
if (leituralsl == 0 && ledtime == 1 ){digitalWrite(lbsl,1);}
if (leituralsl == 0 && ledtime == 0){digitalWrite(lbsl,0);}
if (leituralsl == 1){digitalWrite(lbsl,0);}
             if (leituralsl == 1 && trava2 == 0 ){  estadolsala =" Ligada";
              lcd.clear();
                lcd.setCursor(3,1);
  lcd.print("Sala Estar");
  lcd.setCursor(3,2);
  lcd.print("Lampada Ligada");
  delay(200);

  lcd.clear();
  trava2 = 1 ;}
           
             if (leituralsl == 0  && trava2 == 1){  estadolsala =" Desligada";
             lcd.clear();
              lcd.setCursor(3,1);
  lcd.print("Sala Estar");
  lcd.setCursor(3,2);
  lcd.print("Lampada Desligada");
  delay(200);
  lcd.clear();

  trava2 = 0; }

  if ( leiturabsl == 1) { pulsobotao2 = 0;}
           
         if (leiturabsl == 0 && pulsobotao2 == 0 &&  escq4 == 0 && leituralsl == 0) {
             automaticoquarto2 = 0;
          digitalWrite(lsl,1);
     
           escq4 = 0 ;
         pulsobotao2 = 1; // trava o set do botão para ficar apagada
             }

         if (leiturabsl == 0 && pulsobotao2 == 0 && escq4 == 0 && leituralsl == 1) {
         
                     
         // pisca botão
       
   
       digitalWrite(lsl,0);
           pulsobotao2 = 1;
         // trava o set do botão  para ficar acesa
     
          // contagem em automatica
   
         }    
         }

void banheiro()
        {
          int  leiturabme = digitalRead(bme);
           int leiturabb = digitalRead(blb); // leitura do botão
          int leituralb = digitalRead(lb); // leitura do rele da lampada
if (leiturabme ==1) {travame = 0; }

       
if (menu == 6 &&  travame == 0  && leiturabme == 0 && leituralb == 0 ) { digitalWrite(lb,1);  travame = 1 ; lcd.clear();}
if (menu == 6 &&  travame == 0  && leiturabme == 0 && leituralb == 1) { digitalWrite(lb,0);  travame = 1 ; lcd.clear();}
if (leituralb == 0 && ledtime == 1 ){digitalWrite(lbb,1);}
if (leituralb == 0 && ledtime == 0){digitalWrite(lbb,0);}
if (leituralb == 1){digitalWrite(lbb,0);}          
             if (leituralb == 1 && trava3 == 0 ){  estadolbanheiro =" Ligada";
              lcd.clear();
                lcd.setCursor(3,1);
  lcd.print("Banheiro");
  lcd.setCursor(3,2);
  lcd.print("Lampada Ligada");
  delay(200);

  lcd.clear();
  trava3 = 1 ;}
           
             if (leituralb == 0  && trava3 == 1){  estadolbanheiro =" Desligada";
             lcd.clear();
              lcd.setCursor(3,1);
  lcd.print("Banheiro");
  lcd.setCursor(3,2);
  lcd.print("Lampada Desligada");
  delay(200);
  lcd.clear();

  trava3 = 0; }

  if ( leiturabb == 1) { pulsobotao3 = 0;}
           
         if (leiturabb == 0 && pulsobotao3 == 0 &&  escq5 == 0 && leituralb == 0) {
       
          digitalWrite(lb,1);
     
           escq5 = 0 ;
         pulsobotao3 = 1; // trava o set do botão para ficar apagada
             }

         if (leiturabb == 0 && pulsobotao3 == 0 && escq5 == 0 && leituralb == 1) {
         
                     
         // pisca botão
       
   
       digitalWrite(lb,0);
           pulsobotao3 = 1;
         // trava o set do botão  para ficar acesa
     
          // contagem em automatica
   
         }    
         }

         void cozinha()
        {
          int  leiturabme = digitalRead(bme);
           int leiturabc = digitalRead(blc); // leitura do botão
          int leituralc = digitalRead(lc); // leitura do rele da lampada



       
 if (leiturabme ==1) {travame = 0; }

if (menu == 5 &&  travame == 0  && leiturabme == 0 && leituralc == 0 ) { digitalWrite(lc,1);  travame = 1 ; lcd.clear(); }
if (menu == 5 &&  travame == 0  && leiturabme == 0 && leituralc == 1)  { digitalWrite(lc,0);  travame = 1 ; lcd.clear(); }
if (leituralc == 0 && ledtime == 1){digitalWrite(lbc,1);}
if (leituralc == 0 && ledtime == 0){digitalWrite(lbc,0);}
if (leituralc == 1){digitalWrite(lbc,0);}
             if (leituralc == 1 && trava4 == 0 ){  estadolcozinha=" Ligada";
              lcd.clear();
                lcd.setCursor(3,1);
  lcd.print("Cozinha");
  lcd.setCursor(3,2);
  lcd.print("Lampada Ligada");
  delay(200);

  lcd.clear();
  trava4 = 1 ;}
           
             if (leituralc == 0  && trava4 == 1){  estadolcozinha =" Desligada";
             lcd.clear();
              lcd.setCursor(3,1);
  lcd.print("Cozinha");
  lcd.setCursor(3,2);
  lcd.print("Lampada Desligada");
  delay(200);
  lcd.clear();

  trava4 = 0; }

  if ( leiturabc == 1) { pulsobotao4 = 0;}
           
         if (leiturabc == 0 && pulsobotao4 == 0 &&  escq5 == 0 && leituralc == 0) {
       
          digitalWrite(lc,1);
       
           escq5 = 0 ;
         pulsobotao4 = 1; // trava o set do botão para ficar apagada
             }

         if (leiturabc == 0 && pulsobotao4 == 0 && escq6 == 0 && leituralc == 1) {
         
                     
         // pisca botão
       
     
       digitalWrite(lc,0);
           pulsobotao4 = 1;
         // trava o set do botão  para ficar acesa
     
          // contagem em automatica
   
         }    
         }

  void area()
        {
          int  leiturabme = digitalRead(bme);
           int leituraba = digitalRead(bla); // leitura do botão
          int leiturala = digitalRead(la); // leitura do rele da lampada
          if (leiturabme ==1) {travame = 0; }
       
if (menu == 7 &&  travame == 0  && leiturabme == 0 && leiturala == 0 ) { digitalWrite(la,1);  travame = 1 ; lcd.clear();   }
if (menu == 7 &&  travame == 0  && leiturabme == 0 && leiturala == 1 ) { digitalWrite(la,0);  travame = 1 ;  lcd.clear();  }
if (leiturala == 0 && ledtime == 1 ){digitalWrite(lba,1);}
if (leiturala == 0 && ledtime == 0){digitalWrite(lba,0);}
if (leiturala == 1 ){digitalWrite(lba,0);}
             if (leiturala == 1 && trava5 == 0 ){  estadolarea =" Ligada";
              lcd.clear();
                lcd.setCursor(3,1);
  lcd.print("Area Servico");
  lcd.setCursor(3,2);
  lcd.print("Lampada Ligada");
  delay(200);

  lcd.clear();
  trava5 = 1 ;}
           
             if (leiturala == 0  && trava5== 1){  estadolarea =" Desligada";
             lcd.clear();
              lcd.setCursor(3,1);
  lcd.print("Area Servico");
  lcd.setCursor(3,2);
  lcd.print("Lampada Desligada");
  delay(700);
  lcd.clear();

  trava5 = 0; }

  if ( leituraba == 1) { pulsobotao5 = 0;}
           
         if (leituraba == 0 && pulsobotao5 == 0 &&  escq7 == 0 && leiturala == 0) {
       
          digitalWrite(la,1);
     
           escq7 = 0 ;
         pulsobotao5 = 1; // trava o set do botão para ficar apagada
             }

         if (leituraba == 0 && pulsobotao5 == 0 && escq7 == 0 && leiturala == 1) {
         
                     
         // pisca botão
       
   
       digitalWrite(la,0);
           pulsobotao5 = 1;
         // trava o set do botão  para ficar acesa
     
          // contagem em automatica
   
         }    
         }

void relogio()
{


}

void imprime_dia_da_semana(int dia)
{
  lcd.setCursor(0,0);
  switch (dia)
  {
    case 1:
    lcd.print("Domingo");
    break;
    case 2:
    lcd.print("Segunda");
    break;
    case 3:
    lcd.print("Terca");
    break;
    case 4:
    lcd.print("Quarta");
    break;
    case 5:
    lcd.print("Quinta");
    break;
    case 6:
    lcd.print("Sexta");
    break;
    case 7:
    lcd.print("Sabado");
    break;
  }
}


  void ajustehora()
  {
int leiturabma = digitalRead(bma);
int leiturabmr = digitalRead(bmv);
int leiturabme = digitalRead(bme);

if (acertohoras == 1){
myRTC.setDS1302Time(xseg, xmin, xhor, xsemana, xdia, xmes, xano);
// myRTC.setDS1302Time( 0, 59, 23, 6, 10, 1, 2016);
lcd.clear();
menu40 = 0 ;
lcd.clear();
lcd.setCursor(0,2);
lcd.print("Relogio Ajustado!");
delay(1000);lcd.clear();
menu = 0;
acertohoras = 0;

}
if (leiturabma ==1) {travama = 0; }
if (leiturabmr ==1) {travamr = 0; }
if (leiturabme ==1) {travame = 0; }



if (menu == 8  && leiturabme == 0 && travame == 0){ menu = 40; menu40 = 1 ;  travame = 1;delay(100);lcd.clear();}
if (menu == 40 && leiturabma == 0 && xsemana <=6 ){ xsemana ++; delay(100);}
if (menu == 40 && leiturabmr == 0 && xsemana >=2){ xsemana= xsemana -1;delay(100); }

if (menu == 40 && leiturabme == 0 && travame == 0){ menu =41; travame = 1;delay(100);}

if (menu == 41 && leiturabma == 0  && xhor <=24 ){ xhor ++;delay(100);}
if (menu == 41 && leiturabmr == 0  && xhor >=1){ xhor= xhor-1; delay(100);}

if (menu == 41 && leiturabme == 0 && travame == 0){ menu =42; travame = 1;delay(100);}

if (menu == 42 && leiturabma == 0 &&  xmin <=60 ){ xmin ++;delay(100); }
if (menu == 42 && leiturabmr == 0 &&  xmin >=1){ xmin= xmin-1; delay(100);}

if (menu == 42 && leiturabme == 0 && travame == 0){ menu=43; travame = 1;delay(100);}

if (menu == 43 && leiturabma == 0 &&  xdia <=31){ xdia ++;delay(100); }
if (menu == 43 && leiturabmr == 0 &&  xdia >=1){ xdia= xdia-1; delay(100);}


if (menu == 43 && leiturabme == 0 && travame == 0){ menu=44; travame = 1;delay(100);}

if (menu == 44 && leiturabma == 0 && xmes <=12 ){ xmes ++;delay(100);}
if (menu == 44 && leiturabmr == 0  && xmes >=1){ xmes= xmes-1;delay(100); }

if (menu == 44 && leiturabme == 0 && travame == 0){ menu=45;travame = 1;delay(100);}

if (menu == 45 && leiturabma == 0  && xano <=2080){ xano ++;delay(100); }
if (menu == 45 && leiturabmr == 0  && xano >=1){ xano= xano-1;delay(100); }

if (menu == 45 && leiturabme == 0 && travame == 0){ acertohoras = 1;  travame = 1;}


}

void botaomenu()
{

 int leiturabma = digitalRead(bma);
int  leiturabmr = digitalRead(bmv);
int  leiturabme = digitalRead(bme);

if (leiturabma ==1) {travama = 0; }
if (leiturabmr ==1) {travamr = 0; }
if (leiturabme ==1) {travame = 0; }


if (leiturabma ==0 && travama == 0 && menu40 == 0 && menu <=14 && menuenter == 0 ) { lcd.clear(); menu ++; travama = 1;}
if (leiturabmr ==0 && travamr == 0 &&menu40 == 0&& menu >=1 && menuenter == 0 ){ lcd.clear();menu = menu -1; travamr = 1;}



}
void atualisaestado()
{
int leituralq2 = digitalRead(lq2); // leitura do rele da lampada
if ( leituralq2 == 0 && menu == 2) { estadom = "Ligar" ;}
if ( leituralq2 == 1  && menu == 2) { estadom = "Desligar" ;}

int leituralq3 = digitalRead(lq3); // leitura do rele da lampada
if ( leituralq3 == 0 && menu == 3) { estadom = "Ligar" ;}
if ( leituralq3== 1  && menu == 3) { estadom = "Desligar" ;}

int leituralsl = digitalRead(lsl); // leitura do botão
if ( leituralsl == 0 && menu == 4) { estadom = "Ligar" ;}
if ( leituralsl== 1  && menu == 4) { estadom = "Desligar" ;}

int leituralc = digitalRead(lc); // leitura do botão
if ( leituralc == 0 && menu == 5) { estadom = "Ligar" ;}
if ( leituralc== 1  && menu == 5) { estadom = "Desligar" ;}

int leituralb = digitalRead(lb); // leitura do rele da lampada
if ( leituralb == 0 && menu == 6) { estadom = "Ligar" ;}
if ( leituralb== 1  && menu == 6) { estadom = "Desligar" ;}

int leiturala = digitalRead(la); // leitura do rele da lampada
if ( leiturala == 0 && menu == 7) { estadom = "Ligar" ;}
if ( leiturala== 1  && menu == 7) { estadom = "Desligar" ;}
}

void automatico ()

{

int leiturabma = digitalRead(bma);
int  leiturabmr = digitalRead(bmv);
int  leiturabme = digitalRead(bme);

if (leiturabma ==1) {travama = 0; }
if (leiturabmr ==1) {travamr = 0; }
if (leiturabme ==1) {travame = 0; }


// Quarto Casal
if (leiturabme == 0 && travame == 0 & menu == 9 && menuenter == 0) { Ajuste = "Avancar"; menuenter = 1; travame = 1; menu91 = 1;}
if (leiturabma == 0 && travama == 0 & menu == 9 && menuenter == 1 && menu91 == 1) { hlqc ++;}
if (leiturabmr == 0 && travamr == 0 & menu == 9 && menuenter == 1 && menu91 == 1) { hlqc= hlqc - 1;}
if (leiturabme == 0 && travame == 0 & menu == 9 && menuenter == 1 && menu91 == 1 ){ menu91 = 0; travame = 1; menu92 =1; }
if (leiturabma == 0 && travama == 0 & menu == 9 && menuenter == 1 && menu92 == 1) { mlqc ++;}
if (leiturabmr == 0 && travamr == 0 & menu == 9 && menuenter == 1 && menu92 == 1) { mlqc= mlqc - 1;}
if (leiturabme == 0 && travame == 0 & menu == 9 && menuenter == 1 && menu92 == 1 ){ menu92 = 0; travame = 1; menu93 =1; }
if (leiturabma == 0 && travama == 0 & menu == 9 && menuenter == 1 && menu93 == 1) { hdqc ++;}
if (leiturabmr == 0 && travamr == 0 & menu == 9 && menuenter == 1 && menu93 == 1) { hdqc= hdqc - 1;}
if (leiturabme == 0 && travame == 0 & menu == 9 && menuenter == 1 && menu93 == 1) { menu93 = 0; travame = 1; menu94 =1; }
if (leiturabma == 0 && travama == 0 & menu == 9 && menuenter == 1 && menu94 == 1) { mdqc ++;}
if (leiturabmr == 0 && travamr == 0 & menu == 9 && menuenter == 1 && menu94 == 1) { mdqc= mdqc - 1;}
if (leiturabme == 0 && travame == 0 & menu == 9 && menuenter == 1 && menu94 == 1) { menu94 = 0; travame = 1; menu95 =1; }
if (leiturabma == 0 && travama == 0 & menu == 9 && menuenter == 1 && menu95 == 1) { onqc =1 ; onoffqc ="ON" ; }
if (leiturabmr == 0 && travamr == 0 & menu == 9 && menuenter == 1 && menu95 == 1) { onqc = 0 ; onoffqc ="OFF" ;}
if (leiturabme == 0 && travame == 0 & menu == 9 && menuenter == 1 && menu95 == 1) { menu95 = 0; travame = 1; menu = 9; menuenter = 0 ;Ajuste = "Ajustar"; }

if (hlqc == myRTC.hours && mlqc == myRTC.minutes && onqc == 1 ) {digitalWrite(lq2,1); digitalWrite(lb2,0);}
if (hdqc == myRTC.hours && mdqc == myRTC.minutes && onqc == 1 ) {digitalWrite(lq2,0); digitalWrite(lb2,1);}

// Quarto Solteiro
if (leiturabme == 0 && travame == 0 & menu == 10 && menuenter == 0) { Ajuste = "Avancar"; menuenter = 1; travame = 1; menu101 = 1;}
if (leiturabma == 0 && travama == 0 & menu == 10 && menuenter == 1 && menu101 == 1) { hlqs ++;}
if (leiturabmr == 0 && travamr == 0 & menu == 10 && menuenter == 1 && menu101 == 1) { hlqs= hlqs - 1;}
if (leiturabme == 0 && travame == 0 & menu == 10 && menuenter == 1 && menu101 == 1 ){ menu101 = 0; travame = 1; menu102 =1; }
if (leiturabma == 0 && travama == 0 & menu == 10 && menuenter == 1 && menu102 == 1) { mlqs ++;}
if (leiturabmr == 0 && travamr == 0 & menu == 10 && menuenter == 1 && menu102 == 1) { mlqs= mlqs - 1;}
if (leiturabme == 0 && travame == 0 & menu == 10 && menuenter == 1 && menu102 == 1 ){ menu102 = 0; travame = 1; menu103 =1; }
if (leiturabma == 0 && travama == 0 & menu == 10 && menuenter == 1 && menu103 == 1) { hdqs ++;}
if (leiturabmr == 0 && travamr == 0 & menu == 10 && menuenter == 1 && menu103 == 1) { hdqs= hdqs - 1;}
if (leiturabme == 0 && travame == 0 & menu == 10 && menuenter == 1 && menu103 == 1) { menu103 = 0; travame = 1; menu104 =1; }
if (leiturabma == 0 && travama == 0 & menu == 10 && menuenter == 1 && menu104 == 1) { mdqs ++;}
if (leiturabmr == 0 && travamr == 0 & menu == 10 && menuenter == 1 && menu104 == 1) { mdqs= mdqs - 1;}
if (leiturabme == 0 && travame == 0 & menu == 10 && menuenter == 1 && menu104 == 1) { menu104 = 0; travame = 1; menu105 =1; }
if (leiturabma == 0 && travama == 0 & menu == 10 && menuenter == 1 && menu105 == 1) { onqs =1 ; onoffqs ="ON" ; }
if (leiturabmr == 0 && travamr == 0 & menu == 10 && menuenter == 1 && menu105 == 1) { onqs = 0 ; onoffqs ="OFF" ;}
if (leiturabme == 0 && travame == 0 & menu == 10 && menuenter == 1 && menu105 == 1) { menu105 = 0; travame = 1; menu = 10; menuenter = 0 ;Ajuste = "Ajustar"; }

if (hlqs == myRTC.hours && mlqs == myRTC.minutes && onqs == 1 ) {digitalWrite(lq3,1); digitalWrite(lb3,0);}
if (hdqs == myRTC.hours && mdqs == myRTC.minutes && onqs == 1 ) {digitalWrite(lq3,0); digitalWrite(lb3,1);}

//  Banheiro
if (leiturabme == 0 && travame == 0 & menu == 11 && menuenter == 0) { Ajuste = "Avancar"; menuenter = 1; travame = 1; menu111 = 1;}
if (leiturabma == 0 && travama == 0 & menu == 11 && menuenter == 1 && menu111 == 1) { hlb ++;}
if (leiturabmr == 0 && travamr == 0 & menu == 11 && menuenter == 1 && menu111 == 1) { hlb= hlb - 1;}
if (leiturabme == 0 && travame == 0 & menu == 11 && menuenter == 1 && menu111 == 1 ){ menu111 = 0; travame = 1; menu112 =1; }
if (leiturabma == 0 && travama == 0 & menu == 11 && menuenter == 1 && menu112 == 1) { mlb ++;}
if (leiturabmr == 0 && travamr == 0 & menu == 11 && menuenter == 1 && menu112 == 1) { mlb= mlb - 1;}
if (leiturabme == 0 && travame == 0 & menu == 11 && menuenter == 1 && menu112 == 1 ){ menu112 = 0; travame = 1; menu113 =1; }
if (leiturabma == 0 && travama == 0 & menu == 11 && menuenter == 1 && menu113 == 1) { hdb ++;}
if (leiturabmr == 0 && travamr == 0 & menu == 11 && menuenter == 1 && menu113 == 1) { hdb= hdb - 1;}
if (leiturabme == 0 && travame == 0 & menu == 11 && menuenter == 1 && menu113 == 1) { menu113 = 0; travame = 1; menu114 =1; }
if (leiturabma == 0 && travama == 0 & menu == 11 && menuenter == 1 && menu114 == 1) { mdb ++;}
if (leiturabmr == 0 && travamr == 0 & menu == 11 && menuenter == 1 && menu114 == 1) { mdb= mdb - 1;}
if (leiturabme == 0 && travame == 0 & menu == 11 && menuenter == 1 && menu114 == 1) { menu114 = 0; travame = 1; menu115 =1; }
if (leiturabma == 0 && travama == 0 & menu == 11 && menuenter == 1 && menu115 == 1) { onb =1 ; onoffb ="ON" ; }
if (leiturabmr == 0 && travamr == 0 & menu == 11 && menuenter == 1 && menu115 == 1) { onb = 0 ; onoffb ="OFF" ;}
if (leiturabme == 0 && travame == 0 & menu == 11 && menuenter == 1 && menu115 == 1) { menu115 = 0; travame = 1; menu = 11; menuenter = 0 ;Ajuste = "Ajustar"; }

if (hlb == myRTC.hours && mlb == myRTC.minutes && onb == 1 ) {digitalWrite(lb,1); digitalWrite(lbb,0);}
if (hdb == myRTC.hours && mdb == myRTC.minutes && onb == 1 ) {digitalWrite(lb,0); digitalWrite(lbb,1);}


// Sala de Estar
if (leiturabme == 0 && travame == 0 & menu == 12 && menuenter == 0) { Ajuste = "Avancar"; menuenter = 1; travame = 1; menu121 = 1;}
if (leiturabma == 0 && travama == 0 & menu == 12 && menuenter == 1 && menu121 == 1) { hlsl ++;}
if (leiturabmr == 0 && travamr == 0 & menu == 12 && menuenter == 1 && menu121 == 1) { hlsl= hlsl - 1;}
if (leiturabme == 0 && travame == 0 & menu == 12 && menuenter == 1 && menu121 == 1 ){ menu121 = 0; travame = 1; menu122 =1; }
if (leiturabma == 0 && travama == 0 & menu == 12 && menuenter == 1 && menu122 == 1) { mlsl ++;}
if (leiturabmr == 0 && travamr == 0 & menu == 12 && menuenter == 1 && menu122 == 1) { mlsl= mlsl - 1;}
if (leiturabme == 0 && travame == 0 & menu == 12 && menuenter == 1 && menu122 == 1 ){ menu122 = 0; travame = 1; menu123 =1; }
if (leiturabma == 0 && travama == 0 & menu == 12 && menuenter == 1 && menu123 == 1) { hdsl ++;}
if (leiturabmr == 0 && travamr == 0 & menu == 12 && menuenter == 1 && menu123 == 1) { hdsl= hdsl - 1;}
if (leiturabme == 0 && travame == 0 & menu == 12 && menuenter == 1 && menu123 == 1) { menu123 = 0; travame = 1; menu124 =1; }
if (leiturabma == 0 && travama == 0 & menu == 12 && menuenter == 1 && menu124 == 1) { mdsl ++;}
if (leiturabmr == 0 && travamr == 0 & menu == 12 && menuenter == 1 && menu124 == 1) { mdsl= mdsl - 1;}
if (leiturabme == 0 && travame == 0 & menu == 12 && menuenter == 1 && menu124 == 1) { menu124 = 0; travame = 1; menu125 =1; }
if (leiturabma == 0 && travama == 0 & menu == 12 && menuenter == 1 && menu125 == 1) { onsl =1 ; onoffsl ="ON" ; }
if (leiturabmr == 0 && travamr == 0 & menu == 12 && menuenter == 1 && menu125 == 1) { onsl = 0 ; onoffsl ="OFF" ;}
if (leiturabme == 0 && travame == 0 & menu == 12 && menuenter == 1 && menu125 == 1) { menu125 = 0; travame = 1; menu = 12; menuenter = 0 ;Ajuste = "Ajustar"; }

if (hlsl == myRTC.hours && mlsl == myRTC.minutes && onsl == 1 ) { digitalWrite(lsl,1); digitalWrite(lbsl,0);}
if (hdsl == myRTC.hours && mdsl == myRTC.minutes && onsl == 1 ) { digitalWrite(lsl,0); digitalWrite(lbsl,1);}

// Cozinha
if (leiturabme == 0 && travame == 0 & menu == 13 && menuenter == 0) { Ajuste = "Avancar"; menuenter = 1; travame = 1; menu131 = 1;}
if (leiturabma == 0 && travama == 0 & menu == 13 && menuenter == 1 && menu131 == 1 && hlcz <=24) { hlcz ++;}
if (leiturabmr == 0 && travamr == 0 & menu == 13&& menuenter == 1 && menu131 == 1 && hlcz >=1) { hlcz= hlcz - 1;}
if (leiturabme == 0 && travame == 0 & menu == 13 && menuenter == 1 && menu131 == 1  ){ menu131 = 0; travame = 1; menu132 =1; }
if (leiturabma == 0 && travama == 0 & menu == 13 && menuenter == 1 && menu132 == 1 && mlcz <= 60) { mlcz ++;}
if (leiturabmr == 0 && travamr == 0 & menu == 13 && menuenter == 1 && menu132 == 1 && mlcz >=1 ) { mlcz= mlcz - 1;}
if (leiturabme == 0 && travame == 0 & menu == 13 && menuenter == 1 && menu132 == 1 ){ menu132 = 0; travame = 1; menu133 =1; }
if (leiturabma == 0 && travama == 0 & menu == 13 && menuenter == 1 && menu133 == 1 && hdcz <= 24) { hdcz ++;}
if (leiturabmr == 0 && travamr == 0 & menu == 13 && menuenter == 1 && menu133 == 1 && hdcz >= 0) { hdcz= hdcz - 1;}
if (leiturabme == 0 && travame == 0 & menu == 13 && menuenter == 1 && menu133 == 1) { menu133 = 0; travame = 1; menu134 =1; }
if (leiturabma == 0 && travama == 0 & menu == 13 && menuenter == 1 && menu134 == 1 && mdcz <= 60) { mdcz ++;}
if (leiturabmr == 0 && travamr == 0 & menu == 13 && menuenter == 1 && menu134 == 1 && mlcz >= 0) { mdcz= mdsl - 1;}
if (leiturabme == 0 && travame == 0 & menu == 13 && menuenter == 1 && menu134 == 1) { menu134 = 0; travame = 1; menu135 =1; }
if (leiturabma == 0 && travama == 0 & menu == 13 && menuenter == 1 && menu135 == 1) { oncz =1 ; onoffcz ="ON" ; }
if (leiturabmr == 0 && travamr == 0 & menu == 13 && menuenter == 1 && menu135 == 1) { oncz = 0 ; onoffcz ="OFF" ;}
if (leiturabme == 0 && travame == 0 & menu == 13 && menuenter == 1 && menu135 == 1) { menu135 = 0; travame = 1; menu = 13; menuenter = 0 ;Ajuste = "Ajustar"; }

if (hlcz == myRTC.hours && mlcz == myRTC.minutes && oncz == 1 ) { digitalWrite(lc,1); digitalWrite(lbc,0);}
if (hdcz == myRTC.hours && mdcz == myRTC.minutes && oncz == 1 ) { digitalWrite(lc,0); digitalWrite(lbc,1);}

// Area
if (leiturabme == 0 && travame == 0 & menu == 14 && menuenter == 0) { Ajuste = "Avancar"; menuenter = 1; travame = 1; menu141 = 1;}
if (leiturabma == 0 && travama == 0 & menu == 14 && menuenter == 1 && menu141 == 1) { hla ++;}
if (leiturabmr == 0 && travamr == 0 & menu == 14 && menuenter == 1 && menu141 == 1) { hla= hla - 1;}
if (leiturabme == 0 && travame == 0 & menu == 14 && menuenter == 1 && menu141 == 1 ){ menu141 = 0; travame = 1; menu142 =1; }
if (leiturabma == 0 && travama == 0 & menu == 14 && menuenter == 1 && menu142 == 1) { mla ++;}
if (leiturabmr == 0 && travamr == 0 & menu == 14 && menuenter == 1 && menu142 == 1) { mla= mla - 1;}
if (leiturabme == 0 && travame == 0 & menu == 14 && menuenter == 1 && menu142 == 1 ){ menu142 = 0; travame = 1; menu143 =1; }
if (leiturabma == 0 && travama == 0 & menu == 14 && menuenter == 1 && menu143 == 1) { hda ++;}
if (leiturabmr == 0 && travamr == 0 & menu == 14 && menuenter == 1 && menu143 == 1) { hda= hda - 1;}
if (leiturabme == 0 && travame == 0 & menu == 14 && menuenter == 1 && menu143 == 1) { menu143 = 0; travame = 1; menu144 =1; }
if (leiturabma == 0 && travama == 0 & menu == 14 && menuenter == 1 && menu144 == 1) { mda ++;}
if (leiturabmr == 0 && travamr == 0 & menu == 14 && menuenter == 1 && menu144 == 1) { mda= mda - 1;}
if (leiturabme == 0 && travame == 0 & menu == 14 && menuenter == 1 && menu144 == 1) { menu144 = 0; travame = 1; menu145 =1; }
if (leiturabma == 0 && travama == 0 & menu == 14 && menuenter == 1 && menu145 == 1) { ona =1 ; onoffa ="ON" ; }
if (leiturabmr == 0 && travamr == 0 & menu == 14 && menuenter == 1 && menu145 == 1) { ona = 0 ; onoffa ="OFF" ;}
if (leiturabme == 0 && travame == 0 & menu == 14 && menuenter == 1 && menu145 == 1) { menu145 = 0; travame = 1; menu = 13; menuenter = 0 ;Ajuste = "Ajustar"; }

if (hla == myRTC.hours && mla == myRTC.minutes && ona == 1 ) { digitalWrite(la,1); digitalWrite(lba,0);}
if (hda == myRTC.hours && mda == myRTC.minutes && ona == 1 ) { digitalWrite(la,0); digitalWrite(lba,1);}

}

void timeled()
{

 // lógica de ligar e desligar os led's do interruptor.

if ( myRTC.hours >=hdld  && myRTC.hours <=hlld) { ledtime = 0;}

if ( myRTC.hours <=hdld ) { ledtime = 1;}

if ( myRTC.hours >=hlld  ) { ledtime = 1;}




}
void ajustartimeled()
{
int leiturabma = digitalRead(bma);
int leiturabmr = digitalRead(bmv);
int leiturabme = digitalRead(bme);

if (leiturabma ==1) {travama = 0; }
if (leiturabmr ==1) {travamr = 0; }
if (leiturabme ==1) {travame = 0; }

if (menu == 15 && leiturabme == 1 && ajustaled == 0) {ajustaled = 1; menuenter == 1 ;}

}
void liga_desliga_GSMShield()
{
  Serial.print(F("Aguarde..."));
  pinMode(6, OUTPUT);
  digitalWrite(6, LOW);
  delay(1000);
  digitalWrite(6, HIGH);
  delay(1000);
  Serial.println(F("OK!"));

}


// EM BREVE BIBLIOTECAS E "C" ULTILIZADAS NO PROJETO SERÁ POSTADAS , LEBRANDO O PROJETO JAH ENCONTRA-SE EM TESTE E SENDO APERFEIÇOADO.


QUALQUER DÚVIDAS eslanruthelli1@yahoo.com.br