Mi idea de proyecto (No es mia, pero me la pidieron) es basicamente un contador de personas, que al pasar por cierto sensor infrarojo. Este me sume la cantidad de personas que entren por una unica puerta y reste los que salgan por la misma puerta, ademas quiero que imprima la cantidad de numeros en un led de 7 segmentos usando un 74HC595. Y una vez que alcance las 8 personas active un led strip (Aviso) que diga "No Pasar".
El esquematico es el que se muestra en la imagen para motivos de simulacion.
El codigo que tengo hasta ahora es el siguiente:
> // C++ code
//
int Entrada = 0;
int Salida = 0;
int Personas = 0;
//Pin connected to ST_CP of 74HC595
int latchPin = 12;
//Pin connected to SH_CP of 74HC595
int clockPin = 13;
//Pin connected to DS of 74HC595
int dataPin = 11;
//Pines de los Sensores
int SensorEntrada = 3;
int SensorSalida = 2;
int Aviso = 7;
void setup() {
//Seteo de los pines Como entradas y Salidas
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(SensorEntrada, INPUT);
pinMode(SensorSalida, INPUT);
pinMode(Aviso, OUTPUT);
}
void loop()
{
;
// Codigo encargado de gestionar los sensores entrada y salida
// Asi como sumar la cantidad de personas.
if(SensorEntrada == HIGH && SensorSalida == LOW){
Entrada = Entrada + 1;
delay(1000);
}
else if (SensorSalida == HIGH && SensorEntrada == LOW){
Salida = Salida + 1;
delay(1000);
}
Personas = Entrada - Salida;
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, Personas);
digitalWrite(latchPin, HIGH)
//Parte del codigo que habilita el aviso NO PASAR!
while (Personas >= 8){
digitalWrite(Aviso, HIGH);
}
delay(10);
}
Cuando corro la simulacion, y presiono los botones no me muestra ningun numero en la LED de 7 segmentos. Alguien me puede orientar para saber que tengo mal? El led de 7 segmentos lo tengo en catodo comun.
