Glücks­rad Schrittmotor

# include "Stepper.h"
# include "LiquidCrystal_I2C.h"
# include "Bounce2.h"

LiquidCrystal_I2C lcd(0x27, 20, 4);

// Schritte pro Umdrehung.
int SchritteDrehung = 2048;

/*
 Zuordnung der Pins
  entweder 4, 6, 5, 7
  oder 5, 7, 4, 6
  diejenige auswählen, bei der die Drehung
  im Uhrzeigersinn ausgeführt wird
*/
Stepper Motor(SchritteDrehung, 4, 6, 5, 7);
int TASTER = 10;

// die Farben
int Rot = 0;
int Blau = 0;
int Gelb = 0;
int Gruen = 0;

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

void setup()
{
  // Instanz des Objekts Bounce dem Taster zuordnen
  // Zeitintervall einstellen
  Start.attach(TASTER);
  Start.interval(20);

  pinMode(TASTER, INPUT_PULLUP);

  // LCD einschalten
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Gl\365cksrad");

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

  // Geschwindigkeit des Motors
  Motor.setSpeed(15);
}

void loop()
{
  // Taster gedrückt
  if (Start.update())
  {
    if (Start.read() == LOW)
    {
      int Minimum = 1;
      int Maximum = SchritteDrehung;
      int Position =  random(Minimum, Maximum);

      // Motor auf zufällige Position fahren
      Motor.step(Position);

      // Ergebnis auf LCD anzeigen
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Position: " + String(Position));
      lcd.setCursor(0, 1);

      // Farbe je nach Position bestimmen
      if (Position > 0 && Position < 512)
      {
        lcd.print("Gelb");
        Gelb ++;
      }

      if (Position > 512 && Position < 1024)
      {
        lcd.print("Gr\365n:");
        Gruen ++;
      }

      if (Position > 1024 && Position < 1536)
      {
        lcd.print("Rot:");
        Rot ++;
      }

      if (Position > 1536 && Position < 2048)
      {
        lcd.print("Blau");
        Blau ++;
      }

      // Statistik anzeigen
      lcd.setCursor(0, 2);
      lcd.print("Rot:  " + String(Rot));
      lcd.setCursor(10, 2);
      lcd.print("Blau: " + String(Blau));
      lcd.setCursor(0, 3);
      lcd.print("Gelb: " + String(Gelb));
      lcd.setCursor(10, 3);
      lcd.print("Gr\365n: " + String(Gruen));
      delay(1000);

      // Motor an den Ausgangspunkt zurückfahren
      Motor.step(-Position);
    }
  }
}