Añadir relè a codigo. (NO SOLUCIONADO)

Buenas de nuevo ya estoy trasteando un nuevo proyecto tengo este codigo que poco e ido programando y montando no soy experto en la materia,bueno el tema es que quiero añadir un relé que salte al final del proceso es decir cuando el codigo sea el incorrecto o se acabe el tiempo programado se abra el rele y me de una señal para activar una luz acustica,bien en el pin 10 o 11,pero no se como hacerlo¿se puede modificar el codigo e implantar el relé? o d elo contrario hay que hacer el codigo nuevo entero,el relè seria como este de un solo canal.

Agradesco toda ayuda posible.

codigo:

#include <Keypad.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
#include <Tone.h>
#define pound 14

Tone tone1;

int Scount = 60; // count seconds
int Mcount = 1; // count minutes
int Hcount = 0; // count hours
int DefuseTimer = 0; // set timer to 0

long secMillis = 0; // store last time for second add
long interval = 1000; // interval for seconds

char password[4] = {'0', '0', '0', '0'}; // PASSWORD E 1234 DEFINIDA AQUI!!!!
int currentLength = 0; //defines which number we are currently writing
int i = 0;
char entered[4];

int ledPin = 4; //red led
int ledPin2 = 3; //yellow led
int ledPin3 = 2; //green led

const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns
char keys[ROWS][COLS] = {
  {'1', '2', '3'},
  {'4', '5', '6'},
  {'7', '8', '9'},
  {'*', '0', '#'}
};
byte rowPins[ROWS] = {5, A5, A4, A2}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {A1, A0, A3}; //connect to the column pinouts of the keypad

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup() {
  pinMode(ledPin, OUTPUT); // sets the digital pin as output
  pinMode(ledPin2, OUTPUT); // sets the digital pin as output
  pinMode(ledPin3, OUTPUT); // sets the digital pin as output
  tone1.begin(9);
  lcd.begin(16, 2);
  Serial.begin(9600);
  lcd.clear();
  lcd.setCursor(0, 0);

  lcd.print(" 1 ");
  while (currentLength < 4)
  {
    lcd.setCursor(currentLength + 6, 1);
    lcd.cursor();
    char key = keypad.getKey();
    key == NO_KEY;
    if (key != NO_KEY)
    {
      if ((key != '*') && (key != '#'))
      {
        lcd.print(key);
        password[currentLength] = key;
        currentLength++;
        tone1.play(NOTE_C6, 200);
      }
    }
  }

  if (currentLength == 4)
  {
    delay(500);
    lcd.noCursor();
    lcd.clear();
    lcd.home();
    lcd.print(" 2");
    lcd.setCursor(6, 1);
    lcd.print(password[0]);
    lcd.print(password[1]);
    lcd.print(password[2]);
    lcd.print(password[3]);

    tone1.play(NOTE_E6, 200);
    delay(3000);
    lcd.clear();
    currentLength = 0;
  }
}

void loop()
{
  timer();
  char key2 = keypad.getKey(); // get the key

  if (key2 == '*')
  {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("3 ");

    while (currentLength < 4)
    {

      timer();

      char key2 = keypad.getKey();
      if (key2 == '#')
      {
        currentLength = 0;
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("CODIGO ");
      }
      else if (key2 != NO_KEY)
      {

        lcd.setCursor(currentLength + 7, 0);
        lcd.cursor();

        lcd.print(key2);
        entered[currentLength] = key2;
        currentLength++;
        tone1.play(NOTE_C6, 200);
        delay(100);
        lcd.noCursor();
        lcd.setCursor(currentLength + 6, 0);
        lcd.print("*");
        lcd.setCursor(currentLength + 7, 0);
        lcd.cursor();
      }
    }

    if (currentLength == 4)
    {
      if (entered[0] == password[0] && entered[1] == password[1] && entered[2] == password[2] && entered[3] == password[3])
      {
        lcd.noCursor();
        lcd.clear();
        lcd.home();
        lcd.print (" 4  ");
        currentLength = 0;
        digitalWrite(ledPin3, HIGH);
        delay(2500);
        lcd.setCursor(0, 1);
        lcd.print(" 5 ");
        delay(1000000);
      }
      else
      {
        lcd.noCursor();
        lcd.clear();
        lcd.home();
        lcd.print("  ");

        if (Hcount > 0)
        {
          Hcount = Hcount - 1;
        }

        if (Mcount > 0)
        {
          Mcount = Mcount - 59;
        }
        if (Scount > 0)
        {
          Scount = Scount - 59;
        }
        delay(1500);
        currentLength = 0;

      }
    }
  }
}

