Contador sumador, restador con display de 7 segmentos y un 74HC595

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.

Hola.

¿ De cuanto es la resistencia puesta en el pin MR y cual el motivo?. Yo se la quitaba, tendria sentido si la señal de control MR estuviera controlada por un pin analogico , para borrar poniendolo en LOW y limimitar las corrientes, aunque estorbar no estorba.

¿Resistencia unica en el catodo?. No lo niego yo tambien cometi ese error de novato y mas de una vez. No niego que se pueda hilar tan fino pero... ¿ de cuanto te ha salido ? para que se encienda algo el 8 y no se chamusque el 1. Ese es un montaje erroneo , el catodo comun directamente a masa y cada anodo con una resistencia de unos 300 ohmios.

Revisa todo el cableado, (el esquema lo veo bien) y cuando se encienda algo ya hablamos del codigo, aun no lo he revisado bien, pero te falta el convertir el codigo binario que lleva la variable personas al codigo 7 segmentos.
Saludos.

De cada pin del 595 debe salir una R de al menos 470 o 330 ohms a cada segmento del Display. Dudo que el 595 tolere ademas comandar el catodo común y que el display ilumine a 35mA en todos sus segmentos. Tendrás un cambio de brillo constante.
Debes usar un transistor para no comprometer la corriente de los segmentos.
Un TBJ o un FET como el 2n7000 son mas que recomendables.
Con el lograrás la corriente que hace falta para iluminar un 8 o sea 8 segmentos x 35 mA 280mA.

El catodo comun no lo comanda nadie, va directamente a Gnd , ( el PO en todo momento habla de harware y codigo para un solo display )
Segun su datashet ese integrado aguanta como bien dices 35mA por pin, con esas resistencias que le decimos que coloque en los anodos de los led circularan unos 10mA por pin. No creo la necesidad de transistores.
saludos.

Nunca entenderé los esquemas de Fritzing por eso mi confusión.
Me parecen muy feos y son casi incomprensibles en muchos casos para mi gusto. Es mi error no hay duda.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.