.. note:: ¡Hola, bienvenido a la Comunidad de Entusiastas de Raspberry Pi, Arduino y ESP32 en Facebook! Profundiza en Raspberry Pi, Arduino y ESP32 junto a otros entusiastas. **¿Por qué unirse?** - **Soporte experto**: Resuelve problemas postventa y desafíos técnicos con la 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 nuevos anuncios de productos y avances. - **Descuentos especiales**: Disfruta de descuentos exclusivos en nuestros productos más nuevos. - **Promociones festivas y sorteos**: Participa en sorteos y promociones especiales de temporada. 👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy mismo. .. _ar_74hc595: 2.6 74HC595 ============= Resumen ----------- En esta lección, aprenderás a utilizar el 74HC595. Este circuito integrado 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, permitiéndote ahorrar puertos IO en un MCU. Componentes necesarios ------------------------ .. image:: img/list_2.6.png * :ref:`cpn_mega2560` * :ref:`cpn_breadboard` * :ref:`cpn_wires` * :ref:`cpn_led` * :ref:`cpn_resistor` * :ref:`cpn_74hc595` Circuito Fritzing -------------------- .. image:: img/image433.png En este ejemplo, utilizamos el 74HC595 para controlar LEDs. Conecta cada pin de salida de datos (Q0-Q7) a una resistencia de 220 ohmios y luego a un LED. El diagrama de cableado es el siguiente: .. image:: img/image434.png Diagrama esquemático ------------------------ .. image:: img/image435.png Código --------- .. note:: * Puedes abrir el archivo ``2.6_74HC595.ino`` en la ruta ``sunfounder_vincent_kit_for_arduino\code\2.6_74HC595`` directamente. * O copiar este código en el IDE de Arduino. .. raw:: html Al cargar el código en la placa Mega2560, verás que los LEDs se encienden uno tras otro. Análisis del código ---------------------- Declara un array para almacenar varios números binarios de 8 bits que se utilizan para cambiar el estado de funcionamiento de los ocho LEDs controlados por el 74HC595. .. code-block:: arduino int datArray[] = {B00000000, B00000001, B00000011, B00000111, B00001111, B00011111, B00111111, B01111111, B11111111}; Configura STcp en nivel bajo primero y luego en nivel alto, generando así un pulso ascendente en STcp. .. code-block:: arduino digitalWrite(STcp,LOW); La función shiftOut() se utiliza para desplazar un byte de datos un bit a la vez, lo que significa mover un byte de datos en datArray[num] al registro de desplazamiento a través del pin DS. MSBFIRST indica que el desplazamiento comienza desde los bits más altos. .. code-block:: arduino 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. .. code-block:: arduino digitalWrite(STcp,HIGH); Un byte de datos se transferirá al registro de memoria después de 8 ciclos. Luego, los datos del registro de memoria se envían al bus (Q0-Q7). Por ejemplo, shiftOut「B00000001」encenderá el LED controlado por Q0 y apagará los LEDs controlados por Q1~Q7. Imagen del fenómeno ------------------- .. image:: img/image95.jpeg