Hallo,
habe folgendes vorhaben, ich würde gerne einen Schrittmotor mit einer Gleichung/Funktion anfahren.
Ich habe dies mal mit einer for-Schleife versucht.
Und als Funktion y=m*x genommen.
Somit sollte eigentlich die Motorgeschwindigkeit langsam linear ansteigen.
Was mache ich falsch?
Die Verkabelung ist korrekt, da ich mit einem Taster ohne diese Funktion den Motor ans laufen bringe.
LG Marc
#include <Stepper.h>
int SPU = 2048;
Stepper Motor(SPU, 3,5,4,6);
int Taster=10; // Taster an Pin7
int Tasterstatus=0; // Variable für den Status des Tasters
long y; //Motorspeed
int m=0.5; //Steigung Gleichung
int x;
void setup()
{
Motor.setSpeed(4);
pinMode(Taster, INPUT);
}
void loop()
{
Tasterstatus=digitalRead(Taster);
while(Tasterstatus == LOW)
{
delay(1);
Tasterstatus=digitalRead(Taster);
for (int x=0; x<=10; x+1){
y= m * x;
Motor.setSpeed(y);
delay(1000);
Serial.print(y);
Serial.println(" Umdrehungen");
}
}
}
[code]
Hi
Du wirst zumindest dem Motor noch sagen müssen, wohin Er Sich denn bewegen soll.
Ohne Ziel wird Er ganau da bleiben, wo Er bereits ist - Da ist die Geschwindigkeit nahezu egal für.
Auch sehe ich nicht, wie diese Library funktioniert - möglich, daß Die im Hintergrund die Steps erzeugt - dann fehlt 'nur' der Ziel-Punkt.
Wenn nicht, fehlt auch noch eine .run() Methode - Das klappt dann aber nicht mehr sonderlich gut in der FOR, sofern man noch 'was Anderes' vor hat.
Link zur Lib, falls Das Einer nachbauen möchte?
MfG
Hmm,
also ich kann deinen Post nicht ganz nachvollziehen.
Hier die Website, wo du den Code findest, welcher bei mir funktioniert.
Ich gehe davon aus, dass sobald der Taster gedrückt wird, die for-Schleife gestartet wird. Dann läuft sie bis zur Abbruchbedingung durch und wartet wieder bis der Taster gedrückt wird.
MfG Marc
Das dürfte wohl die Standard Stepper-lib der IDE sein. Aber wie das bei einem Stepper so ist - dem musst Du auch sagen, dass er Steps machen soll. Dafür gibt's die Methode 'step'. Die ist allerdings blockierend. Du kannst also immer nur ein paar wenige Steps machen, und dann wieder die Geschwindigkeit ändern.
Schau dir das Beispiel 'stepper_speedControl' der Lib an. Da wird die Geschwindigkeit durch ein Poti verändert. Das sollte sich leicht auf deinen Anwendungsfall ändern lassen.