Control de Aforo con Arduino y Sensores Ultrasónicos
Sistema de Control de Aforo con Arduino
A continuación se presentan los módulos de código programados para la detección de entrada (ENTRAN) y salida (SALEN) de personas utilizando sensores ultrasónicos, indicador LED y visualización en pantalla LCD con interfaz I2C.
Módulo 1: Detección de Entrada (ENTRAN)
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int trigger1 = 2;
int echo1 = 3;
float distsensor1;
int led = 13;
int contador = 0;
void setup()
{
pinMode(trigger1, OUTPUT);
pinMode(echo1, INPUT);
pinMode(led, OUTPUT);
lcd.init();
lcd.backlight();
lcd.print("Hola");
Serial.begin(9600);
}
void loop()
{
digitalWrite(trigger1, LOW);
delayMicroseconds(5);
digitalWrite(trigger1, HIGH);
delayMicroseconds(10);
digitalWrite(trigger1, LOW);
distsensor1 = pulseIn(echo1, HIGH);
distsensor1 = distsensor1 / 58;
if ((distsensor1 <= 40) && (contador <= 9)) {
lcd.clear();
lcd.print("Entro alguien");
lcd.setCursor(0, 1);
lcd.print("Contador: ");
contador += 1;
lcd.print(contador);
delay(500);
if (contador == 10) {
lcd.clear();
lcd.print("Ya estamos todos");
lcd.setCursor(0, 1);
lcd.print("Contador: ");
lcd.print(contador);
digitalWrite(led, HIGH);
}
}
}Módulo 1: Detección de Salida (SALEN)
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int trigger2 = 4;
int echo2 = 5;
float distsensor2;
int led = 13;
int contador = 9;
void setup()
{
pinMode(trigger2, OUTPUT);
pinMode(led, OUTPUT);
pinMode(echo2, INPUT);
lcd.init();
lcd.backlight();
lcd.print("Hola");
Serial.begin(9600);
}
void loop()
{
digitalWrite(trigger2, LOW);
delayMicroseconds(5);
digitalWrite(trigger2, HIGH);
delayMicroseconds(10);
digitalWrite(trigger2, LOW);
distsensor2 = pulseIn(echo2, HIGH);
distsensor2 = distsensor2 / 58;
if ((distsensor2 <= 40) && (contador >= 1)) {
lcd.clear();
lcd.print("Salio alguien");
lcd.setCursor(0, 1);
lcd.print("Contador: ");
contador -= 1;
lcd.print(contador);
delay(500);
digitalWrite(led, LOW);
}
}Módulo 2: Detección de Entrada (ENTRAN)
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int trigger1 = 2;
int echo1 = 3;
float distsensor1;
int led = 13;
int contador = 0;
void setup()
{
pinMode(trigger1, OUTPUT);
pinMode(echo1, INPUT);
pinMode(led, OUTPUT);
lcd.init();
lcd.backlight();
lcd.print("Hola");
Serial.begin(9600);
}
void loop()
{
digitalWrite(trigger1, LOW);
delayMicroseconds(5);
digitalWrite(trigger1, HIGH);
delayMicroseconds(10);
digitalWrite(trigger1, LOW);
distsensor1 = pulseIn(echo1, HIGH);
distsensor1 = distsensor1 / 58;
if ((distsensor1 <= 40) && (contador <= 9)) {
lcd.clear();
lcd.print("Entro alguien");
lcd.setCursor(0, 1);
lcd.print("Contador: ");
contador += 1;
lcd.print(contador);
delay(500);
if (contador == 10) {
lcd.clear();
lcd.print("Ya estamos todos");
lcd.setCursor(0, 1);
lcd.print("Contador: ");
lcd.print(contador);
digitalWrite(led, HIGH);
}
}
}Módulo 2: Detección de Salida (SALEN)
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int trigger2 = 4;
int echo2 = 5;
float distsensor2;
int led = 13;
int contador = 9;
void setup()
{
pinMode(trigger2, OUTPUT);
pinMode(led, OUTPUT);
pinMode(echo2, INPUT);
lcd.init();
lcd.backlight();
lcd.print("Hola");
Serial.begin(9600);
}
void loop()
{
digitalWrite(trigger2, LOW);
delayMicroseconds(5);
digitalWrite(trigger2, HIGH);
delayMicroseconds(10);
digitalWrite(trigger2, LOW);
distsensor2 = pulseIn(echo2, HIGH);
distsensor2 = distsensor2 / 58;
if ((distsensor2 <= 40) && (contador >= 1)) {
lcd.clear();
lcd.print("Salio alguien");
lcd.setCursor(0, 1);
lcd.print("Contador: ");
contador -= 1;
lcd.print(contador);
delay(500);
digitalWrite(led, LOW);
}
}Módulo 3: Detección de Entrada (ENTRAN)
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int trigger1 = 2;
int echo1 = 3;
float distsensor1;
int led = 13;
int contador = 0;
void setup()
{
pinMode(trigger1, OUTPUT);
pinMode(echo1, INPUT);
pinMode(led, OUTPUT);
lcd.init();
lcd.backlight();
lcd.print("Hola");
Serial.begin(9600);
}
void loop()
{
digitalWrite(trigger1, LOW);
delayMicroseconds(5);
digitalWrite(trigger1, HIGH);
delayMicroseconds(10);
digitalWrite(trigger1, LOW);
distsensor1 = pulseIn(echo1, HIGH);
distsensor1 = distsensor1 / 58;
if ((distsensor1 <= 40) && (contador <= 9)) {
lcd.clear();
lcd.print("Entro alguien");
lcd.setCursor(0, 1);
lcd.print("Contador: ");
contador += 1;
lcd.print(contador);
delay(500);
if (contador == 10) {
lcd.clear();
lcd.print("Ya estamos todos");
lcd.setCursor(0, 1);
lcd.print("Contador: ");
lcd.print(contador);
digitalWrite(led, HIGH);
}
}
}Módulo 3: Detección de Salida (SALEN)
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int trigger2 = 4;
int echo2 = 5;
float distsensor2;
int led = 13;
int contador = 9;
void setup()
{
pinMode(trigger2, OUTPUT);
pinMode(led, OUTPUT);
pinMode(echo2, INPUT);
lcd.init();
lcd.backlight();
lcd.print("Hola");
Serial.begin(9600);
}
void loop()
{
digitalWrite(trigger2, LOW);
delayMicroseconds(5);
digitalWrite(trigger2, HIGH);
delayMicroseconds(10);
digitalWrite(trigger2, LOW);
distsensor2 = pulseIn(echo2, HIGH);
distsensor2 = distsensor2 / 58;
if ((distsensor2 <= 40) && (contador >= 1)) {
lcd.clear();
lcd.print("Salio alguien");
lcd.setCursor(0, 1);
lcd.print("Contador: ");
contador -= 1;
lcd.print(contador);
delay(500);
digitalWrite(led, LOW);
}
}Módulo 4: Detección de Entrada (ENTRAN)
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int trigger1 = 2;
int echo1 = 3;
float distsensor1;
int led = 13;
int contador = 0;
void setup()
{
pinMode(trigger1, OUTPUT);
pinMode(echo1, INPUT);
pinMode(led, OUTPUT);
lcd.init();
lcd.backlight();
lcd.print("Hola");
Serial.begin(9600);
}
void loop()
{
digitalWrite(trigger1, LOW);
delayMicroseconds(5);
digitalWrite(trigger1, HIGH);
delayMicroseconds(10);
digitalWrite(trigger1, LOW);
distsensor1 = pulseIn(echo1, HIGH);
distsensor1 = distsensor1 / 58;
if ((distsensor1 <= 40) && (contador <= 9)) {
lcd.clear();
lcd.print("Entro alguien");
lcd.setCursor(0, 1);
lcd.print("Contador: ");
contador += 1;
lcd.print(contador);
delay(500);
if (contador == 10) {
lcd.clear();
lcd.print("Ya estamos todos");
lcd.setCursor(0, 1);
lcd.print("Contador: ");
lcd.print(contador);
digitalWrite(led, HIGH);
}
}
}Módulo 4: Detección de Salida (SALEN)
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int trigger2 = 4;
int echo2 = 5;
float distsensor2;
int led = 13;
int contador = 9;
void setup()
{
pinMode(trigger2, OUTPUT);
pinMode(led, OUTPUT);
pinMode(echo2, INPUT);
lcd.init();
lcd.backlight();
lcd.print("Hola");
Serial.begin(9600);
}
void loop()
{
digitalWrite(trigger2, LOW);
delayMicroseconds(5);
digitalWrite(trigger2, HIGH);
delayMicroseconds(10);
digitalWrite(trigger2, LOW);
distsensor2 = pulseIn(echo2, HIGH);
distsensor2 = distsensor2 / 58;
if ((distsensor2 <= 40) && (contador >= 1)) {
lcd.clear();
lcd.print("Salio alguien");
lcd.setCursor(0, 1);
lcd.print("Contador: ");
contador -= 1;
lcd.print(contador);
delay(500);
digitalWrite(led, LOW);
}
}Módulo 5: Detección de Entrada (ENTRAN)
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int trigger1 = 2;
int echo1 = 3;
float distsensor1;
int led = 13;
int contador = 0;
void setup()
{
pinMode(trigger1, OUTPUT);
pinMode(echo1, INPUT);
pinMode(led, OUTPUT);
lcd.init();
lcd.backlight();
lcd.print("Hola");
Serial.begin(9600);
}
void loop()
{
digitalWrite(trigger1, LOW);
delayMicroseconds(5);
digitalWrite(trigger1, HIGH);
delayMicroseconds(10);
digitalWrite(trigger1, LOW);
distsensor1 = pulseIn(echo1, HIGH);
distsensor1 = distsensor1 / 58;
if ((distsensor1 <= 40) && (contador <= 9)) {
lcd.clear();
lcd.print("Entro alguien");
lcd.setCursor(0, 1);
lcd.print("Contador: ");
contador += 1;
lcd.print(contador);
delay(500);
if (contador == 10) {
lcd.clear();
lcd.print("Ya estamos todos");
lcd.setCursor(0, 1);
lcd.print("Contador: ");
lcd.print(contador);
digitalWrite(led, HIGH);
}
}
}Módulo 5: Detección de Salida (SALEN)
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int trigger2 = 4;
int echo2 = 5;
float distsensor2;
int led = 13;
int contador = 9;
void setup()
{
pinMode(trigger2, OUTPUT);
pinMode(led, OUTPUT);
pinMode(echo2, INPUT);
lcd.init();
lcd.backlight();
lcd.print("Hola");
Serial.begin(9600);
}
void loop()
{
digitalWrite(trigger2, LOW);
delayMicroseconds(5);
digitalWrite(trigger2, HIGH);
delayMicroseconds(10);
digitalWrite(trigger2, LOW);
distsensor2 = pulseIn(echo2, HIGH);
distsensor2 = distsensor2 / 58;
if ((distsensor2 <= 40) && (contador >= 1)) {
lcd.clear();
lcd.print("Salio alguien");
lcd.setCursor(0, 1);
lcd.print("Contador: ");
contador -= 1;
lcd.print(contador);
delay(500);
digitalWrite(led, LOW);
}
}Módulo 6: Detección de Entrada (ENTRAN)
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int trigger1 = 2;
int echo1 = 3;
float distsensor1;
int led = 13;
int contador = 0;
void setup()
{
pinMode(trigger1, OUTPUT);
pinMode(echo1, INPUT);
pinMode(led, OUTPUT);
lcd.init();
lcd.backlight();
lcd.print("Hola");
Serial.begin(9600);
}
void loop()
{
digitalWrite(trigger1, LOW);
delayMicroseconds(5);
digitalWrite(trigger1, HIGH);
delayMicroseconds(10);
digitalWrite(trigger1, LOW);
distsensor1 = pulseIn(echo1, HIGH);
distsensor1 = distsensor1 / 58;
if ((distsensor1 <= 40) && (contador <= 9)) {
lcd.clear();
lcd.print("Entro alguien");
lcd.setCursor(0, 1);
lcd.print("Contador: ");
contador += 1;
lcd.print(contador);
delay(500);
if (contador == 10) {
lcd.clear();
lcd.print("Ya estamos todos");
lcd.setCursor(0, 1);
lcd.print("Contador: ");
lcd.print(contador);
digitalWrite(led, HIGH);
}
}
}Módulo 6: Detección de Salida (SALEN)
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int trigger2 = 4;
int echo2 = 5;
float distsensor2;
int led = 13;
int contador = 9;
void setup()
{
pinMode(trigger2, OUTPUT);
pinMode(led, OUTPUT);
pinMode(echo2, INPUT);
lcd.init();
lcd.backlight();
lcd.print("Hola");
Serial.begin(9600);
}
void loop()
{
digitalWrite(trigger2, LOW);
delayMicroseconds(5);
digitalWrite(trigger2, HIGH);
delayMicroseconds(10);
digitalWrite(trigger2, LOW);
distsensor2 = pulseIn(echo2, HIGH);
distsensor2 = distsensor2 / 58;
if ((distsensor2 <= 40) && (contador >= 1)) {
lcd.clear();
lcd.print("Salio alguien");
lcd.setCursor(0, 1);
lcd.print("Contador: ");
contador -= 1;
lcd.print(contador);
delay(500);
digitalWrite(led, LOW);
}
}