// 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
}
Comments