Schrittmotoren zufällig zwischen 2048 und 7168 Schritten drehen lassen

Hallo zusammen,
ich bins mal wieder. Board: Arduino UNO. Hab folgendes Programm geschrieben, jedoch drehen sich die Motoren um eine Umdrehung und nicht so wie von mir mit diesem Programm beabstichtigt zwischen1U und 3,5U (zwischen 2048 und 7168 Schritten). Was hab ich falsch gemacht? Wird bei jeder Wiederholung der Schleife eine neue “random” Zahl bestimmt? Funktioniert das anders?

#include <Stepper.h> // Hinzufügen der Programmbibliothek 
int SPU = 2048; // Schritte pro Umdrehung
Stepper Motor1 (SPU, 3, 5, 4, 6) ;
Stepper Motor2 (SPU, 7, 8, 9, 10) ;


void setup() {
   Motor1.setSpeed(10) ;
  Motor2.setSpeed(10) ;

}

void loop() {
  for (int zaehler = 1; zaehler <= random(2048, 7168); zaehler = zaehler + 1)
{
    Motor1.step (1) ;
    Motor2.step (1) ;
}
delay (2000) ;
}

Danke schonmal für eure Hilfe
Gruß Kehrwald

Random_Versuch.ino (401 Bytes)

Hallo, random() und map()? Keine Ahnung

MeineZufallsZahl = random(min, max)
MeineSchritte = map(MeineZufallsZahl,min,max,2048,7168);

Gruß und Spaß Andreas

Hallo Andreas,

erstmal vielen Dank für deine Antwort. Jedoch verstehe ich noch nicht, was genau ich in meinem Programm ändern muss, damit es funktioniert. Könntest du mir das nochmal etwas genauer/leichter erklären? Habe erst vor kurzem mit Arduino angefangen und kenne mich daher nicht besonders gut aus.

Gruß Kehrwald

Was Du möchtest, ist möglicherweise sowas:

#include <Stepper.h> // Hinzufügen der Programmbibliothek
int SPU = 2048; // Schritte pro Umdrehung
Stepper Motor1 (SPU, 3, 5, 4, 6) ;
Stepper Motor2 (SPU, 7, 8, 9, 10) ;


void setup() {
  Serial.begin(9600);
  Serial.println("Anfang");
  Motor1.setSpeed(10) ;
  Motor2.setSpeed(10) ;

}

void loop() {
  int schritte = random(2048, 7168);
  for (int zaehler = 1; zaehler <= schritte; zaehler = zaehler + 1)
  {
    Motor1.step (1) ;
    Motor2.step (1) ;
  }
  Serial.println(schritte);
  delay (2000) ;
}

Hallo, "kenne mich daher nicht besonders gut aus"

Ich habe auch keine Ahnung wie Dein Motor angesteuert wird. "MeineSchritte" ist ein int Wert zwischen 2048 und 7168.

Wenn Du Deinem Motor sagst: Mache "4711" Schritte dann änderst Du das in: Mache "MeineSchritte" Schritte

Gruß und Spaß Andreas P.S. "agmue" hat es Dir, noch einfacher- gemacht.

müßte nicht schon
MeineZufallsZahl = random(2048, 7169)
ohne map() genügen?

for (int zaehler = 1; zaehler <= random(2048, 7168); zaehler = zaehler + 1)

Ist insofern falsch da bei jedem For Durchgang die Zufallszahl neu berechnet wird. Du mußt die zufallszahl vor der Schleife errechnen und dann immer die gleiche Zahl als endwert nehmen.

Grüße Uwe

Hallo, jetzt- wie Du das so schreibst, sollte es reichen. Das sollte auch ohne map() laufen. Gruß und Spaß Andreas