void timer()
{
  Serial.print(Scount);
  Serial.println();

  if (Hcount <= 0)
  {
    if ( Mcount < 0 )
    {
      lcd.noCursor();
      lcd.clear();
      lcd.home();
      lcd.print(" 6  ");
      lcd.setCursor (0, 1);
      lcd.print("  7");

      while (Mcount < 0)
      {
        digitalWrite(ledPin, HIGH); // sets the LED on
        tone1.play(NOTE_A2, 90);
        delay(100);
        digitalWrite(ledPin, LOW); // sets the LED off
        tone1.play(NOTE_A2, 90);
        delay(100);
        digitalWrite(ledPin2, HIGH); // sets the LED on
        tone1.play(NOTE_A2, 90);
        delay(100);
        digitalWrite(ledPin2, LOW); // sets the LED off
        tone1.play(NOTE_A2, 90);
        delay(100);
        digitalWrite(ledPin3, HIGH); // sets the LED on
        tone1.play(NOTE_A2, 90);
        delay(100);
        digitalWrite(ledPin3, LOW); // sets the LED off
        tone1.play(NOTE_A2, 90);
        delay(100);
      }
    }
  }

  lcd.setCursor (0, 1); // sets cursor to 2nd line
  lcd.print ("8");

  if (Hcount >= 10)
  {
    lcd.setCursor (7, 1);
    lcd.print (Hcount);
  }
  if (Hcount < 10)
  {
    lcd.setCursor (7, 1);
    lcd.write ("0");
    lcd.setCursor (8, 1);
    lcd.print (Hcount);
  }

  lcd.print (":");

  if (Mcount >= 10)
  {
    lcd.setCursor (10, 1);
    lcd.print (Mcount);
  }
  if (Mcount < 10)
  {
    lcd.setCursor (10, 1);
    lcd.write ("0");
    lcd.setCursor (11, 1);
    lcd.print (Mcount);
  }

  lcd.print (":");

  if (Scount >= 10)
  {
    lcd.setCursor (13, 1);
    lcd.print (Scount);
  }
  if (Scount < 10)
  {
    lcd.setCursor (13, 1);
    lcd.write ("0");
    lcd.setCursor (14, 1);
    lcd.print (Scount);
  }

  if (Hcount < 0)
  {
    Hcount = 0;
  }

  if (Mcount < 0)
  {
    Hcount --;
    Mcount = 59;
  }

  if (Scount < 1) // if 60 do this operation
  {
    Mcount --; // add 1 to Mcount
    Scount = 59; // reset Scount
  }

  if (Scount > 0) // do this oper. 59 times
  {
    unsigned long currentMillis = millis();

    if (currentMillis - secMillis > interval)
    {
      tone1.play(NOTE_G5, 200);
      secMillis = currentMillis;
      Scount --; // add 1 to Scount
      digitalWrite(ledPin2, HIGH); // sets the LED on
      delay(10); // waits for a second
      digitalWrite(ledPin2, LOW); // sets the LED off
      delay(10); // waits for a second
      //lcd.clear();
    }
  }
}

Lo único que tienes que hacer es.
definir un pin

const byte pinRele =  10;

esto al comienzo del programa

Luego cuando quieras que se active el relé pones esto

digitalWrite(pinRELE, HIGH);

y cuando no es error

digitalWrite(pinRELE, LOW);

Gracias surbyte joer tio eres la caña voy a trastear y ya te digo.

Un saludo.

Gracias surbyte joer tio eres la caña voy a trastear y ya te digo.

