So baust du einen Arduino 3D-LED-Cube

So baust du einen Arduino 3D-LED-Cube

Arduino, Projekte
22 April 2021

In diesem Beitrag zeigen wir dir, wie du einen Arduino 3D-LED-Cube im 3x3x3-Format konstruierst, der verschiedene dreidimensionale Lichtmuster erzeugen kann. Der Würfel soll aus 27 farbigen LEDs bestehen, wobei diese zunächst als kubisches Gitter angeordnet werden. Um die Konstruktion zu steuern und unterschiedliche Lichtszenerien herbeizuführen, bietet es sich an, auf einen Mikrocontroller zurückzugreifen. Wir haben uns für den allseits beliebten Arduino entschieden.

Das brauchst du für das Projekt

WARENKORB

Alle für dieses Projekt notwendigen Artikel (außer Lötkolben) landen mit einem Klick auf den Button direkt in deinem Warenkorb, sofern sie in unserem Shop verfügbar sind. Kontrolliere daher deinen Warenkorb genau!

Arduino 3D-LED-Cube bauen: So geht’s

  1. Um eine ordnungsgemäße Schaltung herbeizuführen, lötest du zuallererst die drei LEDs („floors“) jeweils an den Kathoden zusammen. Die Anoden lässt du hingegen frei. Durch diese Prozedur stellst du eine sogenannte Layer („floor“) her, also quasi ein Drittel des Würfels. Wiederhole den Vorgang zweimal, sodass du insgesamt drei Layers hast.
Aufbau Arduino 3D-LED-Cube
  1. Anschließend lötest du die drei Layers jeweils an den Anoden zusammen, sodass du einen Würfel erhältst.
  1. Nun stehen dir insgesamt 12 Pins zur Verfügung, wobei es sich bei 9 Pins um Anoden handelt. Wir empfehlen dir, für jede Anode einen Widerstand (220 bis 470 Ohm) zu verwenden. Bei den drei verbliebenen Pins handelt es sich um Kathoden, die mithilfe von drei NPN-Transistoren gesteuert werden (1 Transistor pro Layer).
Arduino 3D-LED-Cube
  1. Nun musst du noch dafür sorgen, dass sich die LED-Konstruktion mithilfe des Arduino steuern lässt. Zu diesem Zweck legen wir fest, dass Arduino Pin 11 für Layer 1, Arduino Pin 12 für Layer 2 und Arduino Pin 13 für Layer 3 verantwortlich ist. In der Praxis bedeutet das: Wenn du die LEDs von Layer 1 steuern willst, müsstest du Pin 11 aktivieren, also auf „high“ setzen. Dadurch stellt der Transistor den Kathodenzustand der Layer auf 0. In diesem Fall könntest du die übrigen LEDs von Layer 1 (Pin 3 bis 10) alle separat steuern.
  2. Zum Schluss kopierst du noch den Code und lädst ihn auf deinem Board hoch. Dazu wählst du zunächst das korrekte Board und den richtigen Port aus; anschließend musst du das Programm nur noch uploaden.
//https://www.blog.berrybase.de/

void setup() {

  pinMode(2, OUTPUT);          //LED1
  pinMode(3, OUTPUT);          //LED2
  pinMode(4, OUTPUT);          //LED3
  pinMode(5, OUTPUT);          //LED4
  pinMode(6, OUTPUT);          //LED5
  pinMode(7, OUTPUT);          //LED6
  pinMode(8, OUTPUT);          //LED7
  pinMode(9, OUTPUT);          //LED8
  pinMode(10, OUTPUT);         //LED9
  pinMode(11, OUTPUT);         //Layer1       
  pinMode(12, OUTPUT);         //Layer2
  pinMode(13, OUTPUT);         //Layer3
}

// Turn ON all the Layers 
void allLayer() {
  digitalWrite(11, HIGH);          
  digitalWrite(12, HIGH);             // Pin 11 , 12 and 13 are connected with the transistors (Layer1 , 2 and 3) 
  digitalWrite(13, HIGH);
  }

// Turn OFF all the Layers 
void noLayer() {
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
  }


