Para este proyecto vamos a necesitar:
- Dos pares de diodos infrarrojos (dos emisores y dos receptores).
- 2 leds (rojo y verde).
- 4 resistencias de 10K.
- Una lcd.
- Un potenciómetro.
- Una protoboard.
- Arduino.
El fototransistor (aunque parezca un led corriente) debe conectarse con la patilla larga a masa y la corta a voltaje.
Para esta práctica nosotros hemos usado como emisor el led infrarrojo tranparente y como receptor el fototransistor de color negro.
Una vez distinguidos los diodos vamos a explicar el planteamiento: lo primero de todo es que hemos distinguido entre las personas que entran y las que salen. Las personas que entran, primero pasan la primera barrera y después la segunda. Por el contrario, las personas que salen, primero pasan la segunda barrera y después la primera. Para este caso, solo vamos a contar las personas que entran al edificio.
Además, hemos introducido dos leds (uno verde y otro rojo) para detectar por que barrera se está pasando. Si pasamos por la primera barrera, se encenderá el led verde, y si pasamos por la segunda se encenderá el rojo.
Dicho esto, ya solo nos queda realizar el montaje, copiar el código y a disfrutar!.
Código arduino:
#include <LiquidCrystal.h>LiquidCrystal lcd(10, 9, 8, 7, 6, 5);
int luces_1=13; //verde
int luces_2=12; //rojo
//barreras infrarrojas
const int barrera_infrarroja_1 = A4; // lectura del Fototransistor de la primera barrera
const int barrera_infrarroja_2 = A5; // lectura del Fototransistor de la segunda barrera
int Medida_infrarrojo_1 = 0; // Inicializamos el valor del sensor de la primera barrera
int Medida_infrarrojo_2 = 0; // Inicializamos el valor del sensor de la segunda barrera
boolean barrera_1=false;
boolean barrera_2=false;
int contador=0;
void setup(){
Serial.begin(9600); // Inicializa el puerto serie
pinMode(luces_1, OUTPUT);
pinMode(luces_2, OUTPUT);
}
void loop(){
lcd.setCursor(0,0);
lcd.print("PERSONAS: ");
lcd.print(contador);
Medida_infrarrojo_1 =analogRead(barrera_infrarroja_1);
Medida_infrarrojo_2 =analogRead(barrera_infrarroja_2);
if(Medida_infrarrojo_1<400){
digitalWrite(luces_1,HIGH);
if(barrera_2==true){
barrera_2=false;
}
else{
barrera_1=true;
}
}
else{
digitalWrite(luces_1,LOW);
}
if(Medida_infrarrojo_2<400){
digitalWrite(luces_2,HIGH);
if(barrera_1==true){
contador=contador+1;
barrera_1=false;
}
else{
barrera_2=true;
}
}
else{
digitalWrite(luces_2,LOW);
}
}
Para terminar, os dejo un vídeo del funcionamiento: