byte Zahlen[6] ={ B01100000, // 1 B11001101, // 2 B11101001, // 3 B01100011, // 4 B10101011, // 5 B10101111, // 6};int TASTER =13;int LAUTSPRECHER =10;voidsetup(){ // Pins auf OUTPUT setzenfor (int i =2; i <=9; i++) {pinMode(i, OUTPUT); }pinMode(TASTER, INPUT_PULLUP); // Zufallsgenerator startenrandomSeed(analogRead(0));}voidloop(){ /* der Bereich der Zahlen 1 bis 6 als oberer Wert muss 7 angegeben werden, weil immer nach unten gerundet wird */int Minimum =1;int Maximum =7;int TasterLesen =digitalRead(TASTER);if (!TasterLesen) { // Würfeleffekt // in schneller Folge werden 10 Zufallszahlen angezeigtfor (int i =0; i <10; i++) { /* das Array der Zahlen beginnt mit 0 und endet bei 5 die Würfelzahlen beginnen mit 1 -> 1 von der gewürfelten Zahl abziehen, um das richtige Array anzuzeigen */ZahlZeigen(Zahlen[ZufallsZahl(Minimum, Maximum) -1]);delay(100); } // gewürfelte Zahl anzeigen byte Zahl =ZufallsZahl(Minimum, Maximum);ZahlZeigen(Zahlen[Zahl -1]);tone(LAUTSPRECHER, 1000, 10); }}voidZahlZeigen(byteArrayZahl){ // Bits des Arrays ArrayZahl prüfen // von Pin 2 bis Pin 9 durchlaufenfor (int i =2; i <=9; i++) { /* vergleicht das Byte ArrayZahl mit dem Byte B10000000 befindet sich an beiden Positionen eine 1 das Ergebnis der Prüfung ist also nicht 0 -> Segment einschalten ist eine der Positionen eine 0 das Ergebnis der Prüfung ist 0 -> Segment ausschalten 1 Bit nach links schieben -> nächstes Bit prüfen nach 8 Durchläufen sind alle Segmente (Pins) richtig geschaltet */if ((ArrayZahl & B10000000) !=0) digitalWrite(i, HIGH);elsedigitalWrite(i, LOW); ArrayZahl = ArrayZahl <<1; }}intZufallsZahl(intMinimum, intMaximum){int Zahl =random(Minimum, Maximum);return Zahl;}