Don't worry: digamos que es español "castizo" . . . . :disappointed_relieved:

Saludos a todos

E probado lo que me as dicho surbyte,pero no se exactamente donde poner las lineas que me as aportado,lo e echo en varios sitios y me da errores,este es el error que me da:

PROBANDO-RELE1.ino: In function 'void timer()':
PROBANDO-RELE1.ino:299:20: error: 'pin10' was not declared in this scope
Error de compilación

This report would have more information with
"Show verbose output during compilation"
activala desde Archivo > Preferencias

aqui el codigo ya modificado ya con los pins de como lo quiero,funciona todo bien el buzzer, el tiempo,el teclado todo los leds tambien pero al poner las lineas del relé me da ese error.

#include <Keypad.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
#include <Tone.h>
#define pound 14

Tone tone1;


const byte pinRele =  10;


int Scount = 10; // count seconds
int Mcount = 0; // count minutes
int Hcount = 0; // count hours
int DefuseTimer = 0; // set timer to 0

long secMillis = 0; // store last time for second add
long interval = 1000; // interval for seconds

char password[4] = {'0', '4', '8', '9'}; // PASSWORD E 1234 DEFINIDA AQUI!!!!
int currentLength = 0; //defines which number we are currently writing
int i = 0;
char entered[4];

int ledPin = 11; //red led
int ledPin2 = 13; //yellow led
int ledPin3 = 12; //green led

const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns
char keys[ROWS][COLS] = {
  {'1', '2', '3'},
  {'4', '5', '6'},
  {'7', '8', '9'},
  {'*', '0', '#'}
};
byte rowPins[ROWS] = {2, 3, 4, 5}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {6, 7, 8}; //connect to the column pinouts of the keypad

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup() {
  pinMode(ledPin, OUTPUT); // sets the digital pin as output
  pinMode(ledPin2, OUTPUT); // sets the digital pin as output
  pinMode(ledPin3, OUTPUT); // sets the digital pin as output
  tone1.begin(9);
  lcd.begin(16, 2);
  Serial.begin(9600);
  lcd.clear();
  lcd.setCursor(5, 0);

  lcd.print("CODIGO");
  while (currentLength < 4)
  {
    lcd.setCursor(currentLength + 6, 1);
    lcd.cursor();
    char key = keypad.getKey();
    key == NO_KEY;
    if (key != NO_KEY)
    {
      if ((key != '*') && (key != '#'))
      {
        lcd.print(key);
        password[currentLength] = key;
        currentLength++;
        tone1.play(NOTE_C6, 200);
      }
    }
  }

  if (currentLength == 4)
  {
    delay(500);
    lcd.noCursor();
    lcd.clear();
    lcd.home();
    lcd.print("PUERTA ACTIVADA");
    lcd.setCursor(6, 1);
    lcd.print(password[0]);
    lcd.print(password[1]);
    lcd.print(password[2]);
    lcd.print(password[3]);

    tone1.play(NOTE_E6, 200);
    delay(3000);
    lcd.clear();
    currentLength = 0;
  }
}

void loop()
{
  timer();
  char key2 = keypad.getKey(); // get the key

  if (key2 == '*')
  {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("CODIGO:");

    while (currentLength < 4)
    {

      timer();

      char key2 = keypad.getKey();
      if (key2 == '#')
      {
        currentLength = 0;
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("CODIGO");
      }
      else if (key2 != NO_KEY)
      {

        lcd.setCursor(currentLength + 7, 0);
        lcd.cursor();

        lcd.print(key2);
        entered[currentLength] = key2;
        currentLength++;
        tone1.play(NOTE_C6, 200);
        delay(100);
        lcd.noCursor();
        lcd.setCursor(currentLength + 6, 0);
        lcd.print("*");
        lcd.setCursor(currentLength + 7, 0);
        lcd.cursor();
      }
    }

    if (currentLength == 4)
    {
      if (entered[0] == password[0] && entered[1] == password[1] && entered[2] == password[2] && entered[3] == password[3])
      {
        lcd.noCursor();
        lcd.clear();
        lcd.home();
        lcd.print ("PUERTA");
        currentLength = 0;
        digitalWrite(ledPin3, HIGH);
        delay(2500);
        lcd.setCursor(3, 1);
        lcd.print("DESACTIVADA");
        delay(1000000);
      }
      else
      {
        lcd.noCursor();
        lcd.clear();
        lcd.home();
        lcd.print("  ERROR CODIGO");

        if (Hcount > 0)
        {
          Hcount = Hcount - 1;
        }

        if (Mcount > 0)
        {
          Mcount = Mcount - 59;
        }
        if (Scount > 0)
        {
          Scount = Scount - 59;
        }
        delay(1500);
        currentLength = 0;

      }
    }
  }
}

