
Der Arduino „spielt“ für dich 6 Zahlen. Anschließend werden die Lottozahlen gezogen, aufsteigend sortiert und auf die Anzahl der übereinstimmenden Zahlen untersucht. Das Ergebnis wird im Seriellen Monitor angezeigt.
Für diese Anleitung brauchst du nur den Arduino.
So soll die Anzeige aussehen:

Definiere die Variablen:
1 2 3 4 5 6 7 8 9 10 11 12 | // Array für die angekreuzten Zahlen int SpielZahl[6]; // Array für die gespielten Zahlen und die Lottozahlen int LottoZahl[6]; // Minimum/Maximum der Zufallszahlen int Minimum = 1; int Maximum = 49; // Anzahl der zu ziehenden Zahlen int Anzahl = 6; |
Für die Bestimmung der Spielzahlen und die Ziehung der Lottozahlen wird jeweils eine Funktion verwendet:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | int Ziehung() { for (int i = 0; i < Anzahl; i++) { /* die Lottozahl gilt solange als bereits gezogen bis in der for-Schleife nachgewiesen wird, dass sie neu ist und BereitsGezogen den Wert false hat */ bool BereitsGezogen = true; while (BereitsGezogen) { // Zahl ziehen LottoZahl[i] = random(Minimum, Maximum); BereitsGezogen = false; /* Zufallszahl mit den bereits gezogenen Zahlen vergleichen i wird in der ersten for-Schleife hochgezählt alle bisherigen Zahlen (ii) werden mit den bisher gezogenen Zahlen (außer der gerade gezogenen) verglichen (ii < i) ist sie identisch, erhält BereitsGezogen den Wert true es wird erneut eine Zufallszahl bestimmt wenn die Zahl neu ist, (BereitsGezogen hat noch den Wert false) wird die while-Schleife verlassen und die nächste Zahl gezogen */ for (int ii = 0; ii < i; ii++) { if (LottoZahl[i] == LottoZahl[ii]) BereitsGezogen = true; } } } /* das Array mit den Zahlen wird an das Hauptprogramm zurückgegeben beim ersten Aufruf sind es die gespielten Zahlen beim zweiten Aufruf die gezogenen Lottozahlen */ return LottoZahl[Anzahl]; } |
Das Sortieren der Zahlen erledigt die Funktion ZahlenSortieren:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | void ZahlenSortieren(int Zahlen[], int Groesse) { // unsortierten Bereich des Arrays durchlaufen for (int i = 0; i < (Groesse - 1); i++) { // bei jedem Durchlauf wird das jeweils letzte Element weggelassen for (int ii = 0; ii < (Groesse - (i + 1)); ii++) { /* wenn die aktuelle Zahl größer als die nachfolgende Zahl ist -> aktuelle Zahl temporär speichern -> Zahlen vertauschen -> temporäre Zahl der nachfolgenden Zahl zuweisen */ if (Zahlen[ii] > Zahlen[ii + 1]) { int zwischengespeicherteZahl = Zahlen[ii]; Zahlen[ii] = Zahlen[ii + 1]; Zahlen[ii + 1] = zwischengespeicherteZahl; } } } } |
Der setup-Teil:
1 2 3 4 5 6 7 8 9 10 11 12 13 | void setup() { Serial.begin(9600); // auf serielle Verbindung warten while (!Serial); delay(1000); // Zufallsgenerator starten randomSeed(analogRead(A0)); Serial.println(“z = Nächste Ziehung”); } |
Der loop-Teil beginnt mit dem Zurücksetzen der Strings und dem Zurücksetzen der Trefferanzahl. Mit SerielReadStringUntil() wird die Eingabe der Tastatur abgefragt. Dann werden die Lottozahlen gezogen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | void loop() { String GespielteZahlen = “”; String GezogeneZahlen = “”; String AnzahlTreffer = “”; String Eingabe; int Treffer = 0; // auf serielle Eingabe warten while (Serial.available() > 0) { // solange lesen, bis return eingegeben wurde Eingabe = Serial.readStringUntil(‘\n’); } // wenn “z” eingegeben wurde if (Eingabe == “z”) { // Ziehung der “angekreuzten” Zahlen Ziehung(); |
Anschließend wird das Array der gespielten Zahlen mithilfe der Funktion ZahlenSortieren aufsteigend sortiert und das Array als String (GespielteZahlen) zusammengesetzt.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | ZahlenSortieren(LottoZahl, 6); for (int i = 0; i < Anzahl; i++) { // String GespielteZahlen aus den Elementen des Arrays // LottoZahl zusammensetzen GespielteZahlen = GespielteZahlen + LottoZahl[i] + ” “; /* dem Array SpielZahl (die „gespielten“ Zahlen) wird das identische Element des Arrays LottoZahl zugewiesen Dieser Schritt darf für die Ziehung der Lottozahlen nicht wiederholt werden. */ SpielZahl[i] = LottoZahl[i]; } |
Die Ziehung der Zahlen und das Sortieren der Zahlen wird für die eigentlichen Lottozahlen wiederholt..
1 2 3 | // Ziehung der Lottozahlen Ziehung(); ZahlenSortieren(LottoZahl, 6); |
Jetzt sollen die übereinstimmenden Zahlen ermittelt werden:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | // Vergleichen der Elemente der Arrays SpielZahl und LottoZahl for (int i = 0; i < Anzahl; i++) { for (int ii = 0; ii < Anzahl; ii++) { // Übereinstimmung gefunden -> Treffer um 1 erhöhen // AnzahlTreffer: String für übereinstimmende Zahlen erzeugen if (SpielZahl[i] == LottoZahl[ii]) { AnzahlTreffer = AnzahlTreffer + SpielZahl[i] + ” “; Treffer ++; } } } |
Für die Anzeige wird aus den Elementen des Arrays LottoZahl ein String (GezogeneZahlen) „zusammengebaut“.
1 2 3 4 5 6 | // String GezogeneZahlen aus den Elementen des Arrays LottoZahl // zusammensetzen for (int i = 0; i < Anzahl; i++) { GezogeneZahlen = GezogeneZahlen + LottoZahl[i] + ” “; } |
Die Anzeige im Seriellen Monitor:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | // Anzeige Serieller Monitor Serial.println(“Gespielte Zahlen”); Serial.println(“—————————–”); Serial.println(GespielteZahlen); Serial.println(“—————————–”); Serial.println(“Gezogene Zahlen”); Serial.println(“—————————–”); Serial.println(GezogeneZahlen); Serial.println(“—————————–”); if (Treffer == 0) Serial.println(“keine Treffer!”); else if (Treffer == 1) Serial.println(“Treffer: ” + AnzahlTreffer + “(“ + String(Treffer) + ” richtige Zahl)”); else Serial.println(“Treffer: ” + AnzahlTreffer + “(“ + String(Treffer) + ” richtige Zahlen)”); Serial.println(“—————————–”); } } |
Der vollständige loop-Teil:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | void loop() { String GespielteZahlen = “”; String GezogeneZahlen = “”; String AnzahlTreffer = “”; String Eingabe; int Treffer = 0; // auf serielle Eingabe warten while (Serial.available() > 0) { // solange lesen, bis return eingegeben wurde Eingabe = Serial.readStringUntil(‘\n’); } // wenn “z” eingegeben wurde if (Eingabe == “z”) { // Ziehung der “angekreuzten” Zahlen Ziehung(); /* Array Sortieren mit ArduinoSort sortArray(NameArray, AnzahlElemente) sortArrayReverse(NameArray, AnzahlElemente) */ ZahlenSortieren(LottoZahl, 6); // String GespielteZahlen aus den Elementen des Arrays LottoZahl // zusammensetzen for (int i = 0; i < Anzahl; i++) { GespielteZahlen = GespielteZahlen + LottoZahl[i] + ” “; SpielZahl[i] = LottoZahl[i]; } // Ziehung der Lottozahlen Ziehung(); ZahlenSortieren(LottoZahl, 6); // Vergleichen der Elemente der Arrays SpielZahl und LottoZahl for (int i = 0; i < Anzahl; i++) { for (int ii = 0; ii < Anzahl; ii++) { // Übereinstimmung gefunden -> Treffer um 1 erhöhen if (SpielZahl[i] == LottoZahl[ii]) { AnzahlTreffer = AnzahlTreffer + SpielZahl[i] + ” “; Treffer ++; } } } // String GezogeneZahlen aus den Elementen des Arrays LottoZahl // zusammensetzen for (int i = 0; i < Anzahl; i++) { GezogeneZahlen = GezogeneZahlen + LottoZahl[i] + ” “; } // Anzeige Serieller Monitor Serial.println(“Gespielte Zahlen”); Serial.println(“—————————–”); Serial.println(GespielteZahlen); Serial.println(“—————————–”); // Anzeige der Zahlen Serieller Monitor Serial.println(“Gezogene Zahlen”); Serial.println(“—————————–”); Serial.println(GezogeneZahlen); Serial.println(“—————————–”); if (Treffer == 0) Serial.println(“keine Treffer!”); else Serial.println(“Treffer: ” + AnzahlTreffer + “”); Serial.println(“—————————–”); } } |
Verwandte Anleitungen:
- Einmaleinsreihen anzeigen
- Einmaleinsreihen — Anzeige mit Keyes-Fernbedienung
- Fußballtipp
- Geldautomat
- Kniffel — EEPROM verwenden
- Primzahlen ermitteln
- Satzmaschine
- Städte-Info
- Teiler bestimmen
- Vokale zählen
Letzte Aktualisierung:






