Hallo liebe Community,
ich finde bislang weder mit mit meinem eigenen Wissen, noch im Internet eine Lösung für mein - vermutlich recht kleines - Problem. Nun hoffe ich, dass ich hier eine schnelle Antwort bekommen.
Ich möchte mit einem Schrittmotor und einem Arduino Uno eine Art Glücksspirale bauen. Der Motor soll sich so lange drehen bis die Zeit X abgelaufen ist. Die Zeit X soll eine Zufallszeit zwischen 2 und 12 Sekunden sein. Danach soll der Motor stoppen, bis man erneut einen Button betätigt.
Es folgt mein bisheriger Stand. Aktuell dreht sich der Motor pausenlos weiter...
const int motorPin1 = 2; // Ror - In 1
const int motorPin2 = 3; // Braun - In 2
const int motorPin3 = 4; // Schwarz - In 3
const int motorPin4 = 5; // Weiß - In 4
// Red - pin 5 (VCC)
const int motorSpeed = 1000;
unsigned long previousMillis = 0;
unsigned long interval = 1000;
void setup() {
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
}
void loop ()
{
int zufall = random(2000, 12000);
unsigned long currentMillis = millis;
if (currentMillis - zufall >= 10000)
{
// 1
digitalWrite(motorPin4, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin1, LOW);
delayMicroseconds(motorSpeed);
// 2
digitalWrite(motorPin4, HIGH);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin1, LOW);
delayMicroseconds(motorSpeed);
// 3
digitalWrite(motorPin4, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin1, LOW);
delayMicroseconds(motorSpeed);
// 4
digitalWrite(motorPin4, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin1, LOW);
delayMicroseconds(motorSpeed);
// 5
digitalWrite(motorPin4, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin1, LOW);
delayMicroseconds(motorSpeed);
// 6
digitalWrite(motorPin4, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin1, HIGH);
delayMicroseconds(motorSpeed);
// 7
digitalWrite(motorPin4, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin1, HIGH);
delayMicroseconds(motorSpeed);
// 8
digitalWrite(motorPin4, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin1, HIGH);
delayMicroseconds(motorSpeed);
} else
{
// STOP
digitalWrite(motorPin4, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin1, LOW);
delay(5000);
}
}
Ich würde mich sehr freuen, wenn ihr mir helfen könntet! DANKE!