#include #include // mögliche Adressen I2C: 0x3C 0x3D #define I2C_ADDRESS 0x3C // Name des OLED festlegen SSD1306AsciiWire oled; int Minimum = 1; int Maximum = 49; // Berührungssensor Pin 7 int SENSOR = 7; // Anzahl der zu ziehenden Zahlen const int Anzahl = 6; // Array für die gezogenen Zahlen int LottoZahl[Anzahl]; void setup() { Serial.begin(9600); // bei Verwendung eines Berührungssensors // pinMode(SENSOR, INPUT); // bei Verwendung eines Tasters pinMode(SENSOR, INPUT); // Zufallsgenerator starten randomSeed(0); // OLED starten oled.begin(&Adafruit128x32, I2C_ADDRESS); // Schriftart bestimmen oled.setFont(font5x7); oled.println("Lottozahlen"); } void loop() { byte SpielZahl[6]; // Strings und Trefferzahl löschen String GespielteZahlen = ""; String GezogeneZahlen = ""; byte Treffer = 0; byte SensorLesen; // bei Verwendung eines Berührungssensors SensorLesen = digitalRead(SENSOR); // bei Verwendung eines Berührungssensors if (SensorLesen == HIGH) { delay(200); // 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 (byte i = 0; i < Anzahl; i++) { GespielteZahlen = GespielteZahlen + LottoZahl[i] + " "; SpielZahl[i] = LottoZahl[i]; } // Anzeige OLED // Bildschirm löschen oled.clear(); oled.setCursor(2, 0); oled.println("Gespielte Zahlen"); oled.println(GespielteZahlen); // 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 OLED oled.setCursor(2, 2); oled.println("Gezogene Zahlen"); oled.println(GezogeneZahlen); } } 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 (byte 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; } } } }