void timer()
{
  Serial.print(Scount);
  Serial.println();

  if (Hcount <= 0)
  {
    if ( Mcount < 0 )
    {
      lcd.noCursor();
      lcd.clear();
      lcd.home();
      lcd.print("APERTURA NULA");
      lcd.setCursor (2, 1);
      lcd.print("PUERTA CERRADA");

      while (Mcount < 0)
      {
        digitalWrite(ledPin, HIGH); // sets the LED on
        tone1.play(NOTE_A2, 90);
        delay(100);
        digitalWrite(ledPin, LOW); // sets the LED off
        tone1.play(NOTE_A2, 90);
        delay(100);
        digitalWrite(ledPin2, HIGH); // sets the LED on
        tone1.play(NOTE_A2, 90);
        delay(100);
        digitalWrite(ledPin2, LOW); // sets the LED off
        tone1.play(NOTE_A2, 90);
        delay(100);
        digitalWrite(ledPin3, HIGH); // sets the LED on
        tone1.play(NOTE_A2, 90);
        delay(100);
        digitalWrite(ledPin3, LOW); // sets the LED off
        tone1.play(NOTE_A2, 90);
        delay(100);
        digitalWrite(pin10, HIGH);


      }
    }
  }

  lcd.setCursor (0, 1); // sets cursor to 2nd line
  lcd.print ("QUEDAN:");

  if (Hcount >= 10)
  {
    lcd.setCursor (7, 1);
    lcd.print (Hcount);
  }
  if (Hcount < 10)
  {
    lcd.setCursor (7, 1);
    lcd.write ("0");
    lcd.setCursor (8, 1);
    lcd.print (Hcount);
  }

  lcd.print (":");

  if (Mcount >= 10)
  {
    lcd.setCursor (10, 1);
    lcd.print (Mcount);
  }
  if (Mcount < 10)
  {
    lcd.setCursor (10, 1);
    lcd.write ("0");
    lcd.setCursor (11, 1);
    lcd.print (Mcount);
  }

  lcd.print (":");

  if (Scount >= 10)
  {
    lcd.setCursor (13, 1);
    lcd.print (Scount);
  }
  if (Scount < 10)
  {
    lcd.setCursor (13, 1);
    lcd.write ("0");
    lcd.setCursor (14, 1);
    lcd.print (Scount);
  }

  if (Hcount < 0)
  {
    Hcount = 0;
  }

  if (Mcount < 0)
  {
    Hcount --;
    Mcount = 59;
  }

  if (Scount < 1) // if 60 do this operation
  {
    Mcount --; // add 1 to Mcount
    Scount = 59; // reset Scount
  }

  if (Scount > 0) // do this oper. 59 times
  {
    unsigned long currentMillis = millis();

    if (currentMillis - secMillis > interval)
    {
      tone1.play(NOTE_G5, 200);
      secMillis = currentMillis;
      Scount --; // add 1 to Scount
      digitalWrite(ledPin2, HIGH); // sets the LED on
      delay(10); // waits for a second
      digitalWrite(ledPin2, LOW); // sets the LED off
      delay(10); // waits for a second
      //lcd.clear();
      
    }
  }
}

y en esta foto es donde quiero que salte el relé y esté 300 milisegundos funcionando y luego se apague.

