Control de Aforo con Arduino y Sensores Ultrasónicos

Informática12,12 KB

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);
  }
}

Descargar

PDF Word HTML