Wir bauen einen Lottozahlen-Generator mit Arduino. Dazu verwenden wir ein LCD-Display für die Ausgabe. Gestartet wird der Generator mit einem Button.
Bauteile
- 1 x
- 1 x Widerstand 220 Ohm
- 1 x Potentiometer 100kOhm
- 1 x Zwei-Zeilen-Display 20×2, blau/weiß
Schaltplan

Das LCD wird ganz normal an das Arduino-Board angeschlossen. Wie das genau geht, habe ich schon mal hier erklärt: LCD-Display mit Arduino steuern. Zusätzlich ist noch ein Button in die Schaltung eingefügt. Wird der Button gedrückt, werden die neuen Lottozahlen generiert.
Achtung: Ich übernehme keinerlei Garantie, dass die Zahlen auch gewinnen. Ich sag mal: alle Angaben ohne Gewähr ;-)
Arduino-Code
Das Programm verfügt über eine Methode (getNumbers), in der die zufälligen Lottozahlen generiert werden:
for (int i = numbersFound; i < 6; i++) {
theNumbers[i] = int(random(49)) + 1;
}
Sind die Zahlen generiert, wird geprüft, ob sie eindeutig sind, d.h., dass sie nur jeweils einmal in der Zahlenkombination vorkommen:
// Eindeutigkeit überprüfen (doppelte Zahlen verboten)
for (int i = 0; i < 5; i++) {
for (int j = i + 1; j < 6; j++) {
if (theNumbers[i] == theNumbers[j]) uniqueNumbers = false;
}
}
Sind sie nicht eindeutig, wird die gesamte Prozedur wiederholt.
Eine zweite Methode, showNumbers(), zeigt die einzelnen Zahlen auf dem LCD-Display an.
void showNumbers(){
for (int i = 0; i < 3; i++) {
lcd.setCursor(4 * i, 0);
if (theNumbers[i] < 10) lcd.print(" ");
lcd.print(theNumbers[i]);
lcd.setCursor(4 * i, 1);
if (theNumbers[i + 3] < 10) lcd.print(" ");
lcd.print(theNumbers[i + 3]);
}
}
Der zusammenhängende Code sieht dann so aus:
#include <LiquidCrystal.h>
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
int buttonPin = 8;
int theNumbers[] = {0, 0, 0, 0, 0, 0};
int timeToNumber = 600;
int numbersFound = 0;
long myTimer = 0;
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
lcd.begin(16, 2);
randomSeed(analogRead(0));
myTimer = millis();
Serial.begin(115200);
}
void getNumbers() {
boolean uniqueNumbers = false;
while (uniqueNumbers == false) {
uniqueNumbers = true;
// Zufallszahlen generieren
for (int i = (numbersFound-1); i < 6; i++) {
theNumbers[i] = int(random(49)) + 1;
}
// Eindeutigkeit überprüfen (doppelte Zahlen verboten)
for (int i = 0; i < 5; i++) {
for (int j = i + 1; j < 6; j++) {
if (theNumbers[i] == theNumbers[j]) uniqueNumbers = false;
}
}
}
}
void showNumbers(){
for (int i = 0; i < 3; i++) {
lcd.setCursor(4 * i, 0);
if (theNumbers[i] < 10) lcd.print(" ");
lcd.print(theNumbers[i]);
lcd.setCursor(4 * i, 1);
if (theNumbers[i + 3] < 10) lcd.print(" ");
lcd.print(theNumbers[i + 3]);
}
}
void loop() {
if (digitalRead(buttonPin) == LOW) numbersFound = 0;
if (myTimer + timeToNumber < millis()) {
numbersFound++;
myTimer = millis();
}
getNumbers();
showNumbers();
delay(50);
}
Und jetzt viel Glück beim Lotto-Spielen! Wenn diese Zahlen gewinnen, möchte ich aber bitte was vom Gewinn abhaben ;-)
Wenn dir das Projekt gefallen hat und du von weiteren interessanten Projekten inspiriert werden willst, sieh dir doch mal mein neues E-Book »Arduino Projekte Volume 1« an!
- Die beliebtesten Arduino-Projekte von StartHardware
- Inklusive Schaltplan, Beschreibung und Code
- Arduino-Schnellstart-Kapitel
- Kompakter Programmierkurs



Hab den Code ausprobiert und bin dabei auf eine Kleinigkeit gestoßen:
Von den einmal generierten Zahlen wurden jedes mal alle, bis auf die erste, erneuert.
Hab den Code dann bei „for (int i = numbersFound; i < 6; i++) {" auf
"for (int i = (numbersFound-1); i < 6; i++) {" umgeschrieben.
Seither werden ALLE Zahlen neu gewürfelt.
Hi Thomas, oha. Vielen Dank für den Hinweis :-) Liebe Grüße Stefan
Für fortnite
Gibt es eine Teileliste?
Jetzt ja. Danke für den Hinweis :-)