Anuncio publicitario
Hoy intentaré enseñarte un poco sobre los registros de turnos. Estos son una parte bastante importante de la programación de Arduino, básicamente porque amplían la cantidad de salidas que puedes 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 tenga un muy buena comprensión del material anterior (enlaces al final de este artículo), así como comprensión los conceptos básicos de binario ¿Qué es binario? [Explicación de la tecnología]Dado que el binario es absolutamente fundamental para la existencia de las computadoras, parece extraño que nunca hayamos abordado el tema antes, así que hoy pensé en dar una breve descripción general de qué binario ... Lee mas que escribí la última 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 correspondientes. 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 de 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 apagado.
¿Como funciona?
El registro de desplazamiento que usaremos, el 74HC595N incluido en el kit de inicio de Oomlout, solo necesita 3 pines de control. El primero es un reloj; no debe preocuparse demasiado por esto, ya que las bibliotecas de serie de Arduino controlan eso, 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 cierre se usa para decirle al registro de desplazamiento cuándo debe activar y desactivar sus salidas de acuerdo con los bits que acabamos de enviar, es decir, asegurándolos en su lugar.
Finalmente, el pin de datos es donde enviamos los datos seriales reales con los bits para determinar el estado de encendido / apagado de las salidas del registro de desplazamiento.
Todo el proceso se puede describir en 4 pasos:
- Establezca el pin de datos en alto o bajo para el primer pin de salida en el registro de desplazamiento.
- Pulse el reloj para "cambiar" los datos al registro.
- Continúe configurando los datos y pulsando el reloj hasta que haya configurado el estado requerido para todos los pines de salida.
- Pulse el pin del pestillo 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 quieras emitir
- La placa de pruebas habitual, los conectores y un Arduino básico
Si tiene el kit de inicio de Oomlout, puede descargar el diseño de la placa de pruebas 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 completo aquí. Se incluye una explicación del código, así que copie y pegue todo desde abajo o pastebin para leer una explicación del código.
/ * * | Tutorial de registro de turnos, basado en | * | Kit de experimentación Arduino CIRC-05 | * |.: 8 LED más:. (Registro de cambios 74HC595) | * * | Modificado por James @ MakeUseOf.com | * * / // Definiciones de pines. // 7HC595N tiene tres pines. int datos = 2; // donde enviamos los bits para controlar las salidas int clock = 3; // mantiene los datos sincronizados. int pestillo = 4; // le dice al registro de desplazamiento cuándo activar la secuencia de salida void setup () {// establece los tres pines de control para dar salida a pinMode (datos, SALIDA); pinMode (reloj, SALIDA); pinMode (pestillo, SALIDA); Serial.begin (9600); // para que podamos enviar mensajes de depuración al monitor serial. } bucle vacío () {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); // Depurar, enviando salida al monitor en serie shiftOut (datos, reloj, MSBFIRST, i); digitalWrite (pestillo, ALTO); retraso (100); }} void outputBytes () {/ * Los bytes, u 8 bits, se representan con una B seguida de 8 0 o 1s. En este caso, considere esto como una matriz que usaremos para controlar los 8 LED. Aquí comencé el valor del byte como 00000001 * / byte dataValues = B00000001; // cambia esto para ajustar el patrón inicial / * En el bucle for, comenzamos tirando del pestillo hacia abajo, usando la función shiftOut Arduino para hable con el registro de desplazamiento, enviándole nuestro byte de datos Valores que representan el estado de los LED y luego tire del pestillo hacia arriba para bloquearlos en lugar. Finalmente, cambiamos los bits un lugar a la izquierda, lo que significa que la próxima iteración encenderá el siguiente LED de la serie. Para ver el valor binario exacto que se envía, verifique el monitor en serie. * / para (int i = 0; i <8; i ++) {digitalWrite (pestillo, BAJO); Serial.println (dataValues, BIN); // Depurar, enviando salida al monitor en serie shiftOut (data, clock, MSBFIRST, dataValues); digitalWrite (pestillo, ALTO); dataValues = dataValues << 1; // Desplaza los bits un lugar a la izquierda - cambia a >> para ajustar el retardo de dirección (100); } }
Cambio 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 desplaza a la izquierda en cada iteración del bucle for. Es importante tener en cuenta que si se desplaza más de lo posible, simplemente se pierde el bit.
El desplazamiento de bits se realiza utilizando << o >> seguido del número de bits por los que desea desplazar.
Consulte el siguiente ejemplo y asegúrese de comprender lo que está sucediendo:
byte val = B00011010. val = val << 3 // B11010000. val = val << 2 // B01000000, ¡perdimos esos otros bits! val = val >> 5 // B00000010.
Enviar enteros en su lugar (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 los LED estén dispuestos en una línea larga.
Por ejemplo, si lee el artículo explicado en 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.
Conexión en cadena de más de un registro de turno
Lo notable de los Shift Registers es que si se les proporciona más de 8 bits de información (o por muy grande que sea su registro), volverán a desplazar los otros bits adicionales. Esto significa que puede conectar una serie de ellos juntos, insertar una cadena larga de bits y distribuirla 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é se puede hacer con él?El Arduino es un pequeño dispositivo electrónico notable, pero si nunca antes ha usado uno, ¿qué son exactamente y qué puede hacer con uno? Lee mas ?
- ¿Qué es un kit de inicio Arduino y qué contiene? ¿Qué se incluye en un kit de inicio Arduino? [MakeUseOf Explains]Anteriormente presenté el hardware de código abierto Arduino aquí en MakeUseOf, pero necesitará más que solo el Arduino real para construir algo a partir de él y realmente comenzar. Los "kits de inicio" de Arduino son ... Lee mas
- Más componentes interesantes para comprar con su kit de inicio 8 componentes más interesantes para sus proyectos ArduinoEntonces, ¿está pensando en obtener un kit de inicio Arduino, pero se pregunta si algunos LED y resistencias básicos serán suficientes para mantenerlo ocupado durante el fin de semana? Probablemente no. Aquí tienes otros 8 ... Lee mas
- ¿Empezando con su Arduino Starter Kit? Instalación de controladores y configuración de la placa y el puerto Introducción a su kit de inicio Arduino: instalación de controladores y configuración de la placa y el puertoEntonces, se compró un kit de inicio Arduino y posiblemente algunos otros componentes geniales aleatorios, ¿y ahora qué? ¿Cómo empiezas a programar esto con Arduino? Cómo lo configuras... Lee mas
- Fritzing, una herramienta gratuita para dibujar diagramas de circuitos Fritzing: la herramienta definitiva para esbozar proyectos de electrónica [multiplataforma]A pesar de sonar como un alcopop, Fritzing es en realidad un increíble software gratuito que puedes usar para crear Diagramas de circuitos y componentes para usar con placas electrónicas de creación rápida de prototipos, como la fantástica fuente abierta Arduino ... Lee mas
- Una mirada más cercana a la estructura de una aplicación Arduino y el programa Blink de ejemplo Primeros pasos con Arduino: una mirada más cercana a la placa de circuito y la estructura de un programaLa última vez lo dejé después de haber configurado su Arduino para que funcione con Mac o Windows, y después de haber cargado una aplicación de prueba simple que parpadeaba en el LED integrado. Hoy te voy a explicar el código ... Lee mas
- Proyecto Arduino Xmas Tree Lights Un proyecto Arduino: cómo hacer llamativos adornos de luces navideñasEsta es la siguiente parte de nuestra serie de aprendizaje de Arduino, y esta vez aprenderemos y usaremos Arrays para hacer un pequeño adorno de árbol de Navidad con varias secuencias parpadeantes. Este sería un ... Lee mas (También conocido como aprender sobre matrices)
- ¿Qué es binario? ¿Qué es binario? [Explicación de la tecnología]Dado que el binario es absolutamente fundamental para la existencia de las computadoras, parece extraño que nunca hayamos abordado el tema antes, así que hoy pensé en dar una breve descripción general de qué binario ... Lee mas
Hasta aquí llegaremos con los registros de turnos hoy, ya que creo que hemos cubierto mucho. Como siempre, te animo a jugar y ajustar el código, y no dudes en hacer cualquier pregunta que puedas tener en los comentarios, o incluso compartir un enlace a tu increíble proyecto basado en el registro de turnos.
James tiene una licenciatura en Inteligencia Artificial y está certificado por CompTIA A + y Network +. Es el desarrollador principal de MakeUseOf y pasa su tiempo libre jugando paintball y juegos de mesa de realidad virtual. Ha estado construyendo PC desde que era un niño.