# Proyecto domotica, cerradura electronica y control de iluminacion

**URL:** <https://forum.arduino.cc/t/proyecto-domotica-cerradura-electronica-y-control-de-iluminacion/1156047>\
**Category:** Software\
**Created:** [August 8, 2023, 1:33am UTC](https://forum.arduino.cc/t/proyecto-domotica-cerradura-electronica-y-control-de-iluminacion/1156047 "2023-08-08T01:33:45Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![eliasarduinomanda](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/eliasarduinomanda/32/991608_2.png) [@eliasarduinomanda](https://forum.arduino.cc/u/eliasarduinomanda)\
**Post date:** [August 8, 2023, 1:33am UTC](https://forum.arduino.cc/t/proyecto-domotica-cerradura-electronica-y-control-de-iluminacion/1156047/1 "2023-08-08T01:33:45Z")

</div>

Buenas noches, me gustaria saber que parametro no estoy teniendo en cuenta o que problema podria tener mi codigo. Anteriormente utilice switch() y tampoco funciono. El problema es que despues de que suena el buzzer con la funcion de tone() no me vuelve a ejecutar ningun condicional o case() del control remoto.  
Este es mi codigo:  
#include \<IRremote.h\>  
#define SW\_1 0xE13830DE  
#define SW\_2 0x9929519F  
#define SW\_3 0xA182EBF  
int sensor= 0;  
int fria=12;  
int calida=13;  
int positivo=1;  
IRrecv irrecv(sensor);  
decode\_results IRcontrol;

#include \<Servo.h\>  
Servo servo;

#include \<Keypad.h\>

const byte Filas = 4;  
const byte Columnas = 4;  
byte PinFilas[4] = {9,8,7,6};  
byte PinColumnas[4] = {5,4,3,2};

char Teclas [Filas][Columnas] =  
{  
{'1','2','3','A'},  
{'4','5','6','B'},  
{'7','8','9','C'},  
{'\*','0','#','D'}  
};

char codigoSecreto[6] = {'1','2','3','4','5','6'};  
int posicion=0;  
int ledVerde=A0;  
int ledRojo=A1;  
int pulsador=A5;  
int buzz=10;

Keypad Teclado = Keypad(makeKeymap(Teclas), PinFilas, PinColumnas, Filas, Columnas);

void setup()  
{  
Serial.begin(9600) ;  
irrecv.enableIRIn();  
pinMode(fria, OUTPUT);  
pinMode(calida, OUTPUT);  
pinMode(positivo,OUTPUT);  
pinMode (ledVerde,OUTPUT);  
pinMode (ledRojo, OUTPUT);  
pinMode (buzz, OUTPUT);  
pinMode (sensor, INPUT);  
servo.attach(11);  
servo.write(180);  
}

void loop()  
{  
digitalWrite(positivo,HIGH);

if (irrecv.decode(&IRcontrol))  
{

```
Serial.println(IRcontrol.value, HEX);
if (IRcontrol.value ==SW_1)
  {
 digitalWrite(fria,!digitalRead(fria));
 delay(100);
  }
 if(IRcontrol.value== SW_2)
  {
 digitalWrite(calida,!digitalRead(calida));
 delay(100);
  }
 if(IRcontrol.value== SW_3)
  {
 correcto();
  }
  irrecv.resume();
 }

```

int switchInter=analogRead(pulsador);  
if (switchInter\>=1000)  
{  
correcto();  
}

```
  char tecla = Teclado.getKey() ; //teclado
   
 if (tecla != 0) 
    {
     
  if (tecla == codigoSecreto[posicion])
   {
      posicion ++; 
   }
  if (posicion == 6)
  {
    Serial.println("Clave correcta ");        
    correcto();  
    }
  if(tecla=='*')
   {
   Serial.println("reinicio");      
   posicion=0;
   analogWrite(ledRojo,255); // encendemos el LED rojo
   analogWrite(ledVerde, 0); // apagamos el verde
   }  
  if(tecla=='A')
  {
   Serial.println("timbre");
   DO(); DO(); DO();
   delay(20);
   FA();LA();
   delay(120);
   DO();DO();DO();
   delay(20);
   FA();LA();
   delay(120);
   FA();FA();MI();MI();RE();RE();
   delay(20);
   tone(buzz,523.25, 700);
   posicion=0; 
   irrecv.resume(); 
   }

    }

```

}  
void correcto()  
{  
analogWrite(ledRojo,0);  
analogWrite(ledVerde, 255);  
analogWrite(ledRojo,0);  
servo.write(180);  
delay(1000);  
servo.write(0);  
delay(3000);  
servo.write(180);  
delay(1000);  
analogWrite(ledVerde,0);  
analogWrite(ledRojo,255);  
posicion =0;  
}  
void DO()  
{  
tone(buzz,523.25, 120);  
delay(160);  
}  
void FA()  
{  
tone(buzz,698.46, 120);  
delay(200);  
}  
void LA()  
{  
tone(buzz,880, 200);  
delay(240);  
}  
void MI()  
{  
tone(buzz,659.26, 120);  
delay(160);  
}  
void RE()  
{  
tone(buzz,587.33, 120);  
delay(160);  
}

---

<div class="post-metadata">

**Author:** ![pert](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/pert/32/217111_2.png) [@pert](https://forum.arduino.cc/u/pert)\
**Post date:** [August 8, 2023, 2:11am UTC](https://forum.arduino.cc/t/proyecto-domotica-cerradura-electronica-y-control-de-iluminacion/1156047/2 "2023-08-08T02:11:13Z")

</div>

He trasladado su tema de una categoría de idioma inglés del foro a la categoría **International \> Español** @eliasarduinomanda.

En adelante por favor usar la categoría apropiada a la lengua en que queráis publicar. Esto es importante para el uso responsable del foro, y esta explicado aquí [la guía " **How to get the best out of this forum**"](https://forum.arduino.cc/t/how-to-get-the-best-out-of-this-forum/679966).  
Este guía contiene mucha información útil. Por favor leer.

De antemano, muchas gracias por cooperar.

---

<div class="post-metadata">

**Author:** ![MaximoEsfuerzo](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/maximoesfuerzo/32/923798_2.png) [@MaximoEsfuerzo](https://forum.arduino.cc/u/MaximoEsfuerzo)\
**Post date:** [August 8, 2023, 3:41am UTC](https://forum.arduino.cc/t/proyecto-domotica-cerradura-electronica-y-control-de-iluminacion/1156047/3 "2023-08-08T03:41:11Z")

</div>

Por favor **edita** tu post y adjunta el código de acuerdo a las [Normas del Foro en Español](https://forum.arduino.cc/t/normas-del-foro-en-espanol/300112/4), punto **7**. También usa la opción "Autoformato" del menú "Herramientas" de la IDE antes de copiar el código así nos facilitas su lectura.

Mientras tanto, no aclaras cuál placa usas pero si es una UNO, Nano o Mega, los pines analógicos no trabajan con PWM entonces

```arduino
analogWrite(ledRojo, 0);
analogWrite(ledVerde, 255);

```

no funciona.  
En este caso lo correcto es

```arduino
digitalWrite(ledRojo, LOW);
digitalWrite(ledVerde, HIGH);

```

Por otro lado, leer un pulsador/botón de este modo

```arduino
int switchInter = analogRead(pulsador);
if (switchInter >= 1000) {
  correcto();
}

```

no tiene sentido.  
Un pulsador solo tiene 2 estados (pulsado / no pulsado) que según como esté conectado se corresponderán con LOW / HIGH o HIGH / LOW.  
Como los pines analógicos también funcionan como digitales (con excepción de A6 y A7 en el Nano), lo más adecuado es

```arduino
byte switchInter = digitalRead(pulsador);
if (switchInter == HIGH) { // o simplemente if(switchInter) {

```

---

<div class="post-metadata">

**Author:** ![system](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/system/32/1140315_2.png) [@system](https://forum.arduino.cc/u/system)\
**Post date:** [February 4, 2024, 3:41am UTC](https://forum.arduino.cc/t/proyecto-domotica-cerradura-electronica-y-control-de-iluminacion/1156047/4 "2024-02-04T03:41:14Z")

</div>

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.
