Ratgeber · 17 Min. Lesezeit

LED-Würfel mit Arduino: 3x3x3 und 4x4x4 bauen und programmieren

LED-Würfel mit Arduino bauen: Lötschablone, Aufbau von 3x3x3 und 4x4x4, Ebenen mit Transistoren schalten, Vorwiderstände, 74HC595 und Animationscode.

Ein LED-Würfel (LED Cube) gehört zu den eindrucksvollsten Lichtprojekten, die du mit einem Arduino bauen kannst: LEDs in einem dreidimensionalen Raster leuchten Ebene für Ebene auf und zeichnen rotierende Flächen, fallende Regentropfen und Würfel, die in der Luft wachsen und schrumpfen. Für deinen ersten LED-Würfel mit Arduino ist die Größe 3x3x3 (27 LEDs) oder 4x4x4 (64 LEDs) ideal; dafür reichen die Pins eines Arduino Uno, ein paar Transistoren und etwas Geduld beim Löten. Der Trick: Statt jeder LED einen eigenen Pin zu geben, nutzt du das Ebenen-Säulen-Multiplexing. So steuerst du 27 LEDs mit 12 Pins und 64 LEDs mithilfe von zwei 74HC595-Chips mit nur 7 Pins.

In dieser Anleitung lernst du, wie ein LED-Würfel funktioniert, wie du eine Lötschablone baust, wie du die Ebenen Schritt für Schritt verbindest, warum die Ebenen über Transistoren geschaltet werden müssen und wie man die Widerstände berechnet. Danach findest du Arduino-Code, der auf einem 3x3x3-Würfel Animationen aus Arrays abspielt, die Erweiterung auf einen 4x4x4-Würfel mit dem 74HC595, Versionen für ESP32 und Raspberry Pi Pico (MicroPython), WS2812B als Alternative für einen farbigen Würfel und Lösungen für die häufigsten Aufbaufehler wie verpolte LEDs oder kalte Lötstellen.

5-mm-LED für einen LED-Würfel
Der Baustein eines LED-Würfels ist die 5-mm-LED: Das lange Bein ist die Anode (+), das kurze Bein und die abgeflachte Seite am Gehäuse markieren die Kathode (−).

Was ist ein LED-Würfel und wie funktioniert er?

Ein LED-Würfel entsteht, indem man waagerechte Ebenen aus gleichmäßig angeordneten LEDs übereinanderstapelt. In jeder Ebene werden die Kathodenbeine (−) aller LEDs miteinander verlötet, sodass jede Ebene eine einzige gemeinsame Kathodenleitung hat. Die Anodenbeine (+) übereinanderliegender LEDs werden senkrecht verlötet und bilden die Säulen. Ein 3x3x3-Würfel hat 3 Ebenen und 9 Säulen, ein 4x4x4-Würfel 4 Ebenen und 16 Säulen. Jede LED sitzt genau am Schnittpunkt einer Ebene und einer Säule: Um eine LED einzuschalten, legst du an ihre Säule eine positive Spannung und verbindest ihre Ebene mit GND.

Jede LED im Würfel lässt sich mit drei Koordinaten beschreiben: x (von links nach rechts), y (von vorne nach hinten) und z (von unten nach oben). Im Code dieses Artikels wird die Säulennummer mit c = y × 3 + x berechnet (beim 4x4x4 c = y × 4 + x), z ist die Ebenennummer. Ähnlich wie ein Pixel auf einem Bildschirm heißt ein einzelner Lichtpunkt im Würfel Voxel (Volumenpixel). Eine Animation zu erstellen bedeutet im Grunde, zu entscheiden, welche Voxel zu welchem Zeitpunkt leuchten.

Wie funktioniert Ebenen-Säulen-Multiplexing?

Schaltest du mehrere Ebenen gleichzeitig ein, lässt die positive Spannung an einer Säule in jeder aktiven Ebene dieser Säule eine LED leuchten; das gewünschte Muster bekommst du so nicht hin. Deshalb wird der Würfel Ebene für Ebene abgetastet: Der Arduino schaltet zuerst alle Ebenen aus, schreibt das Säulenmuster der ersten Ebene auf die Pins, schaltet nur diese Ebene für einige Millisekunden ein, schaltet sie wieder aus und geht zur zweiten Ebene über. Wiederholt sich diese Schleife mehr als hundertmal pro Sekunde, hält dein Auge das Licht kurz fest (Trägheit des Auges), und du siehst alle Ebenen gleichzeitig leuchten.

Die Abtastrate lässt sich leicht berechnen: Bildwiederholrate = 1 / (Anzahl der Ebenen × Zeit pro Ebene). Lässt du beim 3x3x3-Würfel jede Ebene 3 ms an, dauert ein Durchlauf 9 ms, und der Würfel wird etwa 110-mal pro Sekunde aufgefrischt. Beim 4x4x4 mit 2 ms pro Ebene dauert ein Durchlauf 8 ms, das ergibt 125 Hz. Unter 50–60 Hz bemerkt das Auge ein Flimmern; über 100 Hz wirkt er für das Auge völlig ruhig, und auf Handyvideos entstehen weniger Streifen. Der Preis ist die Helligkeit: Weil jede Ebene nur 1/3 der Zeit leuchtet (beim 4x4x4 nur 1/4), sinkt der mittlere Strom einer LED auf diesen Bruchteil ihres Momentanstroms.

WürfelLEDsSäulen + EbenenPins bei direkter AnsteuerungPins mit 74HC595Pins ohne Multiplexing
3x3x3279 + 3123 + 3 = 627
4x4x46416 + 4203 + 4 = 764
5x5x512525 + 5303 + 5 = 8125
8x8x851264 + 8723 + 8 = 11512

Materialliste

Bauteil3x3x3-Würfel4x4x4-Würfel (mit 74HC595)
5-mm-LED (einfarbig, am besten diffus)27 + 3 Reserve64 + 6 Reserve
Vorwiderstand pro Säule9 × 220 Ω16 × 330 Ω (blau, weiß) oder 470 Ω (rot, gelb)
NPN-Transistor (Ebene)3 × 2N2222A oder BC3374 × 2N2222A oder BC337
Basiswiderstand3 × 470 Ω4 × 470 Ω
SchieberegisterNicht nötig2 × 74HC595 (74HCT595 für ESP32 und Pico) + je 100 nF
ControllerArduino Uno oder NanoArduino Uno, Nano, ESP32 oder Pico
AufbauLochrasterplatine, dünner VolldrahtLochrasterplatine, 0,5–0,8 mm verzinnter Kupferdraht
WerkzeugLötkolben, Lötzinn, Seitenschneider, Zange, 5-mm-BohrerDasselbe Werkzeug + gleich hohe Abstandshalter
Arduino Uno
Arduino Uno
220 Ω
220 Ω
Breadboard
Breadboard
Jumper
Jumper

