Arduino Lottozahlen-Generator

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

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; 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 ;-)

Ich würde mich freuen, wenn du diesen Beitrag bewerten würdest :-)

Durchschnittliche Bewertung 4 / 5. Anzahl Bewertungen: 1

Bisher keine Bewertungen! Sei der Erste, der diesen Beitrag bewertet.

Es tut uns leid, dass der Beitrag für dich nicht hilfreich war!

Lasse uns diesen Beitrag verbessern!

Wie können wir diesen Beitrag verbessern?

Ich hoffe, der Beitrag hilft dir weiter. Und falls du weitere Fragen hast, stelle sie gern hier im Arduino-Forum.

Du willst noch tiefer in die Materie einsteigen? Dann präsentiere ich dir die neuen E-Books von StartHardware:

  • 20 Lektionen
  • Projektbasiert und kurzweilig
  • Aus den Erfahrungen unzähliger Workshops
  • Sofortiger Download

  • Die beliebtesten Projekte von StartHardware
  • Mit Code, Schaltplan und Erklärungen
  • Fachwissen-Kapitel
  • Sofortiger Download


Willst du lieber ein Buch zum Anfassen? Dann werde mit diesem hier zum Arduino-Experten! Arduino: Kompendium: Elektronik, Programmierung und Projekte* – Damit lernst du alle Tricks!

2 thoughts on “Arduino Lottozahlen-Generator

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

 

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.