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; }