Eine Lötschablone bauen

Das Geheimnis eines sauberen Würfels ist die Schablone. Lötest du die LEDs freihändig, verrutschen die Abstände, die Ebenen werden schief und der Würfel sieht verzogen aus. Die Schablone ist ein Holzstück mit gleichmäßig verteilten Löchern, in denen die LEDs kopfüber sitzen, also mit der Kuppel nach unten. Den Abstand bestimmt die Länge des Kathodenbeins: Bei den meisten 5-mm-LEDs ist das kurze Bein etwa 25 mm lang, miss deine eigenen LEDs aber mit dem Lineal nach. Wenn du das Bein 2–3 mm vom Gehäuse entfernt um 90° biegst, sollte der waagerechte Rest das Bein der Nachbar-LED um 2–3 mm überlappen; deshalb sind 20 mm Abstand ein guter Ausgangspunkt.

  1. Zeichne mit dem Lineal ein 3x3- (oder 4x4-) Raster auf Sperrholz, MDF oder dicke Pappe, mit 20 mm zwischen den Punkten und mindestens 2 cm Rand.
  2. Markiere jeden Punkt zuerst mit einem Nagel und bohre ihn dann senkrecht mit einem 5-mm-Bohrer. Die LED soll fest im Loch sitzen, sich aber ohne Kraft herausziehen lassen; ist sie zu stramm, weite das Loch leicht auf.
  3. Zeichne an einer Kante der Schablone einen Pfeil für die Richtung der Kathode; das kurze Bein jeder LED zeigt in dieselbe Richtung.
  4. Bereite vier gleich hohe Abstandshalter vor, die zu deinem Ebenenabstand passen und beim Verbinden die obere Ebene tragen; Reste von Holzleisten oder gefaltete Pappe reichen.
Teste vor dem Löten jede LED einzeln: Halte das lange Bein an den Pluspol und das kurze an den Minuspol einer 3-V-Knopfzelle CR2032. Auch die Diodenprüfung eines Multimeters bringt eine LED schwach zum Leuchten. Eine defekte LED aus der Mitte eines Würfels auszulöten ist sehr mühsam. Für die Optik solltest du diffuse LEDs wählen; klare LEDs bündeln das Licht in eine Richtung, deshalb leuchtet der Würfel von der Seite betrachtet ungleichmäßig. Die Kuppel klarer LEDs kannst du mit feinem Schleifpapier mattieren.

Aufbau Schritt für Schritt: Ebenen und Säulen

  1. Beine biegen: Biege das kurze Bein (Kathode) jeder LED 2–3 mm vom Gehäuse entfernt um 90° waagerecht in Pfeilrichtung der Schablone. Das lange Bein (Anode) bleibt senkrecht.
  2. Erste Ebene bestücken: Setze die LEDs mit der Kuppel nach unten in die Löcher. Jedes Kathodenbein einer Reihe soll das Kathodenbein der nächsten LED berühren; das Bein der letzten LED einer Reihe darf frei bleiben.
  3. Kathoden verlöten: Löte jede Kontaktstelle bei 320–350 °C Lötspitzentemperatur in höchstens 2–3 Sekunden. Löte dann einen geraden Draht (ein abgeschnittenes Widerstandsbein oder verzinnten Kupferdraht) quer über die Enden der Reihen, um sie zu verbinden. So wird die Ebene zu einer einzigen elektrischen Leitung und zugleich zu einem stabilen Rahmen; beim 4x4x4 macht ein Draht an beiden Enden die Ebene noch stabiler.
  4. Ebene testen: Verbinde die Kathodenleitung mit GND, ohne die Ebene aus der Schablone zu nehmen, und tippe jedes Anodenbein über einen 220-Ω-Widerstand mit 5 V an. Leuchtet eine LED nicht, tausche sie jetzt aus.
  5. Weitere Ebenen bauen: Fertige auf die gleiche Weise insgesamt 3 (oder 4) Ebenen. Die Kathodenbeine sollen in jeder Ebene in dieselbe Richtung zeigen, damit die Säulen genau übereinanderliegen.
  6. Ebenen verbinden: Lass eine Ebene in der Schablone und richte die nächste auf den Abstandshaltern genau darüber aus. Biege an der Spitze jedes nach oben zeigenden Anodenbeins der unteren LEDs einen kleinen 2-mm-Knick, damit das Bein am Gehäuse der oberen LED vorbeiläuft und an deren Anodenbein anliegt. Löte zuerst die vier Ecken, prüfe die Ausrichtung und verlöte dann die restlichen Säulen.
  7. Ebenenleitungen herausführen: Löte an die Kathodenleitung jeder Ebene einen Draht und führe ihn an einer Seite des Würfels nach unten. Diese Drähte dürfen sich gegenseitig und die Säulen nicht berühren; lass einige Millimeter Abstand.
  8. Auf die Grundplatte setzen: Dreh den Würfel um; die freien Anodenbeine der zuletzt angelöteten Ebene zeigen jetzt nach unten, und diese Ebene wird zur Ebene direkt über der Grundplatte, also zur untersten Ebene (z = 0). Stecke die Beine und Ebenendrähte durch eine Lochrasterplatine, verlöte sie und setze die Säulenwiderstände neben jede Säule.
Der teuerste Fehler beim Aufbau ist eine einzige verpolte LED. Sie bleibt nicht nur selbst dunkel: Wenn ein Säulenpin LOW ist, öffnet sie einen Strompfad in Sperrrichtung von der Ebenenleitung in diese Säule, und auf Ebenen, die aus sein sollten, können Geister-LEDs aufleuchten. Prüfe beim Einsetzen jeder LED in die Schablone, dass das kurze Bein (die abgeflachte Gehäuseseite) zum Pfeil zeigt, und teste jede Ebene unbedingt, bevor du sie verbindest.

Ebenen mit Transistoren schalten

NPN-Transistor
Den Ebenenstrom trägt ein NPN-Transistor, nicht der Arduino-Pin: 2N2222A (E-B-C) oder BC337 (C-B-E) sind eine gute Wahl.

