Dieses Projekt war mein Starter-Projekt für den Arduino. Ich wollte einen einfachen Aufbau für meinen Sohn – mit dem man aber auch etwas anfangen kann. Dazu sollte nicht bloß ein Steckbrett verwendet werden, sondern auch ein wenig Löt- und Programmierarbeit dabei sein. So ist die Würfel-Box entstanden.
Die Box besteht aus dem normalen Augenbild mit 7 LED’s und einem Taster zum Würfeln.
Bauelemente
- Arduino UNO (oder anderes Modell)
- 1 x Schalter
- 1 x Taster
- 1 x 9V Block-Batterie
- 1 x Batterieclip
- 7 x LED’s
- 7 x Vorwiderstände 330 Ohm für LED’s
- Pull-up-Widerstand 10 kOhm für Taster
- Kabel
- Gehäuse
Schaltung
Die erste LED (LED1) wird über den Pin 6 gesteuert, LED2 über Pin 7 usw. Der Taster ist über einen Pull-Up-Widerstand mit Pin 2 verknüpft. Es können natürlich auch andere Pins verwendet werden, wenn das im Quellcode entsprechend angepasst wird.
Schritte:
- Positionen der LED’s ausmessen und anzeichnen
- Löcher bohren
- Position für EIN/AUS-Schalter festlegen, anzeichnen und bohren
- Position für Würfel-Taster festlegen, anzeichnen und bohren
- Elemente einbauen (die Batterie am besten mit Heißkleber befestigen)
- LED’s mit Heißkleber sichern
- Verdrahtung der LED’S möglichst intelligent ausführen
- Sketch aufspielen und testen
So kann die Würfel-Box aussehen
Ein passendes Gehäuse, in verschiedenen Ausführungen und Farben, bekommt man bei den bekannten Elektronikshops wie conrad.de oder pollin.de mittlerweile für kleines Geld.
Die LEDs wurden bei uns zuerst mit ein wenig Heißkleber fixiert. Danach lassen sich die Lötverbindungen viel leichter herstellen.
Damit sich die Batterie beim Würfeln nicht im Gehäuse hin und her bewegen kann, haben wir auch sie mit ein bißchen Heißkleber fixiert. Das ist vielleicht beim Wechseln nicht ganz ideal, funktioniert aber zuverlässig.
Der Arduino liegt dann ohne Befestigung auf der Batterie. Damit es hier nicht zu ungewollten Verbindungen kommt, haben wir noch eine Isolierung aus einem Stück Crepla dazwischen gepackt.
Sketch: Würfel einfach
Die Hauptarbeit des Würfels steckt aber im Quellcode. Der Start war bei uns eine sehr einfache Variante. Der Sketch kümmert sich nur um das Finden einer Zufallszahl, dem Würfeln und der Darstellung des Würfelbildes.
Was alles im Programm passiert, findet man in den Bemerkungen im Quellcode.
// PROGRAMM: LED Würfel Version 1 // Festlegen der Pins // Pin der ersten LED int PinErsteLED=6; // Pin des Tasters int PinTaster=2; // Festlegen der Würfelbilder: Reihenfolge // 1 2 // 3 7 4 // 5 6 int wuerfelBild[8][7]= {{0,0,0,0,0,0,0}, //0 = alle LED's aus {0,0,0,0,0,0,1}, //1 {0,1,0,0,1,0,0}, //2 {1,0,0,0,0,1,1}, //3 {1,1,0,0,1,1,0}, //4 {1,1,0,0,1,1,1}, //5 {1,1,1,1,1,1,0}, //6 {1,1,1,1,1,1,1}}; //7 = alle LED's an void setup() { // Ausgehend von dem ersten LED Pin werden alle Pins als Output definiert for (int i=PinErsteLED;i<=PinErsteLED+6;++i) pinMode(i,OUTPUT); // Pin für den Schalter zur Steuerung des Zufallgenerators pinMode(PinTaster,INPUT); } // Funktion zum Anzeigen der Ergebnisse void ZeigeZahl(int zahl) { // Für die vom Zufallsgenerator übergebene Nummer wird das passende Bild // ausgelesen und die passenden LEDs eingeschaltet for (int i=0;i<=6;++i) digitalWrite(i+PinErsteLED,wuerfelBild[zahl][i]?HIGH:LOW); } void loop() { //Variablen vereinbaren int i,j,zufall; do { //Startzustand setzen zufall=0; i=0; do { zufall=zufall+1; //Zufallszahl hochzählen i=i+1; if (i>6) {i=0;} //Wenn i 7 ist, dann wieder auf 0 setzen, so ist i immer 0..6 delay(50); //Pause in Millisekunden //Einzelne LED's für Würfelvorgang anzeigen for (j=0;j<=6;++j) digitalWrite(j+PinErsteLED,j==i?HIGH:LOW); } while (digitalRead(PinTaster)==LOW); //Wiederholen bis Taster losgelassen wird zufall=zufall%6; //Ergebnis ist Zahl von 0..5 ZeigeZahl(zufall+1); //Würfelergebnis anzeigen while (digitalRead(PinTaster)==HIGH) {}; //Warten bis nächste Taste gedrückt wird } while (1==1); //Undendlich Wiederholen, da 1 immer gleich 1 ist }
Hier gibt es eine Möglichkeit für den Download des Arduino Sketches.
Sketch: Fertiger Würfel mit Einschaltbild
Nach den ersten Tests, hatten wir aber Lust ein wenig mehr Funktionen in den Würfel zu packen. Das findet man in dieser Version. Hier gibt es schon eine kleine Animation während des Würfelns zu bewundern.
// PROGRAMM: LED Würfel Version 2 // Festlegen der Pins // Pin der ersten LED int PinErsteLED=2; // Pin des Tasters int PinTaster=9; // Festlegen der Würfelbilder: Reihenfolge // 1 2 // 3 7 4 // 5 6 int wuerfelBild[8][7]= {{0,0,0,0,0,0,0}, //0 = alle LED's aus {0,0,0,0,0,0,1}, //1 {0,1,0,0,1,0,0}, //2 {1,0,0,0,0,1,1}, //3 {1,1,0,0,1,1,0}, //4 {1,1,0,0,1,1,1}, //5 {1,1,1,1,1,1,0}, //6 {1,1,1,1,1,1,1}}; //7 = alle LED's an int lauflichtmax=6; int lauflicht[6]={1,2,4,6,5,3}; void setup() { // Ausgehend von dem ersten LED Pin werden alle Pins als Output definiert for (int i=PinErsteLED;i<=PinErsteLED+6;++i) pinMode(i,OUTPUT); // Pin für den Schalter zur Steuerung des Zufallgenerators pinMode(PinTaster,INPUT); } // Funktion zum Anzeigen der Ergebnisse void ZeigeZahl(int zahl) { // Für die vom Zufallsgenerator übergebene Nummer wird das passende Bild // ausgelesen und die passenden LEDs eingeschaltet for (int i=0;i<=6;++i) digitalWrite(i+PinErsteLED,wuerfelBild[zahl][i]?HIGH:LOW); } void loop() { //Variablen vereinbaren int i,j,zufall; ZeigeZahl(7); //Alle LED's einschalten delay(1000); // Pause in Millisekunden // Zufallszahlen anzeigen bis das erste Mal eine Taste gedrückt wird i=0; do { i=i+1; if (i>6) {i=1;} delay(500); ZeigeZahl(i); //Zahl anzeigen } while (digitalRead(PinTaster)==HIGH); //wiederholten, bis Taste gedrückt wird // Ab hier wird gewürfelt, in Endlosschleife bis zum Ausschalten do { //Startzustand setzen zufall=0; i=0; do { zufall=zufall+1; //Zufallszahl hochzählen i=i+1; if (i>=lauflichtmax) {i=0;} //Wenn i lauflichtmax ist, dann wieder auf 0 setzen, so ist i immer 0..6 delay(60); //Pause in Millisekunden ZeigeZahl(0); digitalWrite(PinErsteLED+lauflicht[i]-1,HIGH); } while (digitalRead(PinTaster)==LOW); //Wiederholen bis Taster losgelassen wird zufall=zufall%6; //Ergebnis ist Zahl von 0..5 ZeigeZahl(zufall+1); //Würfelergebnis anzeigen while (digitalRead(PinTaster)==HIGH) {}; //Warten bis nächste Taste gedrückt wird } while (1==1); //Undendlich Wiederholen, da 1 immer gleich 1 ist }
Dieser Sketch kann hier als Download geladen werden.
Wir wünschen viel Spaß beim Nachbauen!
Pingback: Spezialfunktion für den Arduino Würfel für Kinder – Mein Techblog
Your ѕtyle is really uniquе compared to other folks I have rewd stuff from.
Тhannks ffor ⲣosting when you’ve got the opportunity,
Gueѕѕ I will just bookmark this web site.
Appreciating the commitment you put into your site and detailed information you present.
It’s awesome to come across a blog every once in a while that isn’t the same unwanted rehashed material.
Excellent read! I’ve bookmarked your site and I’m adding your
RSS feeds to my Google account. http://www.fmtrustonline.com/external/?url=http://campusvirtuel.inspq.qc.ca/content/why-aren-t-you-using-natural-natual-skin-care-cream
Muchos Gracias for your blog post. bdfcadfdddbk
This is such a fun game and we had an ideal birthday Daddy.?
Larry added. ?Can we play ?What?s the best factor about God?
tomorrow too?? he begged his Mommy.
Pingback: Spezialfunktionen für den Arduino Würfel für Kids – Tech+Code
Pingback: Parametrische Gehäuse aus dem 3D-Drucker - Tech+Code