1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | #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); } } } |