Ein Säulenpin versorgt immer nur eine LED, doch wenn eine Ebene eingeschaltet ist, fließt der Strom aller LEDs dieser Ebene über dieselbe Kathodenleitung nach GND zurück. Beim 3x3x3-Würfel sind das 9 LEDs × 12,7 mA ≈ 115 mA, beim 4x4x4-Würfel mit 74HC595 16 LEDs × 5 mA ≈ 80 mA. Für einen Pin des Arduino Uno werden 20 mA empfohlen, absolutes Maximum sind 40 mA; eine Ebenenleitung darfst du also nicht direkt an einen Pin hängen. Die Lösung ist ein NPN-Transistor unter jeder Ebene: Kollektor an die Ebenenleitung, Emitter an GND und Basis über einen Widerstand an einen Arduino-Pin. Geht der Pin auf HIGH, gerät der Transistor in die Sättigung und zieht die Ebene auf GND. Damit der Transistor voll durchschaltet, wählst du einen Basisstrom von etwa 1/10 bis 1/20 des Kollektorstroms: Für 115 mA brauchst du 6–12 mA, und (5 V − 0,7 V) / 470 Ω ≈ 9 mA liegt genau in diesem Bereich. Details findest du im Artikel Was ist ein Transistor?, die Pinbelegungen im Transistor-Tool.

TransistorDauer-ICPinfolge (beschriftete Seite vorne)Einsatz im LED-Würfel
BC547100 mAC-B-ENur für Würfel mit wenig Strom; die 115 mA eines 3x3x3 liegen über dem Limit
2N2222A600 mAE-B-CIdeal für 3x3x3 und 4x4x4
BC337800 mAC-B-EIdeal für 3x3x3 und 4x4x4
IRLZ44N (Logic-Level-MOSFET)Dutzende AmpereG-D-SGroße Würfel wie 8x8x8; 220 Ω zum Gate, 10 kΩ von Gate nach GND

Widerstände berechnen: Säulen- und Basiswiderstand

Der Säulenwiderstand ist das einzige Bauteil, das den LED-Strom begrenzt, und jede Säule bekommt einen. Einen Widerstand pro LED brauchst du nicht, weil in einer Säule immer nur eine LED gleichzeitig leuchtet. Die Formel stammt aus dem ohmschen Gesetz: R = (VVersorgung − VLED − VCE(sat)) / ILED. Bei 5 V Versorgung, einer roten LED mit 2,0 V Flussspannung und einem Transistor, der in der Sättigung etwa 0,2 V verliert, ergibt sich für 12 mA R = (5 − 2,0 − 0,2) / 0,012 ≈ 233 Ω. Der nächste Normwert, 220 Ω, lässt etwa 12,7 mA durch die LED fließen. Bei einer blauen LED mit 3,1 V liefert derselbe 220-Ω-Widerstand etwa 7,7 mA, was im Multiplexbetrieb noch gut sichtbar ist.

LED-FarbeFlussspannung (VF)3x3x3, direkt am Arduino (5 V)4x4x4, 74HC595 (5 V)
Rot, gelb1,8–2,2 V220 Ω (≈12–13 mA)470 Ω (≈5–6 mA)
Echtgrün, blau2,9–3,3 V180–220 Ω (≈8–9 mA)330 Ω (≈4–5 mA)
Weiß2,9–3,4 V180–220 Ω (≈7–9 mA)330 Ω (≈4–5 mA)

Beim Würfel mit 74HC595 wählen wir bewusst größere Widerstände: Über den VCC- oder GND-Pin dieses Chips dürfen insgesamt höchstens 70 mA fließen, und bei eingeschalteter Ebene können alle acht Ausgänge gleichzeitig leuchten. 8 × 5,5 mA ≈ 44 mA lassen einen sicheren Abstand. Der mittlere LED-Strom, der die wahrgenommene Helligkeit bestimmt, ergibt sich aus dem Momentanstrom geteilt durch die Anzahl der Ebenen: 12,7 / 3 ≈ 4,2 mA beim 3x3x3 und 5,5 / 4 ≈ 1,4 mA beim 4x4x4. Moderne, effiziente LEDs sind bei diesen Strömen in Innenräumen gut zu sehen, in einem sehr hellen Raum kann ein 4x4x4-Würfel aber etwas schwach wirken. Mit den Werten deiner eigenen LED rechnest du am einfachsten mit den Tools LED-Vorwiderstand und LED-Spannungen.

Schaltplan des 3x3x3-LED-Würfels

VerbindungArduino Uno / NanoHinweis
Säulen 0–8 (Anoden)D2–D10220-Ω-Vorwiderstand an jeder Säule
Untere Ebene (z = 0)A0Über 470 Ω an die Basis von Transistor 1
Mittlere Ebene (z = 1)A1Über 470 Ω an die Basis von Transistor 2
Obere Ebene (z = 2)A2Über 470 Ω an die Basis von Transistor 3
Kollektoren der Transistoren—Jeweils an den Kathodendraht der eigenen Ebene
Emitter der TransistorenGNDAlle drei an gemeinsames GND
Draufsichtx = 0x = 1x = 2
y = 2 (hinten)Säule 6 → D8Säule 7 → D9Säule 8 → D10
y = 1 (Mitte)Säule 3 → D5Säule 4 → D6Säule 5 → D7
y = 0 (vorne)Säule 0 → D2Säule 1 → D3Säule 2 → D4
Nutze D0 und D1 nicht für Säulen: Diese Pins teilen sich die Leitung mit dem Hochladen über USB und dem seriellen Monitor, angeschlossene LEDs können das Hochladen stören. Deshalb verwendet der 3x3x3-Würfel D2–D10 sowie A0–A2; die Pins A0–A5 arbeiten mit digitalWrite() als ganz normale digitale Ausgänge. Auch der Gesamtstrom bleibt im Rahmen: Ziehen alle neun Säulen 12,7 mA, liefert der Arduino etwa 115 mA und bleibt unter der Gesamtgrenze des ATmega328P von 200 mA. Wo die Pins auf dem Board liegen, zeigt dir das Tool Pinbelegung.

Arduino-Code für den 3x3x3-LED-Würfel: Animationen mit Arrays

Jedes Bild der Animation wird als eine Zahl pro Ebene gespeichert. Eine 3x3x3-Ebene hat 9 LEDs, also genügt ein 9-Bit-Wert; wir speichern ihn als uint16_t, und Bit c steht für Säule c. Die Bilder landen mit PROGMEM im Flash-Speicher, deshalb füllen selbst Animationen mit Hunderten von Bildern die 2 KB RAM des Uno nicht. Der folgende Code braucht keine zusätzliche Bibliothek.

