
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 auf einem LCD angezeigt.
So soll die Anzeige aussehen:
Schließe das LCD an:


⇒LCD
Normalerweise wäre eine komplexe Verkabelung zum Betrieb eines LCDs nötig. Der ⇒I2C-Bus regelt über einen eigenen Mikroprozessor die Kommunikation der Datenleitungen untereinander. Es werden deshalb nur vier Anschlüsse benötigt.

Die Helligkeit kann mit einem Potentiometer auf der Rückseite des LCDs eingestellt werden.
Benötigte Bauteile:
- Berührungssensor
- LCD 1602
- Leitungsdrähte
Baue die Schaltung auf.
(Fahre mit der Maus über das Bild, um die Bezeichnungen der Bauteile zu sehen)
Benötigte Bibliothek:

Binde zunächst die benötigten Bibliothek ein und definiere die Variablen:
#include "LiquidCrystal_I2C.h"
LiquidCrystal_I2C lcd(0x27, 20, 4);
int SENSOR = 8;
// 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;
int SensorLesen;
Der setup-Teil:
void setup()
{
pinMode(SENSOR, INPUT);
// bei Verwendung eines Tasters:
// pinMode(SENSOR, INPUT_PULLUP);
// Zufallsgenerator starten
randomSeed(analogRead(A0));
// LCD einschalten
lcd.init();
lcd.backlight();
}
Für die Bestimmung der Spielzahlen und die Ziehung der Lottozahlen wird jeweils eine Funktion verwendet:
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) Zahlen 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];
}
Die Lottozahlen werden mit ZahlenSortieren() aufsteigend sortiert:
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 loop-Teil beginnt mit dem Zurücksetzen der Strings und der Anzahl der Treffer, dem Lesen des Berührungssensors und der Ziehung der Zahlen.
void loop()
{
String GespielteZahlen = "";
String GezogeneZahlen = "";
String AnzahlTreffer = "";
int Treffer = 0;
SensorLesen = digitalRead(SENSOR);
// bei Verwendung eines Tasters:
// if (SensorLesen == LOW)
if (SensorLesen == HIGH)
{
delay(200);
// Ziehung der "angekreuzten" Zahlen
Ziehung();
Anschließend wird das Array der gespielten Zahlen aufsteigend sortiert und das Array als String (GespielteZahlen) zusammengesetzt und ausgegeben.
ZahlenSortieren(LottoZahl, 6);
for (int i = 0; i < Anzahl; i++)
{
GespielteZahlen = GespielteZahlen + LottoZahl[i] + " ";
/*
für den späteren Vergleich wird
dem Array SpielZahl (die „gespielten“ Zahlen)
das identische Element des Arrays LottoZahl zugewiesen
*/
SpielZahl[i] = LottoZahl[i];
}
Die Ziehung der Zahlen und das Sortieren der Zahlen) wird für die eigentlichen Lottozahlen wiederholt..
// Ziehung der Lottozahlen
Ziehung();
ZahlenSortieren(LottoZahl, 6);
Jetzt soll die Anzahl der Treffer ermittelt werden:
// 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 „zusammengebaut“ (GezogeneZahlen).
// String GezogeneZahlen aus den Elementen des Arrays LottoZahl
// zusammensetzen
for (int i = 0; i < Anzahl; i++)
{
GezogeneZahlen = GezogeneZahlen + LottoZahl[i] + " ";
}
Die Anzeige auf dem LCD:
// Anzeige LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.noCursor();
lcd.print("Lottozahlen");
lcd.setCursor(0, 1);
lcd.print(GespielteZahlen);
// Anzeige LCD lcd.setCursor(0, 2);
lcd.print(GezogeneZahlen);
lcd.setCursor(0, 3);
// keine Treffer
if (Treffer == 0) lcd.print("keine Treffer!");
// getroffene Zahlen anzeigen
else lcd.print("Treffer: " + AnzahlTreffer);
}
}
Verwandte Anleitungen:
- Automatische Tür mit Hall-Sensoren
- Bibliothek TFT_eSPI
- Countdown mit einer einstelligen 7-Segment-Anzeige
- Countdown mit einem OLED-Display
- Datum und Zeit mit dem NTP-Protokoll anzeigen
- DHT - Messdaten und Zeit auf TFT anzeigen
- ESP - DHT Messdaten auf Waveshare 1,54 Zoll E-Ink anzeigen
- ESP32-Wroom – BMP280/DHT Zeit und Messdaten auf TFT anzeigen
- Wetterdaten von Openweather mit der API 3.0 auf einem TFT anzeigen
- Farbenspiele mit einer RGB-Matrix
- Glücksrad mit NeoPixel-Ring
- Labyrinth-Spiel mit TFT und Fernbedienung
- Labyrinthspiel mit Joystick und TFT
- Länder-Info
- LED-Matrix - Countdown
- LED-Matrix - Joystick-Spiel
- LED-Matrix - Lauflicht
- LED-Matrix Würfeln
- Lottozahlen - Anzeige auf einem OLED-Display
- MQTT mit ESP
- Multiplikations-Taschenrechner
- Spiel mit einer RGB-Matrix
- Spielautomat mit einer RGB-Matrix
- Taschenrechner Grundrechenarten
- Würfeln einstellige 7-Segment-Anzeige und Fernbedienung
Letzte Aktualisierung: