# include "U8g2lib.h" // 1,3 Zoll SH1106 // U8G2_SH1106_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); // 0,96 Zoll SSD1306 U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); // Minimum/Maximum der Zufallszahlen const byte Minimum = 1; const byte Maximum = 49; const byte SENSOR = 7; // Anzahl der zu ziehenden Zahlen const byte Anzahl = 6; // Array für die gezogenen Zahlen int LottoZahl[Anzahl]; void setup() { Serial.begin(9600); pinMode(SENSOR, INPUT_PULLUP); // Zufallsgenerator starten randomSeed(0); // Display starten u8g2.begin(); u8g2.firstPage(); do { // kleine Schriftarten // u8g2.setFont(u8g2_font_torussansbold8_8r); // u8g2.setFont(u8g2_font_ncenB08_tr); // größere Schriftarten // u8g2.setFont(u8g2_font_9x18B_mr); // u8g2.setFont(u8g2_font_t0_15b_me); u8g2.setFont(u8g2_font_t0_22_te); u8g2.setCursor(2, 40); u8g2.print("Lottozahlen"); } while (u8g2.nextPage()); } void loop() { byte SpielZahl[6]; String GespielteZahlen = ""; String GezogeneZahlen = ""; byte Treffer = 0; byte SensorLesen; SensorLesen = digitalRead(SENSOR); if (SensorLesen == LOW) { delay(200); // Ziehung der "angekreuzten" Zahlen Ziehung(); 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 (byte i = 0; i < Anzahl; i++) { for (byte ii = 0; ii < Anzahl; ii++) { // Übereinstimmung gefunden -> Treffer um 1 erhöhen if (SpielZahl[i] == LottoZahl[ii]) Treffer ++; } } // String GezogeneZahlen aus den Elementen des Arrays LottoZahl // zusammensetzen for (byte i = 0; i < Anzahl; i++) { GezogeneZahlen = GezogeneZahlen + LottoZahl[i] + " "; } // 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("-----------------------------"); // geänderte Ausgabe bei einem Treffer/keinem Treffer if (Treffer == 0) { Serial.println("Keine Treffer!"); } if (Treffer == 1) { Serial.print(Treffer); Serial.println(" richtige Zahl!"); } if (Treffer > 1) { Serial.print(Treffer); Serial.println(" richtige Zahlen!"); } Serial.println("-----------------------------"); // Anzeige OLED u8g2.firstPage(); do { u8g2.setFont(u8g2_font_ncenB08_tr); u8g2.setCursor(5, 10); u8g2.print("Gespielte Zahlen"); u8g2.setCursor(5, 25); u8g2.print(GespielteZahlen); u8g2.setCursor(5, 32); u8g2.print("-----------------------------"); u8g2.setCursor(5, 40); u8g2.print("Gezogene Zahlen"); u8g2.setCursor(5, 50); u8g2.print(GezogeneZahlen); u8g2.setCursor(5, 56); u8g2.print("-----------------------------"); u8g2.setCursor(5, 63); // geänderte Ausgabe bei einem Treffer/keinem Treffer if (Treffer == 0) { u8g2.println("Keine Treffer!"); } if (Treffer == 1) { u8g2.print(Treffer); u8g2.println(" richtige Zahl!"); } if (Treffer > 1) { u8g2.print(Treffer); u8g2.println(" richtige Zahlen!"); } } while (u8g2.nextPage()); } } int Ziehung() { for (byte i = 0; i < Anzahl; i++) { /* die Lottozahl gilt solange als bereits gezogen bis in der for-Schleife nachgewiesen wird, dass sie neu ist 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 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; } } } return LottoZahl[Anzahl]; } 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; } } } }