C++ (Arduino IDE)
1// 3x3x3 LED küp: katman çoklama ve dizilerle animasyon / 3x3x3 LED cube: layer multiplexing and array animations
2const byte colPins[9]   = {2, 3, 4, 5, 6, 7, 8, 9, 10};   // sütun anotları, 220 ohm ile / column anodes via 220 ohm
3const byte layerPins[3] = {A0, A1, A2};                     // alt, orta, üst katman transistörü / bottom, middle, top layer transistor
4
5// Her kare 3 katman, her katman 9 bit: bit c = sütun c (c = y*3 + x)
6// Each frame has 3 layers of 9 bits: bit c = column c (c = y*3 + x)
7const uint16_t frames[][3] PROGMEM = {
8  {0b111111111, 0b000000000, 0b000000000},  // 0: alt katman / bottom layer
9  {0b000000000, 0b111111111, 0b000000000},  // 1: orta katman / middle layer
10  {0b000000000, 0b000000000, 0b111111111},  // 2: üst katman / top layer
11  {0b000000000, 0b000010000, 0b000000000},  // 3: yalnız merkez / centre only
12  {0b111101111, 0b101000101, 0b111101111},  // 4: tel kafes, 12 kenar / wireframe, 12 edges
13  {0b010010010, 0b010010010, 0b010010010},  // 5: dönen düzlem, 1. konum / rotating plane, step 1
14  {0b100010001, 0b100010001, 0b100010001},  // 6: dönen düzlem, 2. konum / rotating plane, step 2
15  {0b000111000, 0b000111000, 0b000111000},  // 7: dönen düzlem, 3. konum / rotating plane, step 3
16  {0b001010100, 0b001010100, 0b001010100},  // 8: dönen düzlem, 4. konum / rotating plane, step 4
17  {0b111111111, 0b111111111, 0b111111111}   // 9: hepsi açık / all on
18};
19
20void setup() {
21  for (byte c = 0; c < 9; c++) pinMode(colPins[c], OUTPUT);
22  for (byte z = 0; z < 3; z++) pinMode(layerPins[z], OUTPUT);  // LOW: katmanlar kapalı / LOW: layers off
23}
24
25// Bir kareyi verilen süre boyunca katman katman tarar / scans one frame layer by layer for the given time
26void showFrame(byte f, unsigned int ms) {
27  unsigned long start = millis();
28  while (millis() - start < ms) {
29    for (byte z = 0; z < 3; z++) {
30      uint16_t bits = pgm_read_word(&frames[f][z]);         // katman verisini oku / read the layer data
31      for (byte c = 0; c < 9; c++) digitalWrite(colPins[c], bitRead(bits, c));
32      digitalWrite(layerPins[z], HIGH);                      // katmanı aç / layer on
33      delay(3);                                              // 3 ms göster / show for 3 ms
34      digitalWrite(layerPins[z], LOW);                       // sütunlar değişmeden önce kapat / off before the columns change
35    }
36  }
37}
38
39void loop() {
40  for (byte f = 0; f <= 4; f++) showFrame(f, 500);           // katmanlar, merkez, kafes / layers, centre, wireframe
41  for (byte turn = 0; turn < 4; turn++)                      // düzlemi 4 tur döndür / spin the plane 4 times
42    for (byte f = 5; f <= 8; f++) showFrame(f, 120);
43  showFrame(9, 800);                                         // hepsi açık / all on
44}

Das Herzstück des Codes ist die Funktion showFrame(). Für jede Ebene schreibt sie zuerst das Säulenmuster auf die Pins, schaltet dann nur den Transistor dieser Ebene für 3 ms ein und schaltet die Ebene wieder aus, bevor sich die Säulen ändern. Diese Reihenfolge ist wichtig: Änderst du die Säulen, während eine Ebene an ist, erscheint das Muster der vorherigen Ebene kurz auf der neuen Ebene, und es entsteht Ghosting (Geisterleuchten). bitRead(bits, c) liefert Bit c der Zahl als 0 oder 1, pgm_read_word() liest den 16-Bit-Wert aus dem Flash. loop() zeigt zuerst die Ebenen einzeln, dann die Mitte und die 12 Kanten des Würfels und dreht anschließend eine senkrechte Fläche durch vier Positionen, sodass ein Windrad-Effekt entsteht.

Eigene Animationen entwerfen

Um ein neues Bild zu zeichnen, schau von oben auf den Würfel und stell dir jede Ebene als 3x3-Kästchenpapier vor. Markiere die Säulen, die leuchten sollen, und schreib die Binärzahl nach 0b von links nach rechts, von Bit 8 bis Bit 0. Die vier Ecken sind zum Beispiel die Säulen 0, 2, 6 und 8, das ergibt 0b101000101. Schreibst du denselben Wert in alle drei Ebenen, entstehen senkrechte Stäbe an den vier Ecken; schreibst du ihn nur in die mittlere Ebene, schweben vier Punkte in der Luft. Wenn dir Binärzahlen neu sind, erklärt der Artikel Zahlensysteme und Bitoperationen das Prinzip ausführlich. Ein paar Techniken, die beim Programmieren helfen:

  • Bits verschieben: Schiebst du den Wert einer Ebene beim 3x3x3 um 3 Bit, beim 4x4x4 um 4 Bit nach links, wandert das Muster eine Reihe nach hinten; überlaufende Bits entfernst du mit &, so entstehen Wellen und Lauftext.
  • Ebenen kopieren: Kopierst du das Ebenen-Array eine Stufe nach unten oder oben, entstehen Regen, aufsteigende Blasen und Aufzug-Effekte.
  • Zufall: Mit random() ausgewählte Voxel, die kurz aufblitzen, ergeben einen Sternenhimmel oder Funkeneffekt.
  • Invertieren: Mit dem Operator ~ machst du aus einem Bild sein Negativ; schnelles Umschalten zwischen beiden ergibt ein blinkendes Highlight.

4x4x4-LED-Würfel: Erweiterung mit dem 74HC595

Ein 4x4x4-Würfel hat 16 Säulen und 4 Ebenen; direkt angesteuert braucht er 20 Pins, also alle Pins des Uno einschließlich D0 und D1. Steuerst du die Säulen stattdessen mit zwei kaskadierten 74HC595-Schieberegistern, kosten die 16 Säulen nur 3 Pins (Daten, Takt und Latch); mit 4 weiteren Pins für die Ebenen kommst du auf insgesamt 7 Pins. Der Ausgang Q7' (Pin 9) des ersten Chips geht an den DS-Eingang des zweiten, Takt- und Latch-Leitung teilen sich beide Chips. Die Säulen 0–7 (die vorderen zwei Reihen) hängen an Q0–Q7 des ersten Chips, die Säulen 8–15 (die hinteren zwei Reihen) am zweiten. Dasselbe Prinzip wächst auf 4 Chips für einen 5x5x5- und 8 Chips für einen 8x8x8-Würfel.

