Paso 9: Cambiar el código de
Esta es mi versión de optimizar lo que he hecho. Hay probablemente mejores maneras de hacerlo, pero esto a mi me funciono y me permite escribir rápidamente nuevos efectos.En el código anterior corrí código para encender cada fila y columna uno a la vez. Esto está bien para una prueba rápida y principiantes muestra cómo opera el arduino. Pero como usted consigue más complejo entonces no es muy eficiente y el tamaño del programa será en grandes para caber en un arduino.
Para hacerlo más fácil de utilizar y ampliar más adelante vamos a crear algunas nuevas funciones.
La primera función se llama resetLEDS() cuando esto se llama entonces se apagará todos los LEDS a la vez. Esto es lo mismo que la rutina de configuración, pero simplemente no tenemos que configurar los pines como salidas. Sólo este bucle for recorre en iteración los arreglos de discos y apaga todos los LEDS.
void resetLEDS() {}
para (int thisPin = 0; thisPin < 8; thisPin ++) {}
digitalWrite (col [thisPin], LOW); Apagar LED
digitalWrite (filas [thisPin], HIGH);
}
La siguiente función vamos a crear es encender un solo LED. Esperará por un tiempo determinado y luego lo apaga primero tenemos que añadir una nueva variable por encima de las definiciones de la matriz. Agregue la siguiente línea
int delayPin 1; Esto retrasa el código antes de que se apaga el led
A continuación, añadimos dos nuevas funciones
void resetLEDS() {}
para (int thisPin = 0; thisPin < 8; thisPin ++) {}
digitalWrite (filas [thisPin], HIGH);
digitalWrite (col [thisPin], LOW);
}
}
{} void onLED (int numColumna, int rownum)
digitalWrite (col [numColumna], HIGH);
digitalWrite (filas [rownum], LOW);
Delay(delaypin);
digitalWrite (col [numColumna], LOW);
digitalWrite (filas [rownum], HIGH);
}
La primera función apenas pasa a través de cada LED y apaga les todo
La segunda función funciona tomando un número de columna y fila que se pasa a ella por el código del programa principal. El código entonces vuelve la columna obligatorio (ánodo) al alta y la fila necesaria (cátodo) a la baja que encenderá un LED especial. Entonces se llama un retraso y luego el LED se apaga mediante la inversión de los Estados anteriores.
Con esta función, entonces podemos cambiar el código de bucle para leer este
onLED(0,0);
onLED(1,1);
onLED(0,1);
onLED(1,0);
onLED(6,0);
onLED(7,1);
onLED(6,1);
onLED(7,0);
onLED(3,3);
onLED(4,3);
onLED(3,2);
onLED(4,2);
onLED(0,5);
onLED(1,6);
onLED(2,7);
onLED(3,7);
onLED(4,7);
onLED(5,7);
onLED(6,6);
onLED(7,5);
Esto le dará un patrón de la cara sonriente en la matriz. Como este bucle se ejecuta rápidamente que los LEDS parecen deberse a todos permanentemente en el pensamiento del cerebro ve todos los LEDS en el mismo tiempo.
Para hacer que los LEDs parecen flash entonces puede cambiar la función de bucle para leer esto
para (int x = 0; x < 500; x ++); {
onLED(0,0);
onLED(1,1);
onLED(0,1);
onLED(1,0);
onLED(6,0);
onLED(7,1);
onLED(6,1);
onLED(7,0);
onLED(3,3);
onLED(4,3);
onLED(3,2);
onLED(4,2);
onLED(0,5);
onLED(1,6);
onLED(2,7);
onLED(3,7);
onLED(4,7);
onLED(5,7);
onLED(6,6);
onLED(7,5);
}
resetLEDS();
Delay(500);
Descargue el bosquejo (ChangedLEDTestFlash) para ver los cambios.