Paso 4: visualización
En esta sección hemos utilizado cuatro 8 x 8 matrices de LED de OOLOUT.com. Cada uno tiene 128 LEDs. Es 512 LEDs. Relajarse; Utilizamos solamente la mitad de éstos. Las matrices son de bi-color con LEDs rojo y verde. Optamos por utilizar los rojos. Otra gran cosa es que las filas y las columnas se hicieron comunes. Los rieles de la columna se comportan como el ánodo y los rieles de la fila se comportan como cátodos. Para encender un solo LED Conecte el riel de la fila necesario para 5Volts a través de la resistencia y el carril de columna correspondiente a tierra. Por ejemplo, luz led en la fila 2 y columna 6.
Cuando la matriz se da la vuelta una esquina que se encuentra un pequeño 1 corresponde al pin 1 en la matriz.
El "matrixone.jpg" muestra la matriz, su número de pin y donde el 1 está impreso debajo de la matriz. El segundo esquema de la imagen describe que pin controla cada riel. Tenga en cuenta que hemos seleccionado el LED rojo por lo que estamos utilizando pernos de 2,5,8,11,14,17,20,23 para las columnas. Si usábamos el LED verde se utilice alfileres 1,4,7,10,13,16,19,22 pero el carril de fila sigue siendo la misma.
Como se ve en el esquema de cada columna y fila tienen un pin designado. En "matrixtwo.jpg" las columnas y las filas han sido numeradas para evitar cualquier confusión más. Por lo tanto, si desea encender el Led en la columna 6 y la fila 2 Conecte el circuito in"step3.jpg".
Una simple matriz guía está disponible en la Página Web OOMLOUT. En la guía tienen conectados los pines de la fila de matriz mediante resistencias de 1K a los pernos de la entrada-salida de Arduino y enchufado directamente las columnas en los pines de Arduino. En el programa de muestra han utilizado una función llamada "showsprite" que se enciende todos los LEDs en una columna una a una las vueltas ellos fuera. Luego repite el proceso para la columna siguiente y así sucesivamente. Esto puede parecer una tonto pero esto se hace para reducir la corriente de la Arduino. Visto como procesa tan rápido, a pesar de que los LEDs se encienden por columna, todo sucede tan rápido que el ojo humano la imagen aparece como constante.
En el ejemplo anterior, para una matriz se utilizó un total de 16 pernos, y así si tuviéramos que usar 4 matrices utilizamos 64 pines. Que no tenemos, así que la única solución es utilizar registros de desplazamiento.
Cambio de registros: (74HC595) "step5.jpg"
Programas de ejemplo están disponibles en la Web de Arduino para obtener una comprensión básica de cómo cambio registra trabajo pero haré mi mejor para resumirlo.
El registro de desplazamiento acepta datos como un tren de pulsos de 8 bits. Para permitir el registro de desplazamiento aceptar datos enviamos un poco de entrada a su perno traba. Los datos se envían al pin de datos y luego se cierra el pestillo con un alto a la clavija de enganche. Para sincronizar el Arduino y el cambio de registro enviamos reloj de Arduino a la cambio registra pin de reloj. Todo esto se cubrirá durante la explicación del código.
Mostrar en una matriz usando shift 2 registros:
Ahora que podemos enviar datos a un registro de desplazamiento podemos utilizar para conducir la matriz. De nuestra comprensión anterior enviamos una entrada para la fila y un poco de entrada a la columna para encender un LED.
Como los registros de 8 salidas cada podemos seleccionar una sola columna estableciendo los demás en 1 y la columna obligatorio a 0. Luego enviar los datos específicos a la columna a los registros de cambio de fila. Por ejemplo si querías el siguiente patrón: 10101101 (se muestra en la imagen) puede enviar el patrón para el registro de desplazamiento de fila y 11011111 a la columna de cambio de registro.
Ahora que hemos analizado cómo el registro de desplazamiento funciona con una matriz, veamos cómo aplicarlo para 4 pantallas. El registro de desplazamiento tiene 8 salidas y por lo tanto, su salida puede ser conectada directamente con la matriz.
Llegamos a dos formas de hacerlo
1) tener una fila y columna cambio de registro para cada una de las 4 pantallas. La línea de datos es común a todos como registro de desplazamiento sólo uno recibirá datos a la vez. El reloj es común a todos los registros de cambio deben todos ser sincronizados, pero todos ellos necesitan separar cierres que pueden ser activados por separado. Por lo tanto, necesitamos un total de 10 pines (8 cierres, 1 reloj y 1 datos).
2) la otra opción para reducir el número de pines usado es tener un cambio de columna común registro para todas las pantallas y tener cada fila se registra para cada matriz. Este es el método que elegimos como requirió un menor número de (5 pernos pasador, 1 reloj y 1 datos).
Así que esencialmente podemos enviar datos a cada uno de la fila de registran y luego encienda la columna correspondiente, para pantalla 1 columna cada uno de las matrices. Este proceso es un ciclo y los datos se muestran en cada pantalla a altas velocidades y por lo tanto, la imagen aparece constante en todas las 4 pantallas.
En el lenguaje de programación de Arduino un tipo especial de número entero está disponible llamado una máscara de bits que le permite escribir un número en binario, por ejemplo "binary_integer int = B11001010". Esto le permite escribir cómo sería cada línea de pantalla. Al hacer una matriz de estos para cada columna que se puede definir lo que parece una pantalla para cada personaje que debe mostrarse. Para almacenar cada carácter y sus columnas se utiliza una matriz de punteros que apuntan a que en la memoria el carácter es, por lo que es más fácil de acceso.
Para visualizar en una pantalla que necesitamos enviar el registro de datos para el cambio deseado mediante la función predefinida de Arduino:
"digitalwrite (latchrow, bajo); Programación de cierre del registro de cambio requiere baja.
shiftOut (datapin, clockpin, MSBFIRST, Rowmsk1); “
El cambio de función envía los datos para el registro de desplazamiento. La primera entrada es el número de pin de que los datos enviados desde el arduino, entonces el pin del arduino que el reloj está siendo enviado, a continuación se envía el formato en que los datos, en este caso es el bit más significativo primero. La última entrada es un entero (en formato normal o máscara) 8 bits de longitud que los datos enviados para el registro de desplazamiento.
"digitalWrite (latchrowone, HIGH); Esta función establece el cierre en alto una vez que los datos ha sido enviados."
Tenemos que mostrar el tiempo necesario para alcanzar un objetivo y por lo tanto, es necesario que reciba el tiempo como una entrada de tipo entero largo, convertir a string para que nos podemos encontrar que en cada pantalla el carácter correspondiente.
Esto se hace usando el constructor string, una función que convierte un número entero largo en una cadena que contiene cada dígito. Cadena "timeString = String(123456,DEC);"
hace! timeString = {1,2,3,4,5,6}; ".
Utilizamos una caja de interruptor que seleccione que matriz de máscara de bits para mostrar, y luego enviar a la función de visualización de salida demasiado la pantalla.