Thomas Angielsky
Published © GPL3+

Cube for Kids

This was my Arduino-Starter-Project with my son. I just wanted an easy set-up and something he can use partically: HIS CUBE!

BeginnerFull instructions provided4,036
Cube for Kids

Things used in this project

Hardware components

Arduino UNO
Arduino UNO
×1
LED (generic)
LED (generic)
×1
Resistor 330 ohm
Resistor 330 ohm
×1

Software apps and online services

Arduino IDE
Arduino IDE

Hand tools and fabrication machines

Soldering iron (generic)
Soldering iron (generic)

Story

Read more

Schematics

Schematics

Schematics of wiring the 7 LED's and the button.

Code

Dicing Cube with Turn-On Animation

Arduino
//  PROGRAMM: LED Wuerfel                                


// Festlegen der Pins
// Pin der ersten LED
int PinErsteLED=2;

// Pin des Tasters
int PinTaster=9;

// Festlegen der Wuerfelbilder: 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 fuer den Schalter zur Steuerung des Zufallgenerators
    pinMode(PinTaster,INPUT);
}

// Funktion zum Anzeigen der Ergebnisse
void ZeigeZahl(int zahl) 
{
  // Fuer 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 gedrueckt 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 gedrueckt wird

  
  // Ab hier wird gewuerfelt, in Endlosschleife bis zum Ausschalten
  do { 
    //Startzustand setzen
    zufall=0; 
    i=0;
    do {
      zufall=zufall+1; //Zufallszahl hochzhlen
      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); //Wrfelergebnis anzeigen 
    
    while (digitalRead(PinTaster)==HIGH) {}; //Warten bis naechste Taste gedrueckt wird
  } while (1==1); //Undendlich Wiederholen, da 1 immer gleich 1 ist
}

Credits

Thomas Angielsky

Thomas Angielsky

18 projects • 36 followers
Mechanical engineer, maker, love woodwork, like Lazarus

Comments