Programación Arduino - Jugar con registros de desplazamiento (también conocido como incluso más LED)

  • Mark Lucas
  • 0
  • 4756
  • 239
Anuncio

Hoy intentaré enseñarte un poco sobre los registros de desplazamiento. Estas son una parte bastante importante de la programación de Arduino, básicamente porque expanden el número de salidas que puede usar, a cambio de solo 3 pines de control. También puede conectar en cadena los registros de desplazamiento para obtener aún más salidas.

Sin embargo, este es un salto significativo en la dificultad de los tutoriales anteriores, y le sugiero encarecidamente que comprenda muy bien el material anterior (enlaces al final de este artículo), así como que comprenda los conceptos básicos de binario ¿Qué es binario? [Explicación de la tecnología] ¿Qué es binario? [Explicación de la tecnología] Dado que el binario es tan fundamental para la existencia de las computadoras, parece extraño que nunca hayamos abordado el tema antes, así que hoy pensé que daría una breve descripción de qué binario ... que escribí ultima vez.

¿Qué es un registro de turnos??

Un registro de desplazamiento de salida, técnicamente hablando, recibe datos en serie y los emite en paralelo. En términos prácticos, esto significa que podemos enviar rápidamente un montón de comandos de salida al chip, decirle que se active y las salidas se enviarán a los pines relevantes. En lugar de iterar a través de cada pin, simplemente enviamos la salida requerida a todos los pines a la vez, como un solo byte o más información.

Si le ayuda a comprender, puede pensar en un registro de desplazamiento como una 'matriz' de salidas digitales, pero podemos omitir los comandos habituales de digitalWrite y simplemente enviar una serie de bits para activarlos o desactivarlos..

Como funciona?

El registro de desplazamiento que utilizaremos, el 74HC595N incluido en el kit de inicio Oomlout, solo necesita 3 pines de control. El primero es un reloj, no debe preocuparse demasiado por esto, ya que las bibliotecas en serie Arduino lo controlan, pero un reloj es básicamente un pulso eléctrico de encendido / apagado que marca el ritmo de la señal de datos..

El pin de enganche se usa para indicar al registro de desplazamiento cuándo debe encender y apagar sus salidas de acuerdo con los bits que acabamos de enviar, es decir, engancharlos en su lugar.

Finalmente, el pin de datos es donde enviamos los datos seriales reales con los bits para determinar el estado activado / desactivado de las salidas del registro de desplazamiento.

Todo el proceso puede describirse en 4 pasos:

  1. Establezca el pin de datos en alto o bajo para el primer pin de salida en el registro de desplazamiento.
  2. Pulse el reloj para 'desplazar' los datos al registro.
  3. Continúe configurando los datos y pulsando el reloj hasta que haya configurado el estado requerido para todos los pines de salida.
  4. Pulse el pasador de bloqueo para activar la secuencia de salida..

Implementación

Necesita los siguientes componentes para este proyecto:

  • Chip de registro de desplazamiento 7HC595N
  • 8 LEDS y resistencias apropiadas, o lo que sea que quieras enviar
  • La placa de pruebas, conectores y un Arduino básico.

Si tiene el kit de inicio Oomlout, puede descargar el diseño de la placa desde aquí.

Aquí está el video de montaje:

El diseño del tablero:

Y mi versión ensamblada:

Modifiqué el código original proporcionado por Ooolmout, pero si quieres probarlo, puedes descargarlo aquí. Se incluye la explicación del código, así que copie y pegue todo desde abajo o pegue para leer una explicación del código.

