Contenido del curso

Proyecto Final 4 

 

Contador de Visitantes en un Museo

Imagina que trabajas en un museo y te han encargado llevar el control preciso de la cantidad de visitantes que ingresan diariamente. Esto no solo ayudará a gestionar mejor los recursos y el personal, sino que también permitirá generar estadísticas sobre la afluencia de público a lo largo del tiempo.

Tu tarea es programar el MentorBit para desarrollar un contador de visitantes que registre el número de personas que ingresan al museo y almacene los datos en la tarjeta Micro SD. El sistema también deberá mostrar la cantidad actual de visitantes en el Display 7 Segmentos, permitiendo al personal visualizar la afluencia en tiempo real.

Utilizarás un pulsador para simular un sensor de movimiento colocado a la entrada del museo para detectar la entrada de los visitantes. Cada vez que detecte un movimiento que indique la entrada de una persona, el contador se incrementará en uno. También utilizarás un segundo botón para hacer lo mismo con la salida del museo, restando en uno el contador en este caso.

El número total de visitantes se almacenará en un archivo de texto, que se llamará como quieras, en la tarjeta Micro SD de manera constante. Cada vez que se registre un nuevo visitante, el sistema deberá actualizar este archivo. De esta manera podremos posteriormente sacar los datos para analizar la afluencia del museo a lo largo del día, la semana o el mes.

Para ello vamos a utilizar los siguientes componentes del MentorBit:

  • Display 7 Segmentos

  • RTC y SD

  • 2 Pulsadores

// Proyecto - Control de visitantes en un Museo

// Incluimos las librerías necesarias
#include <MentorBit.h>
#include <MentorBitDisplay.h>
#include <MentorBitDataLogger.h>

// Creamos los objetos que nos permitan trabajar con las clases
MentorBit miMentorBit;
MentorBitDisplay miDisplay;
MentorBitDataLogger miDataLogger;

// Variable para guardar la cuenta de visitantes
int numero_de_visitantes = 0;

// Variable para indicar que se ha modificado la cuenta y hay que guardarla en la Micro SD
bool se_ha_modificado_la_cuenta = false;

// Variable con el nombre del Archivo que vamos a emplear
String archivo = "Registro.txt";

// Inicialización del código
void setup() {

    // Inicializamos el Display 7 Segmentos
    miDisplay.inicializarDisplay();
    // Inicializamos y configuramos el RTC
    miDataLogger.inicializarRTC();
    miDataLogger.ajustarHoraRTC();
    // Comprobamos que la Tarjeta Micro SD se inicialice correctamente
    if(!miDataLogger.inicializarSD()) {
        // Mostramos un mensaje por Display indicando un error con la SD
        miDisplay.imprimir("ERR");
        while(true) {} // Código bloqueante para no avanzar sin Tarjeta Micro SD
    }
    // Guardamos un primer mensaje distintivo al comienzo de la cuenta
    miDataLogger.escribirEnArchivo(archivo, "---- Registro de visitantes ----");
    // Imprimimos el número inicial de visitantes
    miDisplay.imprimir(numero_de_visitantes);

}

// Bucle principal de funcionamiento
void loop() {

    // Comprobamos que se detecta un visitante que ha entrado
    if(digitalRead(miMentorBit.PULSADOR_PULLDOWN_DIGITAL) == HIGH) {

        // Aumentamos la cuenta de visitantes
        numero_de_visitantes++;
        // Actualizamos el indicador de guardado
        se_ha_modificado_la_cuenta = true;

    }
    // Comprobamos que se detecta un visitante que ha salido
    if(digitalRead(miMentorBit.PULSADOR_PULLDOWN_ANALOGICO) == HIGH) {

        // Comprobamos que no haya un error y quiera restarse un visitante habiendo 0
        if(numero_de_visitantes > 0) {
            // Disminuimos la cuenta de visitantes
            numero_de_visitantes--;
            // Actualizamos el indicador de guardado
            se_ha_modificado_la_cuenta = true;
        }

    }
    // Comprobamos que se haya actualizado la cuenta de visitantes
    if(se_ha_modificado_la_cuenta) {

        // Imprimimos la cuenta de visitantes actual por el Display 7 Segmentos
        miDisplay.imprimir(numero_de_visitantes);
        // Obtenemos la fecha y hora actuales del RTC
        String fecha_y_hora = miDataLogger.obtenerHoraRTC();
        // Construimos el registro a guardar en la tarjeta Micro SD
        String registro = fecha_y_hora + "-" + String(numero_de_visitantes);
        // Guardamos el registro en la Micro SD
        miDataLogger.escribirEnArchivo(archivo, registro);
        // Actualizamos de nuevo el indicador de guardado
        se_ha_modificado_la_cuenta = false;
        // Esperamos un poco antes de continuar
        delay(100);

    }

}
Vistas
19 Número de vistas
19 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.