Contenido del curso

Problema 5

 

Activación del Sistema de Seguridad Nocturno

Eres el encargado de un laboratorio secreto que sólo puede activarse cuando cae la noche. Para proteger la entrada del laboratorio, se ha diseñado un sistema de seguridad nocturno que utiliza un sensor de luz (LDR) para detectar si es de día o de noche. Además, el sistema cuenta con dos luces de seguridad (LEDs), un botón para activar el sistema manualmente y una pantalla LCD para mostrar el estado actual del sistema.

Descripción del Sistema de Seguridad:

  • LDR (Sensor de Luz): El sensor de luz detecta el nivel de luminosidad ambiental. Si el sensor detecta que hay poca luz (es decir, está oscuro, simulando que es de noche), el sistema de seguridad nocturno podrá activarse.

    • Si el LDR detecta que es de noche (bajo nivel de luz), el sistema estará listo para ser activado.

  • 2 LEDs de Seguridad:

    • LED 1: Indica que es de día (el sistema no puede activarse).

    • LED 2: Indica que es de noche (el sistema está listo para activarse).

  • Botón de Activación: Si es de noche (indicado por el LED 2 encendido), el sistema de seguridad se activa al pulsar el botón. Una vez activado, el sistema encenderá ambos LEDs en señal de alerta.

Funcionamiento del Sistema:

  1. Detección de Luz:

    1. Si el LDR detecta un nivel alto de luz (es de día), el LED 1 se encenderá indicando que el sistema de seguridad no está listo para activarse, mientras la pantalla LCD mostrará "Es de día".

    2. Si el LDR detecta un nivel bajo de luz (es de noche), el LED 2 se encenderá indicando que el sistema está listo para ser activado, mientras la pantalla LCD mostrará "Es de noche".

  2. Activación del Sistema:

    1. Si el sistema detecta que es de noche (con el LED 2 encendido), se puede pulsar el botón para activar el sistema de seguridad.

    2. Al pulsar el botón, ambos LEDs (LED 1 y LED 2) parpadearán alternativamente como señal de que el sistema de seguridad está en modo alerta, mientras que la pantalla LCD mostrará "Sistema Activado".

Detalles del Hardware

  • LDR: Detecta los niveles de luz ambiental. Según la cantidad de luz que reciba, el sistema decidirá si es de día o de noche.

  • 2 Leds: El LED 1 indicará que es de día y el sistema de seguridad no está listo para activarse. El LED 2 indicará que es de noche y que el sistema está listo para activarse.

  • Botón: Se utilizará para activar el sistema de seguridad cuando el sensor de luz indique que es de noche.

  • Pantalla LCD: Mostrará el estado del sistema.


 

 

Tarea:

Escribe un programa que:

  • Lea el valor del LDR para determinar si es de día o de noche.

  • Controle los LEDs en función de la luz detectada y actualice la pantalla LCD con el mensaje correspondiente.

  • Controle el estado del sistema de seguridad al pulsar el botón, haciendo que ambos LEDs parpadeen y la pantalla LCD muestre "Sistema Activado".

  • Cuando el sistema esté activado, si se vuelve a pulsar el botón se desactiva el sistema y la pantalla LCD vuelve a mostrar "Es de día" o "Es de noche" según corresponda.

// Incluir las librerías necesarias
#include <MentorBitPantallas.h>

// Declaración de instancia de la clase
MentorBitPantallas miMentorBitPantallas;

// Crear las variables a utilizar
int Activacion = 0;

// Definir los pines en los que van conectados los componentes electrónicas
#define LEDVerde 6
#define LEDRojo 5

// Inicialización del sketch
void setup() {

  // Inicializar pantalla LCD
  miMentorBitPantallas.inicializarLCD();
  miMentorBitPantallas.lcd.backlight();
  miMentorBitPantallas.lcd.clear();

  // Indicar los pines que serían salidas
  pinMode(LEDRojo, OUTPUT);
  pinMode(LEDVerde, OUTPUT);

}

void loop() {
  
  // En caso de que el valor de la variable sea igual a 0
  if(Activacion == 0){

    // Leer el pin analógico A1, siendo este el LDR
    // Si es menor a 512
    if(analogRead(A1) < 512){

      // Encender Led Verde y Apagar Led Rojo
      digitalWrite(LEDRojo,0);
      digitalWrite(LEDVerde,1);

      // Imprimir por pantalla LCD el estado del Sistema
      miMentorBitPantallas.lcd.setCursor(0,0);
      miMentorBitPantallas.lcd.print("Es de noche     ");

      // Leer el pin digital 23, siendo este el botón normalmente en baja
      if(digitalRead(23) == 1){

        // Cambiar el valor de la variable Activacion a 1
        Activacion = 1;

        // Esperar 0.3 segundos
        delay(300);

        // Imprimir por pantalla LCD el estado del Sistema
        miMentorBitPantallas.lcd.setCursor(0,0);
        miMentorBitPantallas.lcd.print("Sistema Activado");

      }
    }

    // Si no es menor a 512
    else{

      // Encender Led Rojo y Apagar Led Verde
      digitalWrite(LEDRojo,1);
      digitalWrite(LEDVerde,0);

      // Indicar por pantalla LCD el estado del Sistema
      miMentorBitPantallas.lcd.setCursor(0,0);
      miMentorBitPantallas.lcd.print("Es de dia       ");

      // Esperar 0.3 segundos
      delay(300);

    }
  }

  // Si el valor de la variable no es 0
  else{

    // Encender Led Rojo y Apagar Led Verde
    digitalWrite(LEDRojo,1);
    digitalWrite(LEDVerde,0);

    // Esperar 0.5 segundos
    delay(500);

    // Leer el pin digital 23, siendo este el botón normalmente en baja
    if(digitalRead(23) == 1){

      // Cambiar el valor de la variable a 0
      Activacion = 0;

    }

    // Encender Led Verde y Apagar Led Rojo
    digitalWrite(LEDRojo,0);
    digitalWrite(LEDVerde,1);

    // Esperar 0.5 segundos
    delay(500);

    // Leer el pin digital 23, siendo este el botón normalmente en baja
    if(digitalRead(23) == 1){

      // Cambiar el valor de la variable a 0
      Activacion = 0;
      
    }
  }
}

 

 

