// (o\---/o)
// ( , , )
// ___,--.(_(Y)_),--.____
//| "--" "--" |
//| Don't Worry Be Happy |
//| HECTOR E. VILLARREAL |
//| 2023 |
//|______________________|
// ) | (
// (___,'.___)
//CONTROL DE Aforo con pulsadores
//---------------------------------------------------------------------------------------------------
//Librerias
#include <LiquidCrystal.h>
//--------------------------------------------------------------
//Declaración de los PULSADORES
//--------------------------------------------------------------
int entrada=0; // variable entrada
int salida=0; // variable salida
int entradag=0; // variable entrada a googlesheets
int salidag=0; // variable salida s goglesheets
byte Pe = 2; //Pulsador entrada
byte Ps = 3; //Pulsador salida
long pmpreviousMillis = 0;
int r = 300;
//--------------------------------------------------------------
//Declaración de los LCD, led interno y BUZZER
//--------------------------------------------------------------
//Set LCD
LiquidCrystal lcd(A5, A4, A3, A2, A1, A0); // Corresponde a (RS, EN, D4, D5, D6, D7)
int buzzer = 7;
int led = 4;
const int ledPin = LED_BUILTIN; // led builtin
int ledState = LOW; // ledState used to set the LED
int ledState1 = LOW; // ledState used to set the LED
long previousMillis = 0;
long previousMillis1 = 0;
long interval = 500; // tiempo que queremos destelle el led
long interval1 = 3000; // tiempo antes de comunicar a googlesheets
//--------------------------------------------------------------
//INICIALIZACION y CONFIGURACION del sistema
//--------------------------------------------------------------
void setup() {
// inicializamos el puerto serie:
Serial.begin(9600);
//Configura los 2 Pines de Pulsadores como ENTRADAS digitales
pinMode(2,INPUT);
pinMode(3,INPUT);
//--------------------------------------------------------------
//Configura los Pines como SALIDAS
pinMode(buzzer, OUTPUT); //Configura la salida de BUZZER
digitalWrite(LED_BUILTIN,LOW); //Coloca la salida de LED en LOW
digitalWrite(buzzer, LOW);
//--------------------------------------------------------------
//Configura primera linea LCD
lcd.begin(16, 2); // Tipo de LCD
lcd.setCursor(0, 0); // Selecciono la Primera linea
lcd.print("Contr. Aforo 1.0"); // escribimos en la primera linea
}
//--------------------------------------------------------------
//Programa PRINCIPAL LOOP
//--------------------------------------------------------------
void loop() {
digitalWrite(buzzer, LOW);
lcd.setCursor(0, 1);
lcd.print("IN=");
lcd.print(entrada);
lcd.print(" OUT=");
lcd.print(salida);
//--------------------------------------------------------------
// Ajuste de destello del led LED_BUILTIN
//--------------------------------------------------------------
unsigned long currentMillis1 = millis();
if (currentMillis1 - previousMillis1 >= interval1) {
// save the last time you blinked the LED
previousMillis1 = currentMillis1;
Serial.print("Entrada= ");
Serial.println(entradag);
Serial.print("Salida= ");
Serial.println(salidag);
delay(r); //Anti-Rebote
salidag = 0;
entradag = 0;
}
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) { // save the last time you blinked the LED
previousMillis = currentMillis;
if (ledState == LOW) {
ledState = HIGH;
}
else {
ledState = LOW;
}
// set the LED with the ledState of the variable:
digitalWrite(led, ledState);
}
//--------------------------------------------------------------
// Pulsador entrada
//--------------------------------------------------------------
if(digitalRead(Pe)) { // Pregunta si pulsador horario fue presionado
delay(r); //Anti-Rebote
digitalWrite(buzzer, HIGH);
entrada=entrada + 1; //Contador general
entradag = entradag + 1; //Contador para envío
}
//--------------------------------------------------------------
// Pulsador salida
//--------------------------------------------------------------
if(digitalRead(Ps)) { // Pregunta si pulsador Antihorario fue presionado
delay(r); //Anti-Rebote
digitalWrite(buzzer, HIGH);
salida=salida + 1; //Contador general
salidag = salidag + 1; //Contador para envío
}
//--------------------------------------------------------------
}
//--------------------------------------------------------------
// FIN del programa
//--------------------------------------------------------------