CONTADOR
// Pin de entrada del sensor fototransistor (negro)
int Fototransistor = 7;
int Fototransistor2 = 8;
int ValorFototransistor = 0;
int ValorFototransistor2 = 0;
int Contadorpersonas = 0;
int Contadorpersonas2 = 0;
// Pin de la conexion de LED rojo
int LedRojo = 10;
int LedRojo2 = 9;
// Configuracion Pantalla LCD
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // pines para pantalla LCD
void setup()
[Link](9600);
pinMode(Fototransistor, INPUT);
pinMode(LedRojo, OUTPUT);
pinMode(LedRojo2, OUTPUT);
// Informacion pantalla inicial
[Link](20, 4);
[Link](0,0);
[Link]("Grandes: 0");
[Link](0,1);
[Link]("Pequeños");
}
void loop()
ValorFototransistor = digitalRead(Fototransistor);
ValorFototransistor2 = digitalRead(Fototransistor2);
[Link]("ValorFototransistor : ");
[Link]("ValorFototransistor2 : ");
[Link](ValorFototransistor);
[Link](ValorFototransistor2);
delay(100);
if(ValorFototransistor!=1)
digitalWrite(LedRojo, LOW);
Contadorpersonas=Contadorpersonas+1;
[Link]("Grandes: ");
[Link](Contadorpersonas);
while(digitalRead(Fototransistor)!=1){
delay(100);
[Link] ( "El Sensor se detuvo o esta siendo obstruido!");
[Link](10,0);
[Link](Contadorpersonas);
else{
digitalWrite(LedRojo, HIGH);
if(ValorFototransistor2!=1)
{
digitalWrite(LedRojo, LOW);
Contadorpersonas2=Contadorpersonas2+1;
[Link]("Pequeños: ");
[Link](Contadorpersonas2);
while(digitalRead(Fototransistor2)!=1){
delay(100);
[Link] ( "El Sensor se detuvo o esta siendo obstruido!");
[Link](10,0);
[Link](Contadorpersonas2);
else{
digitalWrite(LedRojo2, HIGH);
CONTADOR DE PERSONAS
// Programa : Control de Visitantes
// By: Fermin Benitez
int pinEntrada = 7; // Pin del IR de entrada
int pinSalida = 8; // Pin del IR de salida
int valorEntrada = 0; // Variable que registra el estado del sensor de entrada
int valorSalida = 0; // Variable que registra el estado del sensor de salida
int contEntrada = 0; // Variable que registra la cantidad de visitantes que entraron
int contSalida = 0; // Variable que registra la cantidad de visitantes que salieron
int contSala = 0; // Variable que registra la cantidad de personas en la sala
int contAnterior = 0;
// Configuracion del display LCD
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup()
[Link](9600); //Iniciamos el puesrto serial
pinMode(pinEntrada, INPUT);
pinMode(pinSalida, INPUT);
[Link](20, 4); //Iniciamos el display LCD
[Link](0,0); // Informaciones iniciales del display
[Link]("Total grandes: 0");
[Link](0,1);
[Link]("Total pequeños: 0");
[Link](0,2);
[Link]("Total pasando: 0");
[Link](0,3);
[Link]("Total personas: 0");
void loop()
valorEntrada = digitalRead(pinEntrada);
valorSalida = digitalRead(pinSalida);
// Muestra la informacion de los sensores en el puerto serial
[Link]("Grande : ");
[Link](valorEntrada);
[Link](" Pequeño : ");
[Link](valorSalida);
// Comprueba si se ha cambiado el estado del sensor de entrada
if(valorEntrada != 1)
// Incrementa el valor del contador de entrada en 1 unidad
contEntrada = (contEntrada + 1) ;
// Comprueba si la persona / objeto esta delante del sensor
while(digitalRead(pinEntrada) != 1)
delay(50);
[Link]("Sensor de entrada obstruido: ");
[Link](valorEntrada);
[Link](16,0); // Actualiza en el LCD el valor del contador de entrada
[Link](contEntrada);
[Link](16,3); // Actualiza en el LCD el valor total de visitantes
[Link](contEntrada);
// Comprueba si el estado del sensor de salida ha cambiado y si el contador de la sala no ha
llegado a cero
if(valorSalida != 1 && contSala > 0)
// Incrementa el valor del contador de salida en 1 unidad
contSalida=contSalida+1;
while(digitalRead(pinSalida) != 1) // Comprueba si la persona / objeto esta delante
del sensor
delay(50);
[Link]("Sensor de salida esta obstruido: ");
}
[Link](16,1); // Actualiza en el LCD el valor del contador de salida
[Link](contSalida);
// Calcula el numero de visitantes en la sala
contSala = contEntrada - contSalida;
// Verifica si el contador de la sala es igual o mayor a cero
if (contSala >= 0)
[Link](16,2);
[Link](" ");
[Link](16,2);
// Atualiza el LCD con el numero de visitantes en la sala
[Link](contSala);
contAnterior = contSala;
else
//Si el contador de la sala es menor a cero (es posible que se active en contSalida aunque
ya no hayan personas en la sala),
//se mantendra alli hasta que detecte una nueva entrada
contSala = 0;
delay(100);
//
#############################################################################
#############################################################################
###############
FAJA SELECTORA
const int EchoPin = 3;
const int TriggerPin = 4;
const int EchoPin2 = 11;
const int TriggerPin2 = 12;
int in1= 6;
int in2 = 7;
int in3 = 8;
int in4 = 9;
void setup() {
[Link](9600);
pinMode(EchoPin, INPUT);
pinMode(TriggerPin, OUTPUT);
pinMode(EchoPin2, INPUT);
pinMode(TriggerPin2, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
void discOne(){
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
delay(3000);
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
delay(3000);
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
void discTwo(){
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
delay(3000);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
delay(3000);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
void loop() {
int cm=ping(TriggerPin,EchoPin);
[Link]("Distancia:");
[Link](cm);
delay(1000);
int cm2=ping2(TriggerPin2,EchoPin2);
[Link]("Distancia2:");
[Link](cm2);
delay(1000);
int ping(int TriggerPin,int EchoPin){
long duration,distanceCm;
digitalWrite(TriggerPin,LOW);
delayMicroseconds(2);
digitalWrite(TriggerPin,HIGH);
delayMicroseconds(5);
digitalWrite(TriggerPin,LOW);
duration=pulseIn(EchoPin,HIGH);
distanceCm=duration*10/292/2;
if (distanceCm>=5 && distanceCm <=10){
digitalWrite(discOne, HIGH);
if (distanceCm>=10 && distanceCm <=20){
digitalWrite(discOne, LOW);
delay(2000);
return distanceCm;
int ping2(int TriggerPin2,int EchoPin2){
long duration2,distanceCm2;
digitalWrite(TriggerPin2,LOW);
delayMicroseconds(2);
digitalWrite(TriggerPin2,HIGH);
delayMicroseconds(5);
digitalWrite(TriggerPin2,LOW);
duration2=pulseIn(EchoPin2,HIGH);
distanceCm2=duration2*10/292/2;
if (distanceCm2>=10 && distanceCm2 <=20){
digitalWrite(discTwo, HIGH);
if (distanceCm2>=5 && distanceCm2 <=10){
digitalWrite(discTwo, LOW);
delay(2000);
return distanceCm2;
PRUEBA DE DISPLAY 20 X 4
/*
Programa: Prueba del Display I2C LCD 20x4
Autor: Humberto Higinio
Web: [Link]
Canal de Youtube: [Link]
Video Exclusivo para mi canal de Youtube
Todos los Derechos Reservados - 2017
Código de Dominio Público
Conecte Vcc y Ground, SDA a A4, SCL a A5 sobre Arduino
*/
#include <Wire.h> // Lo trae Arduino IDE
#include <LiquidCrystal_I2C.h> // Incluimos la libreria del LCD
// Seteamos la direccion LCD a 0x27 o 0x3F for un display de 20 caracteres 4 lineas
// Seteamos los pines sobre el chip I2C usados para las conexiones del LCD:
// addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Seteamos la direccion I2C
void setup()
[Link](20,4); // Inicializamos el lcd para 20 caracteres 4 lineas, Encendemos el
backlight
// ------- Rapidos 3 blinks para el backlight -------------
for(int i = 0; i< 3; i++)
[Link]();
delay(250);
[Link]();
delay(250);
[Link](); // terminamos con el backlight on
//-------- Escribimos caracteres sobre el display ------------------
// NOTA: Posicion del Cursor: Lineas y Caracteres empiezan en 0
[Link](5,0); //Empiezo en la posicion 6 (caracter) sobre la linea 0
[Link]("Hola, Mundo!");
delay(1000);
[Link](2,1);
[Link]("Bienvenidos a mi");
delay(1000);
[Link](2,2);
[Link]("Canal de Youtube");
[Link](2,3);
delay(1000);
[Link]("HUMBERTO HIGINIO");
delay(5000);
[Link](1,0); //Start at character 0 on line 0
[Link]("Esta es una prueba");
[Link](0,1);
[Link]("Display I2C LCD 20x4");
delay(3000);
for(int i = 0; i< 5; i++)
[Link]();
delay(250);
[Link]();
delay(250);
[Link](); // terminamos con el backlight on
delay(3000);
void loop()
ULTRASONICO
const int EchoPin = 5;
const int TriggerPin = 6;
const int LedPin = 13;
void setup() {
[Link](9600);
pinMode(LedPin,OUTPUT);
pinMode(TriggerPin,OUTPUT);
pinMode(EchoPin,INPUT);
void loop() {
int cm=ping(TriggerPin,EchoPin);
[Link]("Distancia:");
[Link](cm);
delay(1000);
int ping(int TriggerPin,int EchoPin){
long duration,distanceCm;
digitalWrite(TriggerPin,LOW);
delayMicroseconds(2);
digitalWrite(TriggerPin,HIGH);
delayMicroseconds(5);
digitalWrite(TriggerPin,LOW);
duration=pulseIn(EchoPin,HIGH);
distanceCm=duration*10/292/2;
if (distanceCm>=30 && distanceCm <=400){
digitalWrite(LedPin, HIGH);
if (distanceCm>=5 && distanceCm <=30){
digitalWrite(LedPin, LOW);
return distanceCm;