Desafío Adicional

Implementa un temporizador para que, después de 10 segundos de que el sistema esté activado, vuelva al estado inicial, mostrando este tiempo en el display 7 segmento.


// Incluir las librerías necesarias
#include <MentorBitPantallas.h>
#include <MentorBitDisplay.h>

// Declaración de instancia de la clase
MentorBitPantallas miMentorBitPantallas;
MentorBitDisplay miMentorBitDisplay;

// Crear las variables a utilizar
int Activacion = 0;
int Tiempo = 10;

// Definir los pines en los que van conectados los componentes electrónicas
#define LEDVerde 6
#define LEDRojo 5

// Inicialización del sketch
void setup() {

  // Inicializar pantalla LCD
  miMentorBitPantallas.inicializarLCD();
  miMentorBitPantallas.lcd.backlight();
  miMentorBitPantallas.lcd.clear();

  // Inicializar el Display
  miMentorBitDisplay.inicializarDisplay();
  miMentorBitDisplay.imprimir(0);

  // Indicar los pines que serían salidas
  pinMode(LEDRojo, OUTPUT);
  pinMode(LEDVerde, OUTPUT);

}

void loop() {
  
  // En caso de que el valor de la variable sea igual a 0
  if(Activacion == 0){

    // Leer el pin analógico A1, siendo este el LDR
    // Si es menor a 512
    if(analogRead(A1) < 512){

      // Encender Led Verde y Apagar Led Rojo
      digitalWrite(LEDRojo,0);
      digitalWrite(LEDVerde,1);

      // Imprimir por pantalla LCD el estado del Sistema
      miMentorBitPantallas.lcd.setCursor(0,0);
      miMentorBitPantallas.lcd.print("Es de noche     ");

      // Leer el pin digital 23, siendo este el botón normalmente en baja
      if(digitalRead(23) == 1){

        // Cambiar el valor de la variable Activacion a 1
        Activacion = 1;

        // Esperar 0.3 segundos
        delay(300);

        // Imprimir por pantalla LCD el estado del Sistema
        miMentorBitPantallas.lcd.setCursor(0,0);
        miMentorBitPantallas.lcd.print("Sistema Activado");

      }
    }

    // Si no es menor a 512
    else{

      // Encender Led Rojo y Apagar Led Verde
      digitalWrite(LEDRojo,1);
      digitalWrite(LEDVerde,0);

      // Indicar por pantalla LCD el estado del Sistema
      miMentorBitPantallas.lcd.setCursor(0,0);
      miMentorBitPantallas.lcd.print("Es de dia       ");

      // Esperar 0.3 segundos
      delay(300);

    }
  }

  // Si el valor de la variable no es 0
  else{

    // Imprimir por Display el valor de Tiempo
    miMentorBitDisplay.imprimir(Tiempo);

    // Encender Led Rojo y Apagar Led Verde
    digitalWrite(LEDRojo,1);
    digitalWrite(LEDVerde,0);

    // Esperar 0.5 segundos
    delay(500);

    // Leer el pin digital 23, siendo este el botón normalmente en baja
    if(digitalRead(23) == 1){

      // Cambiar el valor de la variable a 0
      Activacion = 0;
      //Reseteamos temporizador a valor inicial
      Tiempo = 10;

      // Imprimir por Display el valor 0
      miMentorBitDisplay.imprimir(0);

    }

    // Encender Led Verde y Apagar Led Rojo
    digitalWrite(LEDRojo,0);
    digitalWrite(LEDVerde,1);

    // Esperar 0.5 segundos
    delay(500);


    // Leer el pin digital 23, siendo este el botón normalmente en baja
    if(digitalRead(23) == 1){

      // Cambiar el valor de la variable a 0
      Activacion = 0;
      //Reseteamos temporizador a valor inicial
      Tiempo = 10;

      // Imprimir por Display el valor 0
      miMentorBitDisplay.imprimir(0);

    }

    // Disminuir el valor de la variable Tiempo en -1
    Tiempo -= 1;

    // Si el valor de la variable es igual a 0
    if(Tiempo == 0){

      // Cambiar el valor de la variable a 0
      Activacion = 0;
      //Reseteamos temporizador a valor inicial
      Tiempo = 10;

      // Imprimir por Display el valor 0
      miMentorBitDisplay.imprimir(0);
      
    }
  }
}
Vistas
12 Número de vistas
12 Vistas de miembros
0 Vistas públicas
Acciones
0 Gustos
0 No me gusta
0 Comentarios
Compartir en redes sociales
Compartir enlace
Compartir por correo

Por favor iniciar sesión para compartir esto webpage por correo.