Paso 5: programación
Para la programación, se puede hacer un montón de patrones diferentes, pero básicamente para encender un LED, es necesario establecer patillas su columna alta y es de la capa baja. Esto causa actual flujo a través de la varilla de la columna a través del LED y volver a la Arduino a través de la clavija de la capa. Otra cosa a la Nota: Si quieres encender varios leds a la vez, puede encenderse otro LED que no enciende, por lo que tendría que flashea por separado tan rápidamente que parece que están en el mismo tiempo. Un ejemplo de esto es si desea luz pin 2 en la capa superior y el pin 3 en la capa media, pin 2 en la capa media y el pin 3 de la capa superior también convertiría porque sus pernos de columna se establecería a su capa pins se establecería a baja y alta.
Este es mi código:
void setup() { for (int i = 2; i <= 13; i++) pinMode(i, OUTPUT); for (int i = 11; i <=13; i++) digitalWrite(i, HIGH); }
void loop() { int del = 100; //flashes LED's from top to bottom for (int i = 0; i <= 3; i++) { for (int i = 0; i <= 10; i++) digitalWrite(i, HIGH); for (int i = 11; i <= 13; i++) { digitalWrite(i, LOW); delay(del); } for (int i = 11; i <= 13; i++) { digitalWrite(i, HIGH); delay(del); } } //flashes LED's in a downwards spiral for (int i = 0; i <= 10; i++) digitalWrite(i, LOW); for (int i = 0; i < 3; i++) { flash(del, 0, 0, i); flash(del, 1, 0, i); flash(del, 2, 0, i); flash(del, 2, 1, i); flash(del, 2, 2, i); flash(del, 1, 2, i); flash(del, 0, 2, i); flash(del, 0, 1, i); } //flashes LED's in one random column from top to bottom for (int i = 0; i <= 9; i++) { int x = random(3); int y = random(3); for (int i = 0; i <= 2; i++) { flash(del+50, x, y, i); } delay(del); } //randomly flashes LED's for (int i = 0; i <= 200; i++) { int x = random(3); int y = random(3); int z = random(3); flash(10, x, y, z); } //flashes LED's from one corner outwards for (int i = 0; i <= 3; i++) { flash(2*del, 0, 0, 0); for (int i = 2*(del/7); i >= 0; i--) { flash(1, 0, 1, 0); flash(1, 1, 1, 0); flash(1, 1, 0, 0); flash(1, 0, 0, 1); flash(1, 0, 1, 1); flash(1, 1, 1, 1); flash(1, 1, 0, 1); } for (int i = 2*(del/19); i >= 0; i--) { flash(1, 0, 2, 0); flash(1, 1, 2, 0); flash(1, 2, 2, 0); flash(1, 2, 1, 0); flash(1, 2, 0, 0); flash(1, 0, 2, 1); flash(1, 1, 2, 1); flash(1, 2, 2, 1); flash(1, 2, 1, 1); flash(1, 2, 0, 1); flash(1, 0, 0, 2); flash(1, 0, 1, 2); flash(1, 0, 2, 2); flash(1, 1, 0, 2); flash(1, 1, 1, 2); flash(1, 1, 2, 2); flash(1, 2, 0, 2); flash(1, 2, 1, 2); flash(1, 2, 2, 2); } } } void onOff(boolean state, int x, int y, int z) { //turns on or off led at (x, y, z) if (state) { digitalWrite(z+11, LOW); digitalWrite((3*x)+y+2, HIGH); } else { digitalWrite(z+11, HIGH); digitalWrite((3*x)+y+2, LOW); } } void flash(int msec, int x, int y, int z) { //flashes led at (x, y, z) on and off for msec onOff(true, x, y, z); //milliseconds delay(msec); onOff(false, x, y, z); }
El código puede variar dependiendo de su cableado y cómo desea que el cubo del LED a la ley, pero esto podría dar una idea de lo podría parecer. Que el cubo de LED trabaja y si tienes cualquier duda, dejar en los comentarios.