agradesco enormemente me pueda ayudar a terminar este codigo que me esta volviendo loco,por mucho que e leido y mirado tutoriales cada vez me lio mas el codigo funciona muy bien pero da error al poner las lineas del relé.

Te recomiendo que vayas a DOCUMENTACION y veas los dos primeros hilos que son muchas clases de arduino.
Con que mires las 5 primeras te aseguro que hubieras sabido donde y como corregir el error que te daba el IDE.

Te dije que definieras como global esto

const byte pinRele = 10;

pero tu usas pin10 entonces o cambias la variable

#include <Keypad.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
#include <Tone.h>
#define pound 14

Tone tone1;


const byte pin10 =  10;

muchas gracias por el aporte,pero no veo mas alla de no poder lograrlo será una tonteria pero no doy con ello por mas que indago y pongo y quito, y pruebo y me da errores.

a ver.. pero si indagas y no estudas cada cosa... trabajas solo para copiar y pegar y ver si por prueba error anda y no comprendes que pasa.
Entiende que si te hago la sugerencia que veas los hilos de DOCUMENTACION es porque será util para ti.
Entender que pasa cuando da error y como resolverlo.

bueno yo ya te soluciioné el problema.

Espero que hay gente mas agradable que tú,no todos somos tan inteligentes audaces y superdotados como tú y sobre todo prepotente.

El compilador te esta diciendo que hay una variable no definida,un nombre que no "entiende".si has definido la variable pinRele como el pin que gestiona la señal del rele ,no puedes poner digitalWrite(pin10,HIGH) ,el compilador no sabe lo que es pin10.cambialo por digitalWrite(pinRele,HIGH) y compila,por lo menos ese error ya no deberia salir.

nuken:
Espero que hay gente mas agradable que tú,no todos somos tan inteligentes audaces y superdotados como tú y sobre todo prepotente.

Asi que instarte a estudiar me transforma en prepotente, cuando te he ayudado desde tu primer post casi inmediatamente de haberlo posteado?

Nadie nace sabiendo nuken, ni tu ni yo ni nadie. Asi que no ofende decirte que veas un tutorial y justo el que te recomiendo se lo recomiendo a muchísima gente. Si ya me has leído porque te enojas?

Bien... no se que mas escribir asi que no escribiré mas nada.

Finalmente, no leiste mi post#10 donde te doy la solución?
Es parte del comienzo de tu programa que termina con la definición de pin10 cuando dice.

const byte pin10 =  10;

Cuando entiendas que ya te lo había respondido espero te disculpes.

No veo tan complicado ayudar a donde poner las lineas correctamente en el codigo y que funcione a la perfeccion,yo e mirado y remirado los tutoriales y no se donde poner exactamente las lineas,el problema es que os creis algunos no digo todos que nos lo deis todo echo caso que no es el mio,por que cuando algun compañero me soluciona algo comparo el codigo original con el antiguo y veo donde a puesto lo que solicito y comparo y asi poco a poco voy desarrollando mas conocimientos,pero viendo solo videos por muy bien explicado que este que lo hace por ciertomuy bien , no son comparables con lo que quieres desarrollar en un caso concreto y especifico,si tuviera un tutorial de como poner un rele que salte al final de una funcion esta conversacion no daria a lugar alguno,por que veo declarar pin,lo hago en void setup,lo hago tb en void loop y no lo puedo conseguir que funcione caso que por ejemplo si quiero agregar leds que no es el caso si se hacerlo,como cambiar milisegundos y cosas que para vosotros es una chorrada pero para gente que no sabe y pone intencion de aprender vamos poco a poco.

Pero vamos que abandono mi proyecto ya mas que nada por agotamiento,cansancio y hastio y para rebocijo de otros que se queden tranquilos que no vengo a discutir con nadie y que nadie me trolee.

Suerte y gracias por vuestros comentarios.

El prepotente te sigue ayudando...
mira

C:/Users/Bichy/Documents/Arduino/Riego/Riego.ino:215:22: error: 'pin10' was not declared in this scope
         digitalWrite(pin10, HIGH);

