Banner Ausblenden
Kleines Logo

Willkommen auf PSI-Online

Lottozahlen-Generator

Im Folgenden wird ein Aufbau vorgestellt, der mit Hilfe von Arduino und einem daran angeschlossenen Liquid-Crystal-Display zufällige Lottozahlen erstellt.

Code:

#include LiquidCrystal.h
//Die Datenbank des Displays wird in den Code miteinbezogen

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);
//Die Größe des Displays und der Erscheinungsort der Zahlen wird definiert
}

void getNumbers() {
  boolean uniqueNumbers = false;
  while (uniqueNumbers == false) {
    uniqueNumbers = true;
 
    for (int i = numbersFound; i < 6; i++) {
      theNumbers[i] = int(random(49)) + 1;
//zufällige Zahlen werden erstellt
    }
    
    for (int i = 0; i < 5; i++) {
      for (int j = i + 1; j < 6; j++) {
        if (theNumbers[i] == theNumbers[j]) uniqueNumbers = false;
//An dieser Stelle wird überprüft, ob jede Zahl einzigartig ist, damit es keine Dopplungen gibt
      }
    }
  }
}

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]);
//Hier werden die generierten Zahlen auf dem Display angezeigt
  }  
}

void loop() {
  if (digitalRead(buttonPin) == LOW) numbersFound = 0;

  if (myTimer + timeToNumber < millis()) {
    numbersFound++;
    myTimer = millis();
  }

  getNumbers();
  showNumbers();
  delay(50);
//Im Loop werden die vorher definierten Befehle aufgerufen, damit sie mehrmals ausgeführt werden können
}

 

 

Schaltplan:

 

 

 

Quelle: https://starthardware.org/arduino-lotto-zahlen-generator/

Erstellt: Dominik Hartung (23.04.2020) Letzte Änderung: Dominik Hartung (23.04.2020)