Para poner fin a esta trilogía de entradas sobre el proyecto del contador decimal vamos a ver en detalle la librería 74HC595.h. Esta librería específica para el integrado 74HC595 nos permite controlar su comportamiento de una manera muy simple.
Esta librería se encuentra totalmente en Español y dispone de documentación que nos permite entender su funcionamiento, además es OpenSource bajo la licencia GPL 3.0 por lo que podrás descargarla y modificarla a tu gusto, puedes descargarla directamente desde aquí.
¿Qué tipo de displays de 7 segmentos soporta la librería 74HC595.h?
Como vimos en las anteriores entradas existen 2 tipos de displays de 7 segmentos, los display de ánodo común y los displays de cátodo común, ambos componentes aunque parecen iguales a simple vista, internamente su configuración es completamente distinta.
Pues bien, la librería 74HC595.h soporta ambos tipos de display tan solo nos hará falta inicializar de tal manera de que la librería pueda acceder a los métodos de uno u otro display.
Para inicializar dicho contenido haremos lo siguiente:
HC595CA display(7, 8, 9); //Inicializamos un display de ánodo común Pines SER, RCLK, SRCLK
//-------------------------------------o-------------------------------------------
HC595CC display(7, 8, 9); //Inicializamos un display de cátodo común Pines SER, RCLK, SRCLK
Ambas clases disponen de los mismos métodos por lo que en ambos casos el proyecto debe funcionar de la misma manera.
Métodos de la librería
Esta librería tiene 3 métodos principales:
.begin()
: Inicializa la clase, no requiere parámetros adicionales..escribirNumero(int numero)
: Este método es el que permite que se muestre en el display el número decimal cuyo valor es igual a la variable, espera un parámetro que es la variable número..error(const byte CC_error/AC_error)
: Este método espera la combinación de bytes que forman la letraE
que solo se da cuando la variable de control número es menor que 0 o mayor que 9.
Mejoras de mantenimiento
Además la librería presenta ciertas mejoras que hacen que el código sea más mantenible en el tiempo, como vimos en la anterior entrada del contador decimal con el circuito 74hc595 y display de ánodo común, poníamos a nivel alto aquellos LED’s que no queríamos que se encendieran, esta práctica no es muy recomendada ya que a la larga podemos dañar el circuito integrado.
Es por ello por lo que en esta librería he optado por invertir los led’s a nivel de bits, es decir ahora pondremos a nivel bajo aquellos led’s aquellos led’s que forman el número de esta manera.
//Definimos la combinaciones de led que se van a poner a nivel bajo
const byte AC_numero0 = ~(LED0 + LED1 + LED2 + LED3 + LED4 + LED5);
const byte AC_numero1 = ~(LED1 + LED2);
const byte AC_numero2 = ~(LED0 + LED1 + LED6 + LED4 + LED3);
const byte AC_numero3 = ~(LED0 + LED1 + LED2 + LED3 + LED6);
const byte AC_numero4 = ~(LED1 + LED2 + LED5 + LED6);
const byte AC_numero5 = ~(LED0 + LED2 + LED3 + LED5 + LED6);
const byte AC_numero6 = ~(LED0 + LED2 + LED3 + LED4 + LED5 + LED6);
const byte AC_numero7 = ~(LED0 + LED1 + LED2);
const byte AC_numero8 = ~(LED0 + LED1 + LED2 + LED3 + LED4 + LED5 + LED6);
const byte AC_numero9 = ~(LED0 + LED1 + LED2 + LED3 + LED5 + LED6);
const byte AC_error = ~(LED0 + LED3 + LED4 + LED5 + LED6);
Códigos de ejemplo de la librería 74HC595.h
Por último la librería trae dos códigos de ejemplo uno para ánodo común y otro para cátodo común listos para compilar, comprobaremos que el resultado es el mismo que el mostrado en las dos entradas anteriores pero utilizando muchísimas menos líneas de código, haciendo que sea más fácil de entender.
Como siempre te dejo ambos códigos aquí para que puedas copiarlos y pegarlos directamente, recuerda que para que funcione debes de tener descargado e importado en tu carpeta ‘libraries’ la librería que te dejo en este enlace.
/*
Ejemplo de uso de la librería 74hc595.h
Este programa nos permite comprobar el correcto funcionamiento
de la librería 74hc595.h para controlar el comportamiento de un display
de 7 segmentos de ánodo común mediante el uso del integrado 74HC595,
en este ejemplo podemos ver todos los métodos disponibles para la
clase HC595CC.
Autor: Alexdevrep
Fecha: 28/3/2024
Más contenido interesante en :
-GitHub: https://www.github.com/alexdevrep
-Instagram: https://www.instagram.com/alexdevrep/
-Mi blog de WordPress: https://www.eltallerdealexdevrep.com/
-Youtube: https://www.youtube.com/channel/UCNlqgVY-CaQ2Lgc5xJChaKA
*/
//Incluimos la librería necesaria
#include <74hc595.h>
//Declaramos las variables necesarias para el control del programa
int numero =0;
const int botonSuma = 11;
const int botonResta = 12;
//Creamos un objeto de la clase lo llamamos display y lo inicializamos con los valores 7,8 y 9
HC595CA display(7, 8, 9); // Pines SER, RCLK, SRCLK
void setup() {
//Inicializamos los pines de entrada y la librería
pinMode(botonSuma, INPUT);
pinMode(botonResta, INPUT);
display.begin();
//Definimos que al inicializar el programa se nos muestre el número 0 en el display
display.escribirNumero(AC_numero0);
}
void loop() {
// Bucle principal de control
//Sumamos una unidad a la variable
if (digitalRead(botonSuma) == HIGH && numero<10){
numero++;
display.escribirNumero(numero);
delay(250);
}
//Restamos una unidad a la variable
if(digitalRead(botonResta) == HIGH && numero>-1){
numero--;
display.escribirNumero(numero);
delay(250);
}
//Mostramos el mensaje de error E
if (numero>9 || numero<0) {
display.error(AC_error);
}
}
/*
Ejemplo de uso de la librería 74hc595.h
Este programa nos permite comprobar el correcto funcionamiento
de la librería 74hc595.h para controlar el comportamiento de un display
de 7 segmentos de cátodo común mediante el uso del integrado 74HC595,
en este ejemplo podemos ver todos los métodos disponibles para la
clase HC595CC.
Autor: Alexdevrep
Fecha: 28/3/2024
Más contenido interesante en :
-GitHub: https://www.github.com/alexdevrep
-Instagram: https://www.instagram.com/alexdevrep/
-Mi blog de WordPress: https://www.eltallerdealexdevrep.com/
-Youtube: https://www.youtube.com/channel/UCNlqgVY-CaQ2Lgc5xJChaKA
*/
//Incluimos la librería necesaria
#include <74hc595.h>
//Declaramos las variables necesarias para el control del programa
int numero =0;
const int botonSuma = 11;
const int botonResta = 12;
//Creamos un objeto de la clase lo llamamos display y lo inicializamos con los valores 7,8 y 9
HC595CC display(7, 8, 9); // Pines SER, RCLK, SRCLK
void setup() {
//Inicializamos los pines de entrada y la librería
pinMode(botonSuma, INPUT);
pinMode(botonResta, INPUT);
display.begin();
//Definimos que al inicializar el programa se nos muestre el número 0 en el display
display.escribirNumero(CC_numero0);
}
void loop() {
// Bucle principal de control
//Sumamos una unidad a la variable
if (digitalRead(botonSuma) == HIGH && numero<10){
numero++;
display.escribirNumero(numero);
delay(250);
}
//Restamos una unidad a la variable
if(digitalRead(botonResta) == HIGH && numero>-1){
numero--;
display.escribirNumero(numero);
delay(250);
}
//Mostramos el mensaje de error E
if (numero>9 || numero<0) {
display.error(CC_error);
}
}