Paso 8: Programar el Arduino para animar en el aire
![]()
  El programa para el Arduino se puede encontrar en el siguiente archivo de texto adjunto (o en la parte inferior del paso). Adjunto ambos programas - el FUFU, la INSTRUCTABLES y lo WOOOSH.   El programa es básicamente un procedimiento que analiza una matriz de unos y ceros y encendiendo y apagando el LED en consecuencia. Cada letra se codifica como una matriz, y encadenar las Matrices (a una matriz de largo) le da todo el texto. Cada columna de la representan matriz uno de los 7 leds montados en fila. Cada fila de la matriz representa el estado momentáneo de todos los 7 leds. Funcionamiento en todas las filas - le da la forma final de la letra / símbolo. En este programa, cada letra tiene "altura" de 7 leds y "ancho" de 7 "micro períodos" (el tiempo de los leds con su estado antes de siguiente la actualización).   Es un poco complicado hacer el prueba y el error de las letras y tipos de letra que desea escribir - pero finalmente usted debe resultados muy agradables. La idea es pensar de cada uno llevó un píxel que se está propagando con el tiempo y girándolo dentro y fuera, se dibuja imágenes a lo largo del círculo en que se ejecute.   A continuación es el texto del programa para el Arduino escribir "instructables".       int contador = 1;                  Cuanto mayor sea el número, menor el tiempo. pinCount int = 7;           el número de pines (es decir, el número de leds) int arryMax = 727;          Número de bits total en toda la cadena int ltr8c1 [] = {//Decleration de la matriz - una matriz de largo de la cadena / / escritura "instructables" / / letra "i" (4) //Looking en la matriz, de arriba hacia abajo, usted recibe la carta de F.   1,1,1,1,1,0,1, 0,0,0,0,0,0,0 0,0,0,0,0,0,0, //This línea de zeroz separa la letra acaba de terminar de la siguiente carta - apagando todos los leds. 0,0,0,0,0,0,0, / letra "n" (8) 1,1,1,1,1,1,1, 0,0,0,0,1,1,0, 0,0,0,0,0,1,1, 0,0,0,0,0,0,1, 0,0,0,0,1,1,0, 1,1,1,1,1,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0,0, / letra "s" (9) 0,1,0,0,1,1,0, 1,1,0,0,1,1,0, 1,0,0,1,0,0,1, 1,0,0,1,0,0,1, 1,0,0,1,0,0,1, 1,1,1,0,0,1,0, 0,1,1,0,0,1,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0,0, / letra "t" (9) 0,0,0,0,0,1,0, 0,0,0,0,0,1,0, 0,0,0,0,0,1,0, 0,1,1,1,1,1,1, 1,0,0,0,0,1,0, 1,0,0,0,0,1,0, 0,1,0,0,0,1,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0,0, / letra "r" (9) 1,1,1,1,1,1,1 , 0,0,0,0,1,1,0, 0,0,0,0,0,1,1, 0,0,0,0,0,0,1, 0,0,0,0,0,0,1, 0,0,0,0,0,1,0, 0,0,0,0,1,1,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0,0, / letra "u" (8) 0,1,1,1,1,1,1, 1,1,0,0,0,0,0, 1,0,0,0,0,0,0, 1,0,0,0,0,0,0, 1,1,0,0,0,0,0, 0,1,1,1,1,1,1, 0,0,0,0,0,0,0, 0,0,0,0,0,0,0, / letra "c" (9) 0,0,1,1,1,0,0, 0,1,1,0,1,1,0, 1,1,0,0,0,1,1, 1,0,0,0,0,0,1, 1,0,0,0,0,0,1, 0,1,0,0,0,1,0, 0,1,0,0,0,1,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0,0, / letra "t" (9) 0,0,0,0,0,1,0, 0,0,0,0,0,1,0 , 0,0,0,0,0,1,0, 0,1,1,1,1,1,1, 1,0,0,0,0,1,0, 1,0,0,0,0,1,0, 0,1,0,0,0,1,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0,0, / letra "a" (9) 0,0,1,0,0,1,0, 0,1,0,1,0,0,1, 1,0,0,0,1,0,1, 1,0,0,0,1,0,1, 0,1,0,0,1,0,1, 0,1,1,0,1,0,1, 1,1,1,1,1,1,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0,0, / letra "b" (9) 1,1,1,1,1,1,1, 0,1,0,1,0,0,0, 1,0,0,0,1,0,0, 1,0,0,0,0,1,0, 1,0,0,0,0,1,0, 0,1,0,0,1,0,0, 0,0,1,1,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0,0, / letra "l" (4) 1,1,1,1,1,1,1, 0,0,0,0,0,0,0, 0,0,0,0,0,0,0 0,0,0,0,0,0,0 / letra "e" (9) 0,0,1,1,1,0,0, 0,1,0,1,0,1,0, 1,0,0,1,0,0,1, 1,0,0,1,0,0,1, 1,0,0,1,0,0,1, 1,0,0,1,0,1,0, 0,0,0,1,1,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0,0, / letra "s" (8) 0,1,0,0,1,1,0, 1,1,0,0,1,1,0, 1,0,0,1,0,0,1, 1,0,0,1,0,0,1, 1,0,0,1,0,0,1, 1,1,1,0,0,1,0, 0,1,1,0,0,1,0, 0,0,0,0,0,0,0}; Añadir int = 0; int inPin = 0; int estado = alta; / / el estado actual de la salida del pin int lectura; / / lectura de la corriente de la clavija de entrada int anterior = bajo; / / la lectura anterior desde el tiempo de entrada de pin = 0; / / la última vez que la pin de salida fue alternado safedelay largo = 50; / / un retardo de seguridad para evitar parpadeo debido a multi disparo. void setup() {} / / Programa para escritura de INSTRUCTABLES int thisPin; para (int thisPin = 0; thisPin < pinCount; thisPin ++) {/ / usar un bucle inicializar cada pin como salida. Los elementos de la matriz están numerados del 0 al (pinCount - 1). pinMode (thisPin + 1, salida); } pinMode (inPin, entrada); / / initializesinitializes pin "0" como un pin de entrada - utilizado para el pasador del gatillo. } void loop() {//Here comienza el bucle de la lectura de sequance real = digitalRead(inPin);   Si (leer == alto & & anterior == baja & & millis() - tiempo > safedelay) {/ / comprobar si hubo un disparo. Si sí y el retardo de seguridad del gatillo pasado ha pasado, comienza el sequance.     tiempo = millis();                                                                                                                    Un contador de tiempo (milisegundos) - coults el tiempo de retardo de seguridad.     para (agregar int = 0; agregar < arryMax; agregar = agregar + 7) {//The "añadir" puntos de varible en la fila pertinente - hasta llegar al final de la matriz.       para (int thisPin = 0; thisPin < = pinCount; thisPin ++) {//The varible "este pin" señala en la columna correspondiente si (ltr8c1 [thisPin + Añadir]) {digitalWrite (thisPin + 1, alto);} else {digitalWrite(thisPin+1,LOW);}  Si la celda correspondiente de la matriz es igual a 1, activar el relevalnt conducido. De lo contrario (si es igual a 0)-Apague el led.         } delay(timer);                                                                                                                       Mantener el estado actual por un tiempo.      para (int thisPin = 0; thisPin < = pinCount; thisPin ++) {digitalWrite(thisPin+1,LOW);        }}} anterior = lectura; }