Mal wieder den Lötkolben entstauben

Nach der Hitze bedingten Sommerpause habe ich am letzten Wochenende wieder meinen Lötkolben entstaubt und und mir einen LED-Würfel aus 64 blauen 5mm-LEDs gebaut. Da ich keine matten LEDs auftreiben konnte, habe ich die klaren Dioden mit 400er Schleifpapier etwas bearbeitet. Das sah dann so aus:

LEDs vor und nach der Bearbeitung

LEDs vor (unten) und nach (oben) der Bearbeitung

Das Leuchten der matten und klaren LED

Das Leuchten der matten (links) und klaren (rechts) LED

Das Mattieren der LEDs mit dem Schleifpapier war eine ziemliche Fummelarbeit, aber wie man auf dem Bild oben sehen kann, streut das Licht dann besser und die LEDs leuchten komplett blau auf.

Nachdem ich die ersten 16 LEDs einer ersten Ebene zusammen gelötet hatte, habe ich diese auf ein Breadboard montiert und mit meinem Arduino UNO ein erstes kleines Testprogramm drauf laufen lassen. Da ich nicht alle Anoden-Pins anschließen wollte, hatte ich den Test nur mit 8 der 16 LEDs durchgeführt, aber man bekam schon einmal einen ersten Eindruck.

Erste Ebene für meinen 4x4x4er LED-Cube

Erste Ebene für meinen 4x4x4er LED-Cube

Bewegt sieht das ganze dann so aus:

Sonntag Abend hatte ich dann alle 64 LEDs zusammen gebaut und konnte dann die ersten Testläufe machen.

Der fertige Cube

Der fertige Cube

Den Würfel habe ich dabei an einen Arduino MEGA 2560 angeschlossen. Die Schaltung selbst könnt ihr auf instructables nachschauen.

[Update] Hier noch ein kurzes Video meines Cubes:

Und das ist der Code, der das ganze erzeugt:


int LEDPin[] = {30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45};
int PlanePin[] = {22, 23, 24, 25};

int pin; // loop counter für die Ebenen
int apin; // alternative Ebene
int col; // loop counter für die Säulen
int col2;
int col3;

void setup() {
// set up LED pins as output (active HIGH)
for (col=0; col<16; col++) { pinMode( LEDPin[col], OUTPUT ); } // set up plane pins as outputs (active LOW) for (pin=0; pin<4; pin++) { pinMode( PlanePin[pin], OUTPUT ); } randomSeed(analogRead(0)); // Analog-Port einlesen für die Zufalls-Funktion) } void loop() { pin = random(4); apin = random(4); col = random(16); col2 = random(16); col3 = random(16); if (col==col2) { if ((col2 < 15) && (col2 > 2)) {
col2=col2-2;
}
else { col2=col2+2; }
}
digitalWrite( PlanePin[pin], HIGH);
digitalWrite( LEDPin[col3], LOW);
digitalWrite( LEDPin[col], HIGH);
delay(200);
digitalWrite( PlanePin[apin], HIGH);
digitalWrite( LEDPin[col2], HIGH);
delay(200);
digitalWrite( LEDPin[col], LOW);
delay(50);
digitalWrite( LEDPin[col3], HIGH);
digitalWrite( LEDPin[col2], LOW);
digitalWrite( PlanePin[pin], LOW);
digitalWrite( PlanePin[apin], LOW);
}

CC BY-SA 4.0 This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.