# include # include // Schritte pro Umdrehung. int SchritteDrehung = 2048; /* Pinbelegung: 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, 5, 7, 4, 6); int TASTER = 10; // die Farben int Rot = 0; int Blau = 0; int Gelb = 0; int Gruen = 0; float Runde = 0; // Bibliothek Bounce2 // "Prellverhinderer" für den Taster starten Bounce Start = Bounce(); void setup() { // Instanz des Objekts Bounce für den Taster zuordnen // Zeitintervall einstellen Start.attach(TASTER); Start.interval(20); pinMode(TASTER, INPUT_PULLUP); Serial.begin(9600); // auf serielle Verbindung warten while (!Serial) {;} // Zufallsgenerator starten randomSeed(analogRead(0)); // 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.step(Position); Serial.println("Position: " + String(Position)); // Farbe je nach Position bestimmen if (Position > 0 && Position < 512) { Serial.println("Rot"); Rot ++; } if (Position > 512 && Position < 1024) { Serial.println("Blau"); Blau ++; } if (Position > 1024 && Position < 1536) { Serial.println("Gelb"); Gelb ++; } if (Position > 1536 && Position < 2048) { Serial.println("Gr\u00fcn"); Gruen ++; } Serial.println("------------------------"); Runde ++; Serial.println("Runde: " + String(int(Runde))); Serial.println("Rot: \t" + String(Rot) + "\t" + String(Rot / Runde * 100) + "%"); Serial.println("Blau: \t" + String(Blau) + "\t" + String(Blau / Runde * 100) + "%"); Serial.println("Gelb: \t" + String(Gelb) + "\t" + String(Gelb / Runde * 100) + "%"); Serial.println("Gr\u00fcn: \t" + String(Gruen) + "\t" + String(Gruen / Runde * 100) + "%"); Serial.println("------------------------"); delay(1000); // Motor an den Ausgangspunkt zurückfahren Motor.step(-Position); } } }