VerbindungArduino UnoESP32Raspberry Pi Pico
DS (14), erster ChipD11GPIO 23GP19
SH_CP (11), bei beiden Chips gemeinsamD13GPIO 18GP18
ST_CP (12), bei beiden Chips gemeinsamD10GPIO 5GP17
OE (13) / MR (10)GND / 5VGND / 5VGND / VBUS
VCC (16) / GND (8)5V / GND5V / GNDVBUS / GND
Q7' (9) → DS (14) des zweiten ChipsKaskadeKaskadeKaskade
Transistoren für Ebene 0–3 (über 470 Ω)D2, D3, D4, D5GPIO 25, 26, 27, 32GP10, GP11, GP12, GP13
Chiptyp74HC59574HCT59574HCT595
Über den VCC- oder GND-Pin des 74HC595 dürfen insgesamt höchstens 70 mA fließen. Mit kleinen Widerständen wie 220 Ω zieht eine voll leuchtende Ebene 80–100 mA pro Chip; der Chip wird warm, seine Ausgangsspannung bricht ein und er geht mit der Zeit kaputt. Nutze die Werte 330–470 Ω aus der Widerstandstabelle und setze zwischen VCC und GND jedes Chips einen 100-nF-Kondensator, so nah wie möglich an den Pins.
C++ (Arduino IDE)
1// 4x4x4 LED küp: 2 adet 74HC595 (16 sütun) + 4 transistörlü katman / 4x4x4 LED cube: two 74HC595s (16 columns) + 4 transistor layers
2const byte DATA_PIN  = 11;                 // 74HC595 DS (14)
3const byte CLOCK_PIN = 13;                 // 74HC595 SH_CP (11)
4const byte LATCH_PIN = 10;                 // 74HC595 ST_CP (12)
5const byte layerPins[4] = {2, 3, 4, 5};    // alttan üste katman transistörleri, 470 ohm ile / layer transistors bottom to top, via 470 ohm
6
7uint16_t cube[4];                          // ekrandaki görüntü: katman başına 16 bit / current image: 16 bits per layer
8
9// Hazır kareler: bit c = sütun c (c = y*4 + x) / ready-made frames: bit c = column c (c = y*4 + x)
10const uint16_t frames[][4] PROGMEM = {
11  {0xFFFF, 0x0000, 0x0000, 0x0000},        // alt katman / bottom layer
12  {0x0000, 0xFFFF, 0x0000, 0x0000},
13  {0x0000, 0x0000, 0xFFFF, 0x0000},
14  {0x0000, 0x0000, 0x0000, 0xFFFF},        // üst katman / top layer
15  {0x9009, 0x0000, 0x0000, 0x9009},        // 8 köşe / 8 corners
16  {0xF99F, 0x9009, 0x9009, 0xF99F},        // tel kafes / wireframe
17  {0x0000, 0x0660, 0x0660, 0x0000}         // içteki 2x2x2 küp / inner 2x2x2 cube
18};
19const byte FRAME_COUNT = sizeof(frames) / sizeof(frames[0]);
20
21void write16(uint16_t v) {                 // 16 biti iki entegreye gönder / send 16 bits to both chips
22  digitalWrite(LATCH_PIN, LOW);
23  shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, highByte(v));  // önce uzaktaki entegre / far chip first
24  shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, lowByte(v));
25  digitalWrite(LATCH_PIN, HIGH);           // çıkışlara aktar / copy to the outputs
26}
27
28void refresh() {                           // her 2 ms'de sıradaki katmana geç / move to the next layer every 2 ms
29  static byte z = 0;
30  static unsigned long last = 0;
31  if (micros() - last < 2000) return;
32  last = micros();
33  digitalWrite(layerPins[z], LOW);         // eski katmanı kapat / old layer off
34  z = (z + 1) % 4;
35  write16(cube[z]);                        // yeni katmanın sütunları / columns of the new layer
36  digitalWrite(layerPins[z], HIGH);        // yeni katmanı aç / new layer on
37}
38
39void holdFor(unsigned int ms) {            // beklerken küpü yenilemeye devam et / keep refreshing while waiting
40  unsigned long start = millis();
41  while (millis() - start < ms) refresh();
42}
43
44void clearCube() {
45  for (byte z = 0; z < 4; z++) cube[z] = 0;
46}
47
48void setVoxel(byte x, byte y, byte z) {    // tek LED yak, x/y/z = 0..3 / light one LED, x/y/z = 0..3
49  bitSet(cube[z], y * 4 + x);
50}
51
52void loadFrame(byte f) {                   // PROGMEM'deki kareyi yükle / load a frame from PROGMEM
53  for (byte z = 0; z < 4; z++) cube[z] = pgm_read_word(&frames[f][z]);
54}
55
56void sweep() {                             // dikey düzlemi x ekseninde kaydır / sweep a vertical plane along x
57  for (byte x = 0; x < 4; x++) {
58    clearCube();
59    for (byte y = 0; y < 4; y++)
60      for (byte z = 0; z < 4; z++) setVoxel(x, y, z);
61    holdFor(150);
62  }
63}
64
65void rain(byte steps) {                    // yağmur: damlalar yukarıdan düşer / rain: drops fall from the top
66  clearCube();
67  for (byte s = 0; s < steps; s++) {
68    for (byte z = 0; z < 3; z++) cube[z] = cube[z + 1];   // her şeyi bir kat indir / move everything down a layer
69    cube[3] = bit(random(16)) | bit(random(16));         // üstte 1-2 yeni damla / 1-2 new drops on top
70    holdFor(120);
71  }
72}
73
74void setup() {
75  pinMode(DATA_PIN, OUTPUT);
76  pinMode(CLOCK_PIN, OUTPUT);
77  pinMode(LATCH_PIN, OUTPUT);
78  for (byte z = 0; z < 4; z++) pinMode(layerPins[z], OUTPUT);
79  randomSeed(analogRead(A0));              // boştaki A0'dan rastgele tohum / random seed from the unconnected A0
80}
81
82void loop() {
83  for (byte f = 0; f < FRAME_COUNT; f++) {
84    loadFrame(f);
85    holdFor(500);
86  }
87  for (byte i = 0; i < 3; i++) sweep();
88  rain(80);
89}

In dieser Version läuft das Abtasten in der Funktion refresh() nicht blockierend: Bei jedem Aufruf prüft sie mit micros(), ob 2 ms vergangen sind; falls ja, schaltet sie die alte Ebene aus, schickt die 16 Bit der neuen Ebene an die beiden Chips und schaltet die neue Ebene ein. So ändert der Animationscode nur das Array cube[] und muss sich nicht um das Auffrischen kümmern. holdFor() ruft während des Wartens weiter refresh() auf, deshalb solltest du nirgendwo im Programm ein langes delay() verwenden. Mit setVoxel(x, y, z) schaltest du eine einzelne LED über ihre Koordinaten ein; sweep() schiebt damit eine senkrechte Fläche durch den Würfel, rain() kopiert die Ebenen jeweils eine Stufe nach unten und setzt oben zufällige Tropfen. Den Unterschied zwischen delay() und millis() erklärt millis() und delay(), wie du das Abtasten in einen Timer-Interrupt verlagerst, zeigt Arduino-Interrupts.