este es el código de error que da el programa según tu reportas.
Qué dice esa línea ya que de los tutoriales no has podido comprenderlo.

Dice que el archivo que en mi caso esta en C:/Users/Bichy/Documents/Arduino/Riego/Riego.ino
tiene un error en la linea 215 columna 22 en la etiqueta pin10
Y cual es el error?
' pin10' was not declared in this scope
pin10 no fue declarada

Pero que declara tu programa... ahhh dice en la línea 11

const byte pinRele = 10;
entonces
lo cambias por

const byte pin10 = 10;
que fue lo que te dije varios post antes

Y como me vas a decir de nuevo que no funciona y como dices que no quieres que te lo hagan pero finalmente es lo que esperas, acá lo tiene, pero es mi ultima ayuda hacia a ti si no te disculpas y lo vuelvo a resaltar.

Yo no pude confirmar que compile porque no tengo ni voy a instalar Tone asi que cruza los dedos.

#include <Keypad.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
#include <Tone.h>
#define pound 14

Tone tone1;


const byte pin10 =  10;


int Scount = 10; // count seconds
int Mcount = 0; // count minutes
int Hcount = 0; // count hours
int DefuseTimer = 0; // set timer to 0

long secMillis = 0; // store last time for second add
long interval = 1000; // interval for seconds

char password[4] = {'0', '4', '8', '9'}; // PASSWORD E 1234 DEFINIDA AQUI!!!!
int currentLength = 0; //defines which number we are currently writing
int i = 0;
char entered[4];

int ledPin = 11; //red led
int ledPin2 = 13; //yellow led
int ledPin3 = 12; //green led

const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns
char keys[ROWS][COLS] = {
  {'1', '2', '3'},
  {'4', '5', '6'},
  {'7', '8', '9'},
  {'*', '0', '#'}
};
byte rowPins[ROWS] = {2, 3, 4, 5}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {6, 7, 8}; //connect to the column pinouts of the keypad

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup() {
  pinMode(ledPin, OUTPUT); // sets the digital pin as output
  pinMode(ledPin2, OUTPUT); // sets the digital pin as output
  pinMode(ledPin3, OUTPUT); // sets the digital pin as output
  tone1.begin(9);
  lcd.begin(16, 2);
  Serial.begin(9600);
  lcd.clear();
  lcd.setCursor(5, 0);

  lcd.print("CODIGO");
  while (currentLength < 4)
  {
    lcd.setCursor(currentLength + 6, 1);
    lcd.cursor();
    char key = keypad.getKey();
    key == NO_KEY;
    if (key != NO_KEY)
    {
      if ((key != '*') && (key != '#'))
      {
        lcd.print(key);
        password[currentLength] = key;
        currentLength++;
        tone1.play(NOTE_C6, 200);
      }
    }
  }

  if (currentLength == 4)
  {
    delay(500);
    lcd.noCursor();
    lcd.clear();
    lcd.home();
    lcd.print("PUERTA ACTIVADA");
    lcd.setCursor(6, 1);
    lcd.print(password[0]);
    lcd.print(password[1]);
    lcd.print(password[2]);
    lcd.print(password[3]);

    tone1.play(NOTE_E6, 200);
    delay(3000);
    lcd.clear();
    currentLength = 0;
  }
}