// Rotation   
void rotate() {
  allLayer();
  digitalWrite(5, HIGH);
  digitalWrite(6, HIGH);
  digitalWrite(7, HIGH);
  delay(100);
  empty();
  digitalWrite(2, HIGH);
  digitalWrite(6, HIGH);
  digitalWrite(10, HIGH);
  delay(100);
  empty();
  digitalWrite(3, HIGH);
  digitalWrite(6, HIGH);
  digitalWrite(9, HIGH);
  delay(100);
  empty();
  digitalWrite(4, HIGH);
  digitalWrite(6, HIGH);
  digitalWrite(8, HIGH);
  delay(100);
  empty();
  noLayer();  
  }

// Turn ON all the LEDs
void fill() {
  digitalWrite(2, HIGH);
  digitalWrite(3, HIGH);
  digitalWrite(4, HIGH);
  digitalWrite(5, HIGH);
  digitalWrite(6, HIGH);
  digitalWrite(7, HIGH);
  digitalWrite(8, HIGH);
  digitalWrite(9, HIGH);
  digitalWrite(10, HIGH);
  }

// Swirl animation
void swirl() {
  digitalWrite(2, HIGH);
  delay(50);
  digitalWrite(3, HIGH);
  delay(50);
  digitalWrite(4, HIGH);
  delay(50);
  digitalWrite(7, HIGH);
  delay(50);
  digitalWrite(10, HIGH);
  delay(50);
  digitalWrite(9, HIGH);
  delay(50);
  digitalWrite(8, HIGH);
  delay(50);
  digitalWrite(5, HIGH);
  delay(50);
  digitalWrite(6, HIGH);
  delay(50);
  }

// Turn OFF the LEDs 
void empty() {
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  }  


//Main Code
void loop() {
  
//FILL - UP AND DOWN

 digitalWrite(13, HIGH);
 fill();
 delay(200);
 empty();
 noLayer();
 digitalWrite(12, HIGH);
 fill();
 delay(100);
 empty();
 noLayer();
 digitalWrite(11, HIGH);
 fill();
 delay(200);
 empty();
 noLayer();
 digitalWrite(12, HIGH);
 fill();
 delay(100);
 empty();
 noLayer();
 digitalWrite(13, HIGH);
 fill();
 delay(200);
 empty();
 noLayer();
 digitalWrite(12, HIGH);
 fill();
 delay(100);
 empty();
 noLayer();
 digitalWrite(11, HIGH);
 fill();
 delay(200);
 empty();
 noLayer();
 digitalWrite(12, HIGH);
 fill();
 delay(100);
 empty();
 noLayer();
 digitalWrite(13, HIGH);
 fill();
 delay(200);
 empty();
 noLayer();
 digitalWrite(12, HIGH);
 fill();
 delay(100);
 empty();
 noLayer();
 digitalWrite(11, HIGH);
 fill();
 delay(200);
 empty();
 noLayer();
 digitalWrite(12, HIGH);
 fill();
 delay(100);
 empty();
 noLayer();
 digitalWrite(13, HIGH);
 fill();
 delay(200);
 empty();
 noLayer();
 delay(1000);

//SWIRL - 1 LAYER EACH TIME

 digitalWrite(13, HIGH);
 swirl();
 delay(10);
 empty();
 noLayer();
 digitalWrite(12, HIGH);
 swirl();
 delay(10);
 empty();
 noLayer();
 digitalWrite(11, HIGH);
 swirl();
 delay(10);
 delay(400);
 empty();
 noLayer();

//SWIRL - ALL LAYERS AT ONCE

 allLayer();
 swirl();
 delay(400);
 empty();
 noLayer();
 delay(1000);


//ROTATING PANE - ALL LAYERS
rotate();
rotate();
rotate();
rotate();
rotate();
rotate();
rotate();
rotate();
delay(1000);
}

Und nun viel Spaß beim Nachbauen, falls du Fragen oder Anregungen haben solltest, schreib uns diese gerne in die Kommentare.

Was? Du willst noch mehr Arduino Tutorials?

Schau dir einfach unsere weiteren Guides hier an!

Wie hilfreich war dieser Beitrag?

Klicke auf die Sterne um zu bewerten!

Durchschnittliche Bewertung 5 / 5. Anzahl Bewertungen: 7

Bisher keine Bewertungen! Sei der Erste, der diesen Beitrag bewertet.

Kommentare

Hinterlasse ein Kommentar

XHTML: Sie können diese Tags verwenden: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>