Der Würfel muss nun mit dem Arduino verbunden werden. In der folgenden Abbildung wird die unterste Ebene vereinfacht auf einem Steckbrett abgebildet
Anschluss der 9 Anoden und einer Ebene
Es ist zu erkennen, dass die Kathoden so wie in dem Würfel alle untereinander verbunden sind. Links kann man sehen, dass alle Kathoden einer Ebene über einen Anschluss mit analogen Input Pin 0 verbunden sind. Input?!, wir brauchen doch Outputs! Bei dieser Gelegenheit lernen wir, dass die analogen Input Pins 0 bis 5 auch als digitale Output Pins benutzt werden können. Sie werden dann von 14 bis 19 durchnummeriert, analogIn0 = digitalOut14, analogIn1 = digitalOut15 usw. Wow, 6 zusätzliche Output Pins!!! Die beiden anderen Ebenen verbinden wir mit analogIn1 bzw. digitalOut15 und mit analogIn2 bzw. digitalOut16. Drei der analogen Input Pins nutzen wir nicht, um evtl. später doch noch analoge Eingänge nutzen zu können.
Alle neun Anodenanschlüsse verbinden wir der Reihe nach mit den digitalen Output Pins 4 bis 12. Die Pins DigitalOut0 und DigitalOut1 lassen wir bewusst ebenfalls frei, für mögliche serielle Anschlüsse an diesen Pins.
Sobald du alles verkabelt hast, kompiliere den folgenden Sketch und übertrage ihn auf den Arduino.
Erster Test
int delayTime = 200; // Zeitspanne für An oder Aus
// Merke: die analogen Input-Pins (0-5) sind ebenfalls digitale Ausgänge (14-19)
// Pin DigitalOut0 (seriell RX), DigitalOut1 (seriell TX) und
// AnalogIn3, 4 und 5 werden
// wegen möglicher, zukünftiger Verwendung nicht genutzt.
// Anoden der 9 LEDs
int anode[] = {
4, 5, 6, 7, 8, 9, 10, 11, 12};
// 3 Kathodenebenen
int cathode[] = {
14, 15, 16};
// Alle Pins auf OUTPUT setzen
void setup() {
for (int a = ; a < 9; a++) { // Alle Anoden auf OUTPUT
pinMode(anode[a], OUTPUT);
}
for (int c = ; c < 3; c++) { // Alle Kathoden auf OUTPUT
pinMode(cathode[c], OUTPUT);
digitalWrite(cathode[c], HIGH); // Alles ausstellen
}
}
void loop() {
// Jede einzelne LED testen
oneByOne();
}
// Testfunktionen
// Jede einzelne LED
// Reihenfolge
// erst von vorne nach hinten
// dann von links nach rechts
// dann von unten nach oben
void oneByOne() {
for(int c = ; c < 3; c++) { // Alle Ebenen nacheinander
for(int a = ; a < 9; a++) { // Alle LEDs einer Ebene nacheinander
digitalWrite(anode[a], HIGH); // LED anschalten
digitalWrite(cathode[c], LOW);
delay(delayTime);
digitalWrite(anode[a], LOW); // LED ausschalten
digitalWrite(cathode[c], HIGH);
}
}
}
Überprüfe die Reihenfolge der blinkenden LEDs. Um die folgenden Beispiele besser nachvollziehen zu können, sollte das Blinken in der vorderen Ecke unten links beginnen, dann nach hinten weiter laufen, dann die mittlere und linke untere Reihen und sich dann in der mittleren und oberen Ebene fortsetzen. Wenn die Reihenfolge bei dir eine andere ist, stecke die Anschlüsse solange um, bis die Reihenfolge stimmt.
Das sollte so dann aussehen:
Ort
| Anhang | Größe |
|---|---|
| CubeEbenen.pde | 3.65 KB |
| CubeProgmem.pde | 13.86 KB |




vor 1 Jahr 13 Wochen
Sehr hübsches Projekt. Schön wenn man sich mal wieder bischen mit dem Lötkolben austoben will. was ist denn die maximal realistische Größe so eines LED würfels? Nur um mal bischen rumzuspinnen :)
Antworten