/ * ------------------------------------------------ --------- * | Tutorial de registro de turnos, basado en | * | Kit de experimentación Arduino CIRC-05 | * | .: 8 Más LEDs:. (Registro de desplazamiento 74HC595) | * ------------------------------------------------- -------- * | Modificado por James @ MakeUseOf.com | * ------------------------------------------------- -------- * / // Definiciones de pin // 7HC595N tiene tres pines int data = 2; // donde enviamos los bits para controlar las salidas int clock = 3; // mantiene los datos sincronizados int latch = 4; // le dice al registro de desplazamiento cuándo activar la secuencia de salida void setup () // establece los tres pines de control para emitir pinMode (datos, SALIDA); pinMode (reloj, SALIDA); pinMode (pestillo, SALIDA); Serial.begin (9600); // para que podamos enviar mensajes de depuración al monitor en serie void loop () outputBytes (); // nuestra salida básica que escribe 8 bits para mostrar cómo funciona un registro de desplazamiento. // outputIntegers (); // envía un valor entero como datos en lugar de bytes, contando efectivamente en binario.  void outputIntegers () for (int i = 0; i<256;i++) digitalWrite(latch, LOW); Serial.println(i); // Debug, sending output to the serial monitor shiftOut(data, clock, MSBFIRST, i); digitalWrite(latch, HIGH); delay(100);   void outputBytes() /* Bytes, or 8-bits, are represented by a B followed by 8 0 or 1s. In this instance, consider this to be like an array that we'll use to control the 8 LEDs. Here I've started the byte value as 00000001 */ byte dataValues = B00000001; // change this to adjust the starting pattern /* In the for loop, we begin by pulling the latch low, using the shiftOut Arduino function to talk to the shift register, sending it our byte of dataValues representing the state of the LEDs then pull the latch high to lock those into place. Finally, we shift the bits one place to the left, meaning the next iteration will turn on the next LED in the series. To see the exact binary value being sent, check the serial monitor. */ for (int i=0;i<8;i++) digitalWrite(latch, LOW); Serial.println(dataValues, BIN); // Debug, sending output to the serial monitor shiftOut(data, clock, MSBFIRST, dataValues); digitalWrite(latch, HIGH); dataValues = dataValues <> para ajustar el retraso de dirección (100);  

Desplazamiento de bits (función OutputBytes)

En el primer ejemplo de bucle, outputBytes (), el código utiliza una secuencia de 8 bits (un byte) que luego se desplaza hacia la izquierda cada iteración del bucle for. Es importante tener en cuenta que si cambia más de lo posible, el bit simplemente se pierde.

El desplazamiento de bits se realiza utilizando <> seguido del número de bits que desea cambiar.

Consulte el siguiente ejemplo y asegúrese de comprender lo que está sucediendo:

byte val = B00011010 val = val << 3 // B11010000 val = val <> 5 // B00000010 

En vez de enviar enteros (función OutputIntegers)

Si envía un número entero al registro de desplazamiento en lugar de un byte, simplemente convertirá el número en una secuencia de bytes binarios. En esta función (descomentar en el bucle y cargar para ver el efecto), tenemos un bucle for que cuenta de 0 a 255 (el entero más alto que podemos representar con un byte) y lo envía en su lugar. Básicamente cuenta en binario, por lo que la secuencia puede parecer un poco aleatoria a menos que sus LED estén colocados en una línea larga.

Por ejemplo, si lee el artículo explicativo binario, sabrá que el número 44 se representará como 00101100, por lo que los LED 3,5,6 se iluminarán en ese punto de la secuencia.

Margarita encadenando más de un registro de turno

Lo notable de los registros de desplazamiento es que si se les proporciona más de 8 bits de información (o por grande que sea su registro), desplazarán los otros bits adicionales nuevamente. Esto significa que puede conectar una serie de ellos juntos, insertar una larga cadena de bits y distribuirlos a cada registro por separado, todo sin codificación adicional de su parte.

Aunque no detallaremos el proceso o los esquemas aquí, si tiene más de un registro de turno, puede probar el proyecto desde el sitio oficial de Arduino aquí..

