#include <EEPROM.h>
#include <SevSeg.h>
SevSeg sevseg; // Crea una instancia de la clase SevSeg
const int Entrada = 32; // Pin para el sensor de entrada
const int Salida = 33; // Pin para el sensor de salida
int asientosDisponibles = 30;
int numeroPasajeros = 0;
void setup() {
Serial.begin(9600); // Inicia la comunicación serial
pinMode(Entrada, INPUT_PULLUP);
pinMode(Salida, INPUT_PULLUP);
byte hardwareConfig = COMMON_ANODE; // Cambia a COMMON_ANODE si tus
byte numDigitos = 3; // Número de dígitos del display
byte pinesDigitos[] = { 18, 5}; // Pines conectados a los dígitos del display
byte pinesSegmentos[] = {17, 16, 4, 2, 15, 8, 7, 6}; // Pines conectados a los segmentos
sevseg.begin(hardwareConfig, numDigitos, pinesDigitos, pinesSegmentos);
// Inicializa el número de pasajeros desde la memoria EEPROM al
EEPROM.begin(512); // Tamaño de EEPROM, ajusta según tus necesidades
EEPROM.get(0, numeroPasajeros);
actualizarDisplays();
}
void loop() {
if (digitalRead(Entrada) == LOW) {
numeroPasajeros++;
asientosDisponibles--;
actualizarDisplays();
guardarNumeroPasajerosEnMemoria();
enviarDatosLabVIEW(); // Envía datos a LabVIEW
delay(500); // Evita múltiples incrementos por un solo botón
}
// Verifica la salida
if (digitalRead(Salida) == LOW) {
if (numeroPasajeros > 0) {
numeroPasajeros--;
asientosDisponibles++;
actualizarDisplays();
guardarNumeroPasajerosEnMemoria();
enviarDatosLabVIEW(); // Envía datos a LabVIEW
delay(500);
}
}
sevseg.setBrightness(100);
sevseg.setNumber(asientosDisponibles);
sevseg.refreshDisplay();
delay(5);
sevseg.setBrightness(0);
sevseg.setNumber(numeroPasajeros);
sevseg.refreshDisplay();
delay(5); // Puedes ajustar la velocidad del barrido aquí
}
void actualizarDisplays() {
// Actualiza los displays de 7 segmentos con la cantidad de asientos
sevseg.setNumber(asientosDisponibles);
}
void guardarNumeroPasajerosEnMemoria() {
// Guarda el número de pasajeros en la memoria EEPROM
EEPROM.put(0, numeroPasajeros);
EEPROM.commit(); // Asegúrate de realizar el commit después de poner
}
void enviarDatosLabVIEW() {
// Envía el número de pasajeros a LabVIEW a través de la comunicación serial
Serial.println(numeroPasajeros);
}