Wahr­sa­ge­rin

# include <Servo.h>
# include <LiquidCrystal_I2C.h>
# include <Bounce2.h>

LiquidCrystal_I2C lcd(0x27, 20, 4);

// Bezeichnung des Motors
Servo Motor;

int TASTER = 7;

/*
  das LCD ist auf 20 Zeichen begrenzt
  um einen unerwünschten Zeilenumbruch zu verhindern,
  müssen für die Fragen zwei Arrays erstellt werden
*/

/ 1. Zeile der Frage
String FragenErstezeile[10] = 
{
  // mit Leerzeichen bis 20 auffüllen
  { "Wird der BVB        " },
  { "Scheint morgen      " },
  { "Wird Deutschland    " },
  { "Habe ich 6 Richtige " },
  { "Gibt es den         " },
  { "Gibt es UFOs und    " },
  { "Sollte ich mal      " },
  { "Bekomme ich bald    " },
  { "K\357nnen Schweine     " },
  { "Wird es morgen      " },
};

// 2. Zeile der Frage
String FragenZweiteZeile[10] = 
{
  { "Deutscher Meister?   " },
  { "die Sonne?           " },
  { "Fu\342ball-Weltmeister?" },
  { "im Lotto?            " },
  { "Weihnachtsmann?      " },
  { "Au\342erirdische?      " },
  { "Lotto spielen?       " },
  { "mehr Gehalt?          " },
  { "fliegen?             " },
  { "regnen?              " },
};

// Bibliothek Bounce2
// "Prellverhinderer" für den Taster starten
Bounce Start = Bounce();

void setup() 
{
  // Motor an Pin 9 angeschlossen (attach)
  Serial.begin(9600);

  // Motor an Pin 9
  Motor.attach(9);
  Serial.begin(9600);

  // Motor in die Mittelposition fahren
  Motor.write(90);

  // Zufallsgenerator starten
  randomSeed(analogRead(0));

  // LCD starten
  lcd.init();
  lcd.backlight();
  
  pinMode(TASTER, INPUT_PULLUP);

  // Instanz des Objekts Bounce für den Taster zuordnen
  // Zeitintervall einstellen
  Start.attach(TASTER);
  Start.interval(20);
}

void loop() 
{
  // Taster abfragen
  if (Start.update()) 
  {
    if (Start.read() == LOW) 
    {
      // Zufallszahl zwischen 0 und der Länge des Arrays
      int Zahl = random(0, sizeof(FragenErstezeile) / sizeof(FragenErstezeile[0]));
      Serial.println(Zahl);

      lcd.setCursor(0, 0);
      lcd.print(FragenErstezeile[Zahl]);
      
      lcd.setCursor(0, 1);
      lcd.print(FragenZweiteZeile[Zahl]);
      delay(1000);

      // Bewegung des Motors zur Simulation der "Entscheidung"
      Motor.write(180);
      delay(500);
      Motor.write(0);
      delay(500);

      // 0 = ja/1 = vielleicht/2 = nein
      Zahl = random(0, 3);
      Serial.println(Zahl);
      if (Zahl == 0) Motor.write(180);
      if (Zahl == 1) Motor.write(90);
      if (Zahl == 2) Motor.write(0);
    }
  }
}

Letzte Aktualisierung: 11. Dez 2022 @ 14:50