LED-Würfel mit dem ESP32

Die Pins des ESP32 liefern 3,3 V. Das reicht nicht, um blaue und weiße LEDs mit etwa 3 V Flussspannung direkt anzusteuern; nach dem Spannungsabfall an Widerstand und Transistor bleibt kaum etwas übrig. Am saubersten ist es daher, die Säulen beim ESP32 über einen mit 5 V versorgten 74HCT595 anzusteuern: Die HCT-Familie erkennt schon 2 V als HIGH und liest die 3,3-V-Signale problemlos, während die LEDs aus 5 V gespeist werden. An die Basis der Ebenentransistoren kommen wieder 470 Ω; (3,3 − 0,7) / 470 ≈ 5,5 mA reichen für 80 mA Ebenenstrom. Der 4x4x4-Code oben lässt sich auf dem ESP32 unverändert kompilieren; du musst nur die Pin-Konstanten auf die Werte aus der Tabelle ändern (23, 18, 5 sowie 25, 26, 27, 32). Wenn du magst, wählst du die Animationen über das WLAN des ESP32 auch auf einer Webseite am Handy aus; zum Einstieg siehe Was ist der ESP32?.

LED-Würfel mit dem Raspberry Pi Pico und MicroPython

Auch der Pico ist ein 3,3-V-Board, und in der Standardeinstellung liefern seine Pins nur wenige Milliampere; deshalb nutzt du dieselbe Schaltung mit 74HCT595. Versorge die Chips und LEDs über VBUS (Pin 40), an dem die 5 V vom USB anliegen. In MicroPython werden die 16 Bit per Hardware-SPI gesendet: GP18 (SCK) und GP19 (MOSI) von SPI0 treiben Takt- und Datenleitung, GP17 den Latch. Der Code folgt derselben Logik: show() tastet ein Bild für die angegebene Zeit Ebene für Ebene ab, und beim Regeneffekt schiebt das Listen-Slicing (cube[1:]) jede Ebene eine Stufe nach unten. Für Einrichtung und erste Schritte siehe Was ist der Raspberry Pi Pico?.

MicroPython
1# Pico + 2 adet 74HCT595 ile 4x4x4 LED küp / 4x4x4 LED cube with a Pico + two 74HCT595s
2from machine import Pin, SPI
3import time
4import random
5
6# GP18 = SCK -> SH_CP, GP19 = MOSI -> DS; GP16 (MISO) boş kalır / GP16 (MISO) stays unconnected
7spi = SPI(0, baudrate=1000000, polarity=0, phase=0, sck=Pin(18), mosi=Pin(19))
8latch = Pin(17, Pin.OUT, value=0)                                # ST_CP
9layers = [Pin(n, Pin.OUT, value=0) for n in (10, 11, 12, 13)]    # alttan üste, 470 ohm ile / bottom to top, via 470 ohm
10
11def write16(v):
12    latch.value(0)
13    spi.write(bytes((v >> 8, v & 0xFF)))    # önce uzaktaki entegre / far chip first
14    latch.value(1)                          # çıkışlara aktar / copy to the outputs
15
16def show(frame, ms):
17    # kareyi ms boyunca katman katman tara / scan the frame layer by layer for ms
18    end = time.ticks_add(time.ticks_ms(), ms)
19    while time.ticks_diff(end, time.ticks_ms()) > 0:
20        for z in range(4):
21            write16(frame[z])
22            layers[z].value(1)              # katmanı aç / layer on
23            time.sleep_us(2000)
24            layers[z].value(0)              # sütunlar değişmeden kapat / off before the columns change
25
26FRAMES = [
27    [0x9009, 0x0000, 0x0000, 0x9009],       # 8 köşe / 8 corners
28    [0xF99F, 0x9009, 0x9009, 0xF99F],       # tel kafes / wireframe
29    [0x0000, 0x0660, 0x0660, 0x0000],       # içteki küp / inner cube
30]
31
32while True:
33    for f in FRAMES:
34        show(f, 600)
35    cube = [0, 0, 0, 0]
36    for _ in range(60):                     # yağmur: her şey bir kat iner / rain: everything drops a layer
37        drop = (1 << random.getrandbits(4)) | (1 << random.getrandbits(4))
38        cube = cube[1:] + [drop]
39        show(cube, 120)

Größere Würfel: 5x5x5 und 8x8x8

Mit der Größe des Würfels wachsen zwei Probleme. Das erste ist der Strom: Ein 8x8x8-Würfel hat 64 LEDs pro Ebene, bei 10 mA pro LED sind das 640 mA Ebenenstrom; das ist keine Aufgabe mehr für einen kleinen TO-92-Transistor, sondern für einen Logic-Level-MOSFET. Das zweite ist die Abtastzeit: Um mit 8 Ebenen 100 Hz zu halten, bleiben pro Ebene 1,25 ms, und pro Ebene müssen 64 Bit (8 Byte) gesendet werden; shiftOut() ist dafür zu langsam, Hardware-SPI ist Pflicht. Außerdem leuchtet jede LED nur 1/8 der Zeit, die Helligkeit sinkt also; große Würfel brauchen stärkere Säulentreiber und statt USB ein externes 5-V-Netzteil (siehe Arduino mit Strom versorgen). Deshalb sollte dein erster Würfel ein 3x3x3 oder 4x4x4 sein; so beherrschst du die Technik, bevor du 512 LEDs lötest.

Alternative: farbiger LED-Würfel mit WS2812B

Adressierbare RGB-LED WS2812B
Jede WS2812B-LED hat ihren eigenen Treiberchip; ein Würfel mit 64 LEDs wird über einen einzigen Datenpin gesteuert.

Möchtest du statt eines einfarbigen Würfels die Farbe jeder LED einzeln wählen, kannst du adressierbare LEDs wie die WS2812B verwenden. Jede dieser LEDs hat ihren eigenen Treiberchip, daher brauchst du weder Multiplexing noch Transistoren oder Säulenwiderstände: Die 64 LEDs werden mit 5 V, GND und einer Datenleitung in Reihe verkettet und über einen einzigen Pin angesteuert. Für einen Würfel nimmt man adressierbare 5-mm-LEDs mit 4 Beinen (etwa PL9823 oder APA106) oder Stücke eines WS2812B-Streifens. Der Preis ist der Strom: etwa 60 mA pro LED bei vollem Weiß, also 3,8 A für 64 LEDs. Nutze deshalb ein 5-V-Netzteil mit 4 A, setze einen 1000-µF-Kondensator an die Versorgung und einen 330-Ω-Widerstand in die Datenleitung und begrenze die Helligkeit per Software. Der Code verwendet die Bibliothek Adafruit NeoPixel.

