La programación de arduino - jugando con registros de desplazamiento (a.k.a incluso más leds)

Hoy voy a tratar de enseñarle un poco sobre Registros de cambio. Estos son una parte bastante importante de la programación de Arduino, básicamente porque amplían el número de salidas puede utilizar, a cambio de sólo 3 pines de control. También puede cambio en cadena registra en conjunto con el fin de obtener aún más salidas.

Este es un salto significativo en dificultad de tutoriales anterior sin embargo, y sugieren fuertemente que tiene una muy buena comprensión del material anterior (enlaces al final de este artículo), así como la comprensión de la fundamentos de la binaria que escribí la última vez.¿Qué es binario? [Tecnología Explicación]¿Qué es binario? [Tecnología Explicación]Teniendo en cuenta que binaria es tan absolutamente fundamental para la existencia de las computadoras, parece extraño que nunca hemos abordado el tema antes - por lo que hoy lo que pensaba que le daría una breve descripción de lo binario ...Lee mas

¿Qué es un registro de desplazamiento?

Un registro de desplazamiento de salida, técnicamente hablando, recibe datos en serie y le da salida en paralelo. En términos prácticos, esto significa que podemos enviar rápidamente un montón de comandos de salida al chip, dilo a activar, y las salidas se enviará a los pines correspondientes. En lugar de iteración a través de un pasador, que sólo tiene que enviar la salida necesaria a todos los pines a la vez, como un solo byte o más de información.

Si se ayuda a entender, se puede pensar en un registro de desplazamiento como un ‘array` de salidas digitales, pero puede omitir los comandos digitalWrite habituales y simplemente enviar una serie de bits para convertirlos encendido o apagado.

¿Como funciona?

El registro de desplazamiento que va a utilizar - el 74HC595N incluido en el kit de inicio Oomlout - necesita sólo 3 pines de control. El primero es un reloj - usted no necesita preocuparse demasiado acerca de esto como las bibliotecas de serie Arduino controlar - pero un reloj es básicamente sólo una de pulso eléctrico / apagado que marca el ritmo de la señal de datos.

El pasador se utiliza para indicar el registro de desplazamiento cuando se debe convertir a sus salidas de encendido y apagado de acuerdo con los bits que acaba de enviar ella - es decir, de bloqueo en su lugar.

Por último, el pin de datos es donde se envían los datos de serie real con los bits para determinar el estado encendido / apagado de las salidas del registro de desplazamiento.

Todo el proceso puede describe en 4 pasos:

  1. Ajuste el pin de datos a alta o baja por primera patilla de salida del registro de desplazamiento.
  2. Pulso el reloj de ‘cambio` de los datos en el registro.
  3. Continuar con la configuración de los datos y pulsando el reloj hasta que haya establecido el estado requerido para todos los pines de salida.
  4. Pulso el pasador para activar la secuencia de salida.

Implementación

Se necesitan los siguientes componentes para este proyecto:

  • 7HC595N cambiar chip de registro
  • 8 LEDs y resistencias apropiadas, o lo que quieras para dar salida a
  • El tablero habituales, conectores y un Arduino básica

Si tiene el kit Oomlout arranque, se puede descargar el diseño de tablero de aquí.

Aquí está el vídeo de montaje:

El diseño de la placa:

programación de Arduino

Y mi versión ensamblada:

He modificado el código original proporcionado por Ooolmout, pero si desea probar que en su lugar, se puede descargar en su totalidad aquí. Explicación del código se incluye, por lo que copiar y pegar todo el asunto desde abajo o Pastebin para leer una explicación del código.

/ * ------------------------------------------------ --------- * | Registro de desplazamiento Tutorial, basado en | * | Experimentación Arduino Kit CIRC-05 | * | .: 8 Más LEDs:. (74HC595 Shift Register) | * ------------------------------------------- -------------- * | Modificado por James @ MakeUseOf.com | * ----------------------------------------- ---------------- * /// Pin Definiciones // 7HC595N tiene tres datos pinsint = 2- // donde enviamos los bits de control de reloj outputsint = 3- // mantiene el datos en pestillo syncint = 4- // le dice al registro de desplazamiento cuándo activar la configuración sequencevoid salida () {// set los tres pasadores de control para outputpinMode (datos, producción) -pinMode (reloj, OUTPUT) -pinMode (LATCH, OUTPUT ) -Serial.begin (9600) - // así que podemos enviar mensajes de depuración de monitor serie} void loop () {(outputBytes) - // nuestra producción básica que escribe 8-bits para mostrar cómo un registro de desplazamiento works.// outputIntegers () - // envía un valor entero como datos en lugar de bytes, contando con eficacia en binario} outputIntegers void () {for (int i = 0-IGT; a ajusto directiondelay (100) -}}.

De desplazamiento de bits (OutputBytes Función)

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

De desplazamiento de bits se realiza utilizando lt; lt; o gt; gt; seguido por el número de bits que desea cambiar por.

Echa un vistazo al siguiente ejemplo y asegúrese de entender lo que está pasando:

bytes = val val = B00011010val lt; lt; 3 // B11010000val = val lt; lt; 2 // B01000000, que perdieron los otros bits! Val val = gt; gt; 5 // B00000010

En lugar de enviar los números enteros (OutputIntegers Función)

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 datos binarios. En esta función (elimine el comentario en el bucle y subir a ver el efecto), tenemos un bucle que cuenta 0-255 (el más alto número entero se puede representar con un byte), y envía en su lugar. Básicamente cuenta en binario, por lo que la secuencia puede parecer un poco al azar a menos que los LEDs están dispuestos en una línea larga.

Por ejemplo, si usted lee el binario explica el artículo, usted sabrá que el número 44 se representa como 00101100, por lo que los LED 3,5,6 van a encenderse en ese punto de la secuencia.

Conexión en cadena de más de un registro de desplazamiento

Lo notable de Registros de cambio es que si se les da más de 8-bits de información (o por grande que su registro es), van a cambiar los otros bits adicionales de nuevo. Esto significa que puede conectar hasta una serie de ellos juntos, empujar en una larga cadena de bits, y lo han distribuido a cada registro por separado, todo ello sin codificación adicional de su parte.

Aunque no vamos a detallar el proceso o esquemas aquí, si tiene más de un registro de desplazamiento se puede tratar el proyecto desde el sitio oficial de Arduino aquí.

Otros artículos en la serie:

Eso es por lo que vamos a ir con los registros de cambio de hoy, ya que creo que hemos cubierto mucho. Como siempre, me animo a jugar con y ajustar el código, y no dude en hacer cualquier pregunta que pueda tener en los comentarios, o incluso compartir un enlace a su proyecto basado registro de desplazamiento impresionante.

Artículos Relacionados