Nota

¡Hola, bienvenido a la Comunidad de Aficionados a Raspberry Pi, Arduino y ESP32 de SunFounder en Facebook! Profundiza en Raspberry Pi, Arduino y ESP32 con otros entusiastas.

¿Por qué unirse?

  • Soporte de expertos: Resuelve problemas posventa y desafíos técnicos con ayuda de nuestra comunidad y equipo.

  • Aprender y compartir: Intercambia consejos y tutoriales para mejorar tus habilidades.

  • Vistas previas exclusivas: Obtén acceso anticipado a anuncios de nuevos productos y avances.

  • Descuentos especiales: Disfruta de descuentos exclusivos en nuestros productos más nuevos.

  • Promociones festivas y sorteos: Participa en sorteos y promociones de fiestas.

👉 ¿Listo para explorar y crear con nosotros? Haz clic en [aquí] y únete hoy!

5.9 ShiftOut(LED)

shiftOut() hace que el 74HC595 emita 8 señales digitales. Envía el último bit del número binario a Q0 y la salida del primer bit a Q7. En otras palabras, escribir el número binario “00000001” hará que Q0 emita un nivel alto y Q1~Q7 emitan un nivel bajo.

En este proyecto, aprenderás a utilizar el 74HC595. El 74HC595 consta de un registro de desplazamiento de 8 bits y un registro de almacenamiento con salidas paralelas de tres estados. Convierte la entrada serial en salida paralela, lo que te permite ahorrar puertos IO de un MCU.

Específicamente, el 74hc595 puede reemplazar 8 pines para la salida de señal digital escribiendo un número binario de 8 bits.

Componentes Necesarios

En este proyecto, necesitamos los siguientes componentes.

Definitivamente es conveniente comprar un kit completo, aquí está el enlace:

Nombre

ARTÍCULOS EN ESTE KIT

ENLACE

3 in 1 Starter Kit

380+

3 in 1 Starter Kit

También puedes comprarlos por separado en los siguientes enlaces.

INTRODUCCIÓN DEL COMPONENTE

ENLACE DE COMPRA

Placa SunFounder R3

COMPRAR

Protoboard

COMPRAR

Cables Puente

COMPRAR

Resistencia

COMPRAR

LED

COMPRAR

74HC595

COMPRAR

Esquema

../_images/circuit_6.4_74hc595.png
  • Cuando MR (pin 10) está en nivel alto y OE (pin 13) en nivel bajo, los datos se ingresan en el borde ascendente de SHcp y pasan al registro de memoria a través del borde ascendente de SHcp.

  • Si los dos relojes están conectados juntos, el registro de desplazamiento siempre está un pulso antes que el registro de memoria.

  • Hay una entrada de desplazamiento serial (Ds), una salida serial (Q) y un botón de reinicio asincrónico (nivel bajo) en el registro de memoria.

  • El registro de memoria emite un Bus con 8 bits paralelos y en tres estados.

  • Cuando OE está habilitado (nivel bajo), los datos en el registro de memoria se emiten al bus (Q0 ~ Q7).

Cableado

../_images/74hc595_bb.jpg

Código

Nota

  • Abre el archivo 5.9.shiftout_led.ino en la ruta 3in1-kit\basic_project\5.9.shiftout_led.

  • O copia este código en el Arduino IDE.

  • O carga el código a través del Arduino Web Editor.

Una vez que hayas cargado los códigos en la placa R3, verás que los LEDs se encienden uno tras otro.

¿Cómo funciona?

Declara un arreglo, guarda varios números binarios de 8 bits que se utilizan para cambiar el estado operativo de los ocho LEDs controlados por el 74HC595.

int datArray[] = {B00000000, B00000001, B00000011, B00000111, B00001111, B00011111, B00111111, B01111111, B11111111};

Primero configura STcp a bajo nivel y luego a alto nivel. Esto generará un pulso de borde ascendente en STcp.

digitalWrite(STcp,LOW);

shiftOut() se usa para desplazar un byte de datos bit a bit, lo que significa desplazar un byte de datos en datArray[num] al registro de desplazamiento con el pin DS. MSBFIRST significa moverse desde los bits más altos.

shiftOut(DS,SHcp,MSBFIRST,datArray[num]);

Después de ejecutar digitalWrite(STcp,HIGH), STcp estará en el borde ascendente. En ese momento, los datos en el registro de desplazamiento se moverán al registro de memoria.

digitalWrite(STcp,HIGH);

Un byte de datos se transferirá al registro de memoria después de 8 veces. Luego, los datos del registro de memoria se envían al bus (Q0-Q7). Por ejemplo, desplazar B00000001 encenderá el LED controlado por Q0 y apagará el LED controlado por Q1~Q7.