Otros artículos de la serie:

  • ¿Qué es Arduino y qué puedes hacer con él? ¿Qué es Arduino y qué puedes hacer con él? ¿Qué es Arduino y qué puedes hacer con él? El Arduino es un pequeño dispositivo electrónico notable, pero si nunca ha usado uno, qué son exactamente y qué puede hacer con uno.? ?
  • ¿Qué es un kit de inicio Arduino y qué contiene? ¿Qué se incluye en un kit de inicio Arduino? [MakeUseOf explica] ¿Qué se incluye en un kit de inicio Arduino? [Explica MakeUseOf] Anteriormente presenté el hardware de código abierto Arduino aquí en MakeUseOf, pero necesitarás más que el Arduino real para construir algo y comenzar realmente. Los "kits de inicio" de Arduino son ...
  • Más componentes geniales para comprar con su kit de inicio 8 más componentes geniales para sus proyectos Arduino 8 componentes más geniales para sus proyectos Arduino Entonces, está pensando en obtener un kit de inicio Arduino, pero se pregunta si habrá algunos LED básicos y resistencias suficiente para mantenerte ocupado durante el fin de semana? Probablemente no. Aquí hay otros 8 ...
  • ¿Cómo comenzar con su kit de inicio Arduino? Instalación de controladores y configuración de la placa y el puerto Introducción a su Arduino Starter Kit - Instalación de controladores y configuración de la placa y el puerto Introducción a su Arduino Starter Kit - Instalación de controladores y configuración de la placa y el puerto Entonces, se ha comprado un kit de inicio Arduino y posiblemente algunos otros componentes geniales al azar, ¿y ahora qué? ¿Cómo comienzas a programar esta cosa de Arduino? Cómo lo configuras…
  • Fritzing, una herramienta gratuita para dibujar diagramas de circuitos Fritzing - La herramienta definitiva para dibujar proyectos electrónicos [Plataforma cruzada] Fritzing - La herramienta definitiva para dibujar proyectos electrónicos [Plataforma cruzada] A pesar de sonar como un alcopop, Fritzing es en realidad un poco increíble software gratuito que puede usar para crear diagramas de circuitos y componentes para usar con placas electrónicas de creación rápida de prototipos, como el fantástico Arduino de código abierto ...
  • Una mirada más cercana a la estructura de una aplicación Arduino y el ejemplo del programa Parpadeo Primeros pasos con Arduino: Una mirada más cercana a la placa de circuito y la estructura de un programa Primeros pasos con Arduino: Una mirada más cercana a la placa de circuito y la estructura De un programa La última vez que lo dejé configuró su Arduino para que funcione con Mac o Windows, y cargué una aplicación de prueba simple que parpadeó en el LED incorporado. Hoy voy a explicar el código ...
  • Proyecto Arduino de luces de árbol de Navidad Un proyecto Arduino: cómo hacer adornos de luces navideñas llamativas Un proyecto Arduino: cómo hacer adornos de luces navideñas llamativas Esta es la siguiente parte de nuestra serie de aprendizaje Arduino, y esta vez vamos a aprender y usar matrices para hacer un pequeño adorno de árbol de Navidad con varias secuencias intermitentes. Esto sería un ... (también conocido como aprender sobre matrices)
  • ¿Qué es binario? ¿Qué es binario? [Explicación de la tecnología] ¿Qué es binario? [Explicación de la tecnología] Dado que el binario es tan fundamental para la existencia de las computadoras, parece extraño que nunca hayamos abordado el tema antes, así que hoy pensé que daría una breve descripción de qué binario ...

Eso es todo lo que llegaremos hoy con los registros de desplazamiento, ya que creo que hemos cubierto mucho. Como siempre, te animo a jugar y ajustar el código, y siéntete libre de hacer cualquier pregunta que tengas en los comentarios, o incluso compartir un enlace a tu increíble proyecto basado en el registro de turnos.




Nadie ha comentado sobre este artículo todavía.

Sobre tecnología moderna, simple y asequible.
Tu guía en el mundo de la tecnología moderna. Aprenda a usar las tecnologías y los dispositivos que nos rodean todos los días y aprenda a descubrir cosas interesantes en Internet.