C++ (Arduino IDE)
1// WS2812B ile 4x4x4 RGB LED küp / 4x4x4 RGB LED cube with WS2812B
2#include <Adafruit_NeoPixel.h>
3
4const byte DATA_PIN = 6;                   // 330 ohm ile ilk LED'in DIN ucuna / to the first LED's DIN via 330 ohm
5const byte N = 4;
6Adafruit_NeoPixel cube(N * N * N, DATA_PIN, NEO_GRB + NEO_KHZ800);
7
8uint16_t idx(byte x, byte y, byte z) {     // koordinattan zincirdeki sıraya / coordinate to position in the chain
9  return z * 16 + y * 4 + x;               // düz (zikzaksız) kablolama varsayılır / assumes straight, non-zigzag wiring
10}
11
12void setup() {
13  cube.begin();
14  cube.setBrightness(40);                  // parlaklığı ve akımı sınırla (0-255) / limit brightness and current (0-255)
15}
16
17void loop() {
18  static uint16_t hue = 0;
19  for (byte z = 0; z < N; z++)
20    for (byte y = 0; y < N; y++)
21      for (byte x = 0; x < N; x++)         // her katman farklı tonda / each layer gets a different hue
22        cube.setPixelColor(idx(x, y, z), cube.gamma32(cube.ColorHSV(hue + z * 8192U)));
23  cube.show();
24  hue += 256;                              // gökkuşağını kaydır / shift the rainbow
25  delay(20);
26}

Die Funktion idx() im Code rechnet eine x-, y-, z-Koordinate in die Position in der Kette um und geht davon aus, dass du jede Reihe in derselben Richtung verdrahtet hast. Hast du die Verkabelung im Zickzack verlegt, musst du in ungeraden Reihen 3 − x statt x verwenden. Manche adressierbaren 5-mm-LEDs erwarten die Farben in RGB-Reihenfolge; siehst du Grün statt Rot, ändere NEO_GRB in NEO_RGB. setBrightness(40) senkt die Helligkeit auf etwa 16 %, sodass der Strom selbst im ungünstigsten Fall bei etwa 0,6 A bleibt.

EigenschaftEinfarbiger LED-WürfelWS2812B-LED-Würfel
FarbeEine Farbe (die der LED)16 Millionen Farben, für jede LED einzeln
Benötigte Pins (4x4x4)7 (mit 74HC595)1
Zusätzliche BauteileTransistoren, Widerstände, 74HC595Kondensator, Datenwiderstand, starkes Netzteil
Lötaufwand2 Beine pro LED4 Beine pro LED, mehr Drähte
HelligkeitssteuerungAn/aus (PWM pro LED ist schwierig)256 Stufen für jede LED
Strom (4x4x4)Etwa 100 mA, USB reichtBis ≈3,8 A, externe Versorgung nötig
Was man lerntMultiplexing, Transistoren, BitoperationenAdressierung, Farbton, Energiemanagement

Projektideen mit dem LED-Würfel

  • Würfel, der zur Musik tanzt: Erhöhe die Zahl der leuchtenden Ebenen je nach Lautstärke, die du mit einem Schallsensor misst, und bau so einen dreidimensionalen Equalizer.
  • 3D-Snake: Steuere die Schlange im 4x4x4-Würfel mit einem Joystick und einem Taster über drei Achsen; weitere Spielideen findest du unter Arduino-Spieleprojekte.
  • Spielwürfel: Drückst du einen Taster, wirbeln die Voxel kurz durcheinander, und der Würfel zeigt eine Zahl von 1 bis 6 als Punktmuster.
  • Projekt für Schule oder Wettbewerb: Erkläre die Trägheit des Auges, indem du die Ebenenzeit mit einem Potentiometer verlängerst und den Moment zeigst, in dem das Flimmern beginnt; weitere Ideen unter Projektideen für Wettbewerbe.
  • Animation per Handy wählen: Jeder Buchstabe, den du über ein HC-05-Bluetooth-Modul sendest, startet eine andere Animation.
  • Bunte Nachtlampe: Richte auf einem WS2812B-Würfel langsame Farbübergänge ein; mit einem ESP32 steuerst du die Effekte über WLED vom Handy aus.

Häufige Fehler und ihre Lösungen

SymptomMögliche UrsacheLösung
Eine einzelne LED leuchtet nieLED verpolt oder defekt, Lötstelle eines Beins gebrochenKathodenrichtung prüfen, LED mit einer Knopfzelle testen, notfalls tauschen
LEDs, die aus sein sollten, glimmen (Ghosting)Die Säulen ändern sich bei eingeschalteter Ebene, oder im Würfel steckt eine verpolte LEDErst die Ebene ausschalten, dann die Säulen schreiben; ist der Code korrekt, die verpolte LED suchen
LEDs flackern oder gehen aus, wenn man den Würfel berührtKalte Lötstelle: matt, körnig, kugelförmigLötstelle mit sauberer Lötspitze nachwärmen und etwas frisches Lötzinn zugeben
Eine ganze Ebene bleibt dunkelTransistorbeine vertauscht (E-B-C mit C-B-E verwechselt) oder Basiswiderstand unterbrochenPinfolge im Datenblatt prüfen, Basisverbindung durchmessen
Eine ganze Säule bleibt dunkelSäule nicht mit der Grundplatte verlötet, Widerstand oder Pin falschSäule mit dem Multimeter von Ende zu Ende messen, Pin-Array im Code prüfen
Der Würfel flimmertEbenenzeit zu lang oder Serial.print() bzw. delay() in der AbtastschleifeEbenenzeit auf 2–3 ms setzen, blockierenden Code entfernen
Der Würfel ist sehr dunkelWiderstände zu groß, blaue LEDs an 3,3 V oder zu viele EbenenWiderstand neu berechnen, bei 3,3-V-Boards den 74HCT595 mit 5 V versorgen
Der Sketch lässt sich nicht hochladenAn D0 oder D1 hängt eine LEDSäulen ab D2 belegen oder diese Drähte beim Hochladen abziehen
Am besten suchst du Fehler mit einem Testsketch: Schreib eine kleine Schleife, die jede LED nacheinander 200 ms lang einschaltet. Eine LED, die dunkel bleibt oder an der falschen Stelle leuchtet, verrät sofort eine gebrochene Lötstelle oder eine vertauschte Säule. Eine kalte Lötstelle wirkt matt und körnig statt glänzend; eine gute Lötstelle sieht aus wie ein glänzender, leicht nach innen gewölbter Kegel, der das Bein umschließt. Zum Auffrischen deiner Technik lohnt sich ein Blick in Richtig löten.

