En este tutorial vamos a usar el registro de desplazamiento 74HC595 para controlar un display de siete segmentos. La idea es que el display muestre los números del 0 al 9 de forma secuencial.
Componentes necesarios
(1) x Elegoo Uno R3
(1) x Protoboard de 830 puntos
(1) x Integrado 74HC595
(1) x Display de siete segmentos de 1 dígito
(8) x Resistencias de 220 Ω
(26) x Cables M-M (Macho-Macho)
Introducción a los componentes
Display de siete segmentos: Mirá el diagrama de pines del display. Los diez dígitos (0-9) corresponden a cada segmento según la tabla de abajo. Esta tabla aplica para dispositivos de cátodo común; si usás uno de ánodo común, tenés que invertir los valores (el 1 pasa a 0 y el 0 a 1).
Paso uno: Conectar el 74HC595
Primero, conectamos la alimentación y la tierra: VCC (pin 16) y MR (pin 10) van a 3.3V. GND (pin 8) y OE (pin 13) van a tierra.
Para los pines de datos y control: DS (pin 14) se conecta al pin D2 del UNO R3. ST_CP (pin 12, latch) al pin D3 y SH_CP (pin 11, clock) al pin D4.
Paso dos: Conectar el display de siete segmentos
Conectá los pines 3 y 8 del display a GND (esto es para cátodo común; si es ánodo común, van a +3.3/5V). Según la tabla de correspondencia, conectá las salidas Q0 ~ Q7 del 74HC595 a los pines del display (A ~ G y DP), poniendo siempre una resistencia de 220Ω en serie para cada segmento.
Esquema de conexión
Fijate en los diagramas técnicos para asegurar que cada cable esté en su lugar antes de alimentar la placa.
Diagrama de cableado
Seguí el recorrido de los cables en el diagrama visual para evitar errores en el conexionado de los pines del registro hacia el display.
Código
Podés hacer clic en el enlace para bajar el programa a tu compu. Acordate de tener instalado el IDE de Arduino y los drivers del UNO R3. Si tenés dudas, revisá la "Parte 1" de la documentación.
Este código hace que el display cuente del 9 al 0, espere 3 segundos y vuelva a empezar. Usamos una matriz de bytes (seven_seg_digits) para definir qué segmentos se prenden para cada número, donde 1 es encendido y 0 es apagado.
// Definir patrones de números del 0 al 9
// Mapeo a pines Q0-Q7 del 74HC595 (segmentos a,b,c,d,e,f,g)
byte seven_seg_digits[10] = {
B11111100, // 0
B01100000, // 1
B11011010, // 2
B11110010, // 3
B01100110, // 4
B10110110, // 5
B10111110, // 6
B11100000, // 7
B11111110, // 8
B11100110 // 9
};
int latchPin = 3; // Pin conectado a ST_CP
int clockPin = 4; // Pin conectado a SH_CP
int dataPin = 2; // Pin conectado a DS
void setup() {
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void sevenSegWrite(byte digit) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, seven_seg_digits[digit]);
digitalWrite(latchPin, HIGH);
}
Troubleshooting
Si el display no muestra nada o los números se ven cortados, revisá que las resistencias hagan buen contacto y que no hayas mezclado los pines del reloj (clock) y el cerrojo (latch). Si los segmentos se ven invertidos, fijate si tu display es de ánodo o cátodo común.
Fuente: Adaptado al español desde el wiki oficial Elegoo (licencia CC BY-SA). Revisión técnica por equipo Breva.