Skip to main content

APERTURA DE PUERTA

Reto

Esta vez vamos a centrarnos con la apertura de la puerta, dejaremos el LDR para la alarma

  • Cuando se pulse el interruptor táctil (sería como una llave táctil)
    • Se abre la puerta
  • Al cabo de 5 segundos, tiempo suficiente para entrar
    • Se avisa que la puerta se va a cerrar con 3 pulsos buzzer
    • Se cierra la puerta
  • Por la pantalla del ordenador saldrán mensajes de apertura y cierre
Solución maqueta

Esta vez en la maqueta ponemos los siguientes elementos 1. Fijación placa Arduino 1. Fijación placa Arduino 1. Interruptor táctil 1. Buzzer 1. Servo 1. Portapilas

Detalle por delante

  1. Interruptor táctil
  2. Fijación servo
  3. Fijación servo
  4. Puerta *si, ya sé, un poco chapuza ¿y qué pasa? *

Solución esquema de conexiones

Es el mismo mostrado en APERTURA DE LA PUERTA, pero ahora vamos montando la maqueta:

  1. Terminales GND
  2. Terminales +5V
  3. Terminales Servo van aparte (ver nota) con D4 al control del servo
  4. Terminales
    1. D2 Interruptor táctil
    2. D3 Buzzer activo
  5. Interruptor táctil
  6. Buzzer activo
  7. Servo
  8. Led el pin largo en D13 y el corto en GND.

Nota: El servo al tener terminales hembra, se ha optado por conectarlo directamente en la placa protoboard utilizando machos machos como el de la figura:

Nota: Sí, ya sé que conectar el LED DIRECTAMENTE EN D13 no es una buena práctica, pero internamente Arduino tiene unas resistencias en cada entrada/salida de 30k que lo puede aguantar, o sea, no es lo correcto pero no pasa nada (y como es muy cómodo, y necesitamos espacio, optamos por lo práctico). Si lo pones al revés no funcionará (no se estropea nada pero asegúrate el pin largo al D13 y el corto al GND).

Solución video

Solución código

https:///////////////////////////////////////LIBRERIAScreate.arduino.cc/editor/javierquintana/f89a2537-117b-4140-806f-5c79ef4f684a/preview

#include

 ///////////////////////////////////////ENTRADAS

SALIDAS DIGITALES /////// // 0 ocupado por el puerto serie ordenador-arduino // 1 ocupado por el puerto serie ordenador-arduino const int PULSADORTIMBRE =2; //sensor tactil const int TIMBRE =3; //buzzer activo const int PUERTA = 4; //servo puerta const int LED = 13; ////////////////////////////////////// ENTRADAS ANALÓGICAS ///////////// ////////////////////////////////////// OBJETOS Servo myservo; //objeto servo ///////////////////////////////////////VARIABLES const int ABIERTO =0; //abierto puerta const int CERRADO =75; //cerrado puerta, se ha modificado con respecto al cierre total pues tropezaba con la pared bool PUERTAABIERTA; //guardará si está abierto o no /////////////////////////////////////FUNCIONES void CerrarPuerta(); ////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////INICIO ////////////////////////// ////////////////////////////////////////////////////////////////////////// void setup() { Serial.begin(9600); //inicializar el puerto serie del ordenador ////////////////////////////////fijar input/output pinMode(PULSADORTIMBRE, INPUT); pinMode(TIMBRE, OUTPUT); pinMode(PUERTA, OUTPUT); pinMode(LED,OUTPUT); ///////////////////////////////fijar situación inicial digitalWrite(TIMBRE,HIGH); // timbre apagado myservo.attach(PUERTA); //servo en el pin correspondiente myservo.write(CERRADO); //puerta cerrada PUERTAABIERTA = false; } ////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////BUCLE /////////////////////////// ////////////////////////////////////////////////////////////////////////// void loop() { //////////////////////////// timbre //////////////////////////////////////// if (digitalRead(PULSADORTIMBRE)){ Serial.println("Abriendo puerta .... "); PUERTAABIERTA=true; myservo.write(ABIERTO); delay(3000); CerrarPuerta(); } } ////////////////////////////////////////////////////////////////////////// //////////////////////////////////FUNCION CERRAR PUERTA//////////////////// ////////////////////////////////////////////////////////////////////////// void CerrarPuerta(){ if (PUERTAABIERTA){ for (int i=1;i