Der LED-Würfel ist eines der seltenen Projekte, die Löten, Transistoren, Widerstandsberechnung, Multiplexing und Bitoperationen in einem vermitteln. Fang mit einem 3x3x3 an, und wenn Code und Animationslogik sitzen, steig mit dem 74HC595 auf einen 4x4x4 um oder auf WS2812B, wenn du Farbe willst. Möchtest du das Prinzip, LEDs nacheinander zu schalten, zuerst an einer geraden Reihe ausprobieren, ist Arduino-Lauflicht und Knight Rider ein gutes Aufwärmen. In der BlueGrays-App findest du Projekte mit Lauflicht, Knight Rider, WS2812B-Animationen und LED-Matrizen, jeweils mit Schaltplan und Code Schritt für Schritt.

Häufige Fragen

Wie viele LEDs und Pins braucht ein LED-Würfel?

Ein 3x3x3-Würfel braucht 27 LEDs, ein 4x4x4-Würfel 64; ein paar Reserve-LEDs lohnen sich. Mit Ebenen-Säulen-Multiplexing genügen für den 3x3x3 9 Säulen und 3 Ebenen, also 12 Pins. Ein 4x4x4 braucht bei direkter Ansteuerung 20 Pins, steuerst du die Säulen aber mit zwei 74HC595, sind es insgesamt nur 7 Pins.

Welchen Vorwiderstand brauche ich für einen LED-Würfel?

Jede Säule bekommt einen Widerstand; beim 3x3x3-Würfel direkt am Arduino sind bei 5 V 220 Ω ein gängiger und sicherer Wert. Beim Würfel mit 74HC595 nimmst du für blaue und weiße LEDs 330 Ω und für rote und gelbe 470 Ω, damit die Gesamtgrenze des Chips von 70 mA nicht überschritten wird. Deinen eigenen Wert berechnest du mit R = (VVersorgung − VLED − 0,2 V) / ILED.

Warum werden die Ebenen eines LED-Würfels mit Transistoren geschaltet?

Ist eine Ebene eingeschaltet, fließt der Strom aller LEDs dieser Ebene über eine einzige Leitung nach GND; beim 3x3x3-Würfel sind das über 100 mA. Weil für einen Arduino-Pin 20 mA empfohlen werden, zieht ein NPN-Transistor wie der 2N2222A oder BC337 die Ebenenleitung auf GND. Ein Basiswiderstand von 470 Ω genügt.

Warum flimmert mein LED-Würfel?

Flimmern tritt auf, wenn die Abtastrate zu niedrig ist. Die Bildwiederholrate ist 1 / (Anzahl der Ebenen × Zeit pro Ebene) und sollte über 100 Hz liegen; halte die Ebenenzeit deshalb bei 2–3 ms und setz kein langes delay() oder Serial.print() in die Abtastschleife. Flackert der Würfel nur beim Berühren, ist sehr wahrscheinlich eine kalte Lötstelle schuld.

Warum leuchten LEDs, die aus sein sollten?

Das nennt man Ghosting, und es hat zwei Hauptursachen. Werden die Säulenwerte bei eingeschalteter Ebene geändert, wandert das vorherige Muster kurz auf die neue Ebene; schalte also zuerst die Ebene aus und schreib dann die Säulen. Ist der Code korrekt, öffnet möglicherweise eine verpolte LED im Würfel einen Strompfad zu anderen Ebenen.

Kann man einen 8x8x8-LED-Würfel mit dem Arduino Uno bauen?

Ja, aber die Pins allein reichen nicht: Du brauchst eine 74HC595-Kette oder ähnliche Treiber für die 64 Säulen, Logic-Level-MOSFETs für die 8 Ebenen und Hardware-SPI für schnelles Abtasten. Außerdem dauert das Löten von 512 LEDs Tage. Am besten übst du die Technik zuerst an einem 3x3x3- oder 4x4x4-Würfel.

Alle Projekte ansehen
LED-Lauflicht
#5Mittel

LED-Lauflicht

Lichter, die nacheinander aufleuchten, als würden sie laufen. Der Arduino schaltet sechs LEDs einzeln ein; jede leuchtet kurz auf und geht wieder aus, sodass das Licht von vorn nach hinten wandert und

4.6(85)
207
Knight-Rider-Lauflicht
#6Mittel

Knight-Rider-Lauflicht

Das klassische Lauflicht, das hin und her wandert: Ein Lichtpunkt gleitet über sechs LEDs von einem Ende zum anderen und kommt wieder zurück. Der Arduino lässt jede LED eine Zehntelsekunde leuchten, d

4.8(106)
202
Knight-Rider-Lauflicht mit einstellbarer Geschwindigkeit
#8Mittel

Knight-Rider-Lauflicht mit einstellbarer Geschwindigkeit

Ein Lichtpunkt läuft über sechs LEDs von einem Ende zum anderen, kehrt um und läuft wieder zurück. Mit dem Knopf des Potentiometers stellst du das Tempo sofort ein: Auf der einen Seite fliegt das Lich

4.5(60)
120
WS2812B-LED-Streifen verwenden
#69Mittel
Premium

WS2812B-LED-Streifen verwenden

Du lernst einen smarten LED-Streifen kennen, bei dem du jedes einzelne Licht für sich einfärben kannst. Der Arduino lässt zuerst die ersten fünf LEDs rot leuchten, eine Sekunde später die übrigen fünf

4.8(54)
70
WS2812B Animation 1
#75Mittel
Premium

WS2812B Animation 1

Auf einem Streifen mit 56 LEDs reihen sich alle Farben des Regenbogens aneinander und fließen ohne Pause weiter, als würde ein Fluss aus Licht über den Streifen gleiten. Jede LED leuchtet in einem etw

4.9(69)
89
WS2812B Animation 2
#76Mittel
Premium

WS2812B Animation 2

Bau dir eine Lichtshow fürs Zimmer, die von selbst die Farben wechselt. Der Arduino lässt die Farben ständig über einen Streifen mit 30 LEDs fließen und wechselt alle paar Sekunden zu einem neuen Farb

4.8(65)
84
Pixel-Schlange 8x8 Matrix
#88Fortgeschritten
Premium

Pixel-Schlange 8x8 Matrix

Bau das klassische Schlangenspiel selbst und spiel es. Auf einer bunten 8x8-Lichtmatrix steuerst du eine grüne Schlange mit dem Joystick und frisst rote Äpfel; mit jedem Apfel wird die Schlange länger

4.7(39)
57
4x 32x8 LED-Matrix - Paket mit 6 Animationen
#91Mittel
Premium

4x 32x8 LED-Matrix - Paket mit 6 Animationen

Vier übereinander gesetzte 32x8-LED-Panels bilden einen quadratischen Bildschirm, auf dem nacheinander sechs Animationen laufen: fallender digitaler Regen, eine wachsende Spirale, Zellen, die ganz von

4.5(35)
48