void loop()
{
  timer();
  char key2 = keypad.getKey(); // get the key

  if (key2 == '*')
  {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("CODIGO:");

    while (currentLength < 4)
    {

      timer();

      char key2 = keypad.getKey();
      if (key2 == '#')
      {
        currentLength = 0;
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("CODIGO");
      }
      else if (key2 != NO_KEY)
      {

        lcd.setCursor(currentLength + 7, 0);
        lcd.cursor();

        lcd.print(key2);
        entered[currentLength] = key2;
        currentLength++;
        tone1.play(NOTE_C6, 200);
        delay(100);
        lcd.noCursor();
        lcd.setCursor(currentLength + 6, 0);
        lcd.print("*");
        lcd.setCursor(currentLength + 7, 0);
        lcd.cursor();
      }
    }

    if (currentLength == 4)
    {
      if (entered[0] == password[0] && entered[1] == password[1] && entered[2] == password[2] && entered[3] == password[3])
      {
        lcd.noCursor();
        lcd.clear();
        lcd.home();
        lcd.print ("PUERTA");
        currentLength = 0;
        digitalWrite(ledPin3, HIGH);
        delay(2500);
        lcd.setCursor(3, 1);
        lcd.print("DESACTIVADA");
        delay(1000000);
      }
      else
      {
        lcd.noCursor();
        lcd.clear();
        lcd.home();
        lcd.print("  ERROR CODIGO");

        if (Hcount > 0)
        {
          Hcount = Hcount - 1;
        }

        if (Mcount > 0)
        {
          Mcount = Mcount - 59;
        }
        if (Scount > 0)
        {
          Scount = Scount - 59;
        }
        delay(1500);
        currentLength = 0;

      }
    }
  }
}

void timer()
{
  Serial.print(Scount);
  Serial.println();

  if (Hcount <= 0)
  {
    if ( Mcount < 0 )
    {
      lcd.noCursor();
      lcd.clear();
      lcd.home();
      lcd.print("APERTURA NULA");
      lcd.setCursor (2, 1);
      lcd.print("PUERTA CERRADA");

      while (Mcount < 0)
      {
        digitalWrite(ledPin, HIGH); // sets the LED on
        tone1.play(NOTE_A2, 90);
        delay(100);
        digitalWrite(ledPin, LOW); // sets the LED off
        tone1.play(NOTE_A2, 90);
        delay(100);
        digitalWrite(ledPin2, HIGH); // sets the LED on
        tone1.play(NOTE_A2, 90);
        delay(100);
        digitalWrite(ledPin2, LOW); // sets the LED off
        tone1.play(NOTE_A2, 90);
        delay(100);
        digitalWrite(ledPin3, HIGH); // sets the LED on
        tone1.play(NOTE_A2, 90);
        delay(100);
        digitalWrite(ledPin3, LOW); // sets the LED off
        tone1.play(NOTE_A2, 90);
        delay(100);
        digitalWrite(pin10, HIGH);


      }
    }
  }

  lcd.setCursor (0, 1); // sets cursor to 2nd line
  lcd.print ("QUEDAN:");

  if (Hcount >= 10)
  {
    lcd.setCursor (7, 1);
    lcd.print (Hcount);
  }
  if (Hcount < 10)
  {
    lcd.setCursor (7, 1);
    lcd.write ("0");
    lcd.setCursor (8, 1);
    lcd.print (Hcount);
  }

  lcd.print (":");

  if (Mcount >= 10)
  {
    lcd.setCursor (10, 1);
    lcd.print (Mcount);
  }
  if (Mcount < 10)
  {
    lcd.setCursor (10, 1);
    lcd.write ("0");
    lcd.setCursor (11, 1);
    lcd.print (Mcount);
  }

  lcd.print (":");

  if (Scount >= 10)
  {
    lcd.setCursor (13, 1);
    lcd.print (Scount);
  }
  if (Scount < 10)
  {
    lcd.setCursor (13, 1);
    lcd.write ("0");
    lcd.setCursor (14, 1);
    lcd.print (Scount);
  }

  if (Hcount < 0)
  {
    Hcount = 0;
  }

  if (Mcount < 0)
  {
    Hcount --;
    Mcount = 59;
  }

  if (Scount < 1) // if 60 do this operation
  {
    Mcount --; // add 1 to Mcount
    Scount = 59; // reset Scount
  }

  if (Scount > 0) // do this oper. 59 times
  {
    unsigned long currentMillis = millis();

    if (currentMillis - secMillis > interval)
    {
      tone1.play(NOTE_G5, 200);
      secMillis = currentMillis;
      Scount --; // add 1 to Scount
      digitalWrite(ledPin2, HIGH); // sets the LED on
      delay(10); // waits for a second
      digitalWrite(ledPin2, LOW); // sets the LED off
      delay(10); // waits for a second
      //lcd.clear();
      
    }
  }
}