Hallo,
ich habe da eine Frage zu einem Schrittmotor. Ich habe diesen jetzt so programmiert, dass sich der Schlitten einmal über die Abeitfläche bewegt. Am Ende Wird diese Funktion aufgerufen:
if(Stepper3.run() == false)
{
digitalWrite(8,HIGH);
delay(400ß);
digitalWrite(8,LOW):
}
Leider wackeln dann alle drei Motoren plötlich rum. Wie kann ich dass umgehen?
Tut mir leid hatte wenig Zeit...
Also ich habe einen A4988 Treiber Modul an einem Nema 17 Motor angeschlossen.
Auf Pin 8 lliegt eine Pumpe welche mit 3.3V betrieben wird,
Für den Code benutze ich die AccelStepper Libary
Data kommt über ein Bluethoot Modul.
Ich benutze aber gerade einfach zum Testen beim Setup einen Stepper.move Befehl und im Loop eine Run Funktion.
Die If Schleife soll ausgeführt werden, wenn der Motor (Stepper3) sein Ziel erreicht hat.
Hallo
ich habe mir den Sketch angeschaut. Leider kann ich nicht nachvollziehen wann, wo, was, wie und warum läuft oder aucht nicht.
Mir fehlen die Kommentare bzw beschreibene Variablenamen um helfen zu können.
benny001:
Die If Schleife soll ausgeführt werden, wenn der Motor (Stepper3) sein Ziel erreicht hat.
Es gibt keine if-Schleifen. Was meinst Du also damit?
Du solltest mal ein paar Kommentare in deinen Sketch schreiben, damit man weis, was da jeweils passieren soll, und eine ordentliche Formatierung würde auch bei der Übersicht helfen ( Ctrl-T hilft dabei ).
Was mir auffällt, dass außer im Setup wonirgends mehr eine move-Aufruf für die Stepper vorkommt. Wie sollen die sich da bewegen?
Ausserdem ist delay() im Zusammenhang mit der AccelStepper ziemlich tötlich, weil in dieser Zeit keine Steps mehr erzeugt werden können.
Die sind nicht irgendwie dazu gekommen, sondern die kommen von Dir. Lass die also in Zukunft weg.
Du wirfst uns nur Fragmente vor, mit denen keiner etwas anfangen kann. Da wird es wohl eng mit Hilfe werden.
Den reinen Code brauchst du nicht erklären, das sehen wir auch so. Wichtig wäre, was das von der Logik her bedeuten soll. Wieso die move-Anweisungen nur im setup()? Sollen sich die Motore nur einmal bewegen, und dann nie wieder?
benny001:
Alles darunter wird im Moment nicht ausgeführt und ist nur für weitere Zwecke.
Warum sollte das nicht ausgeführt werden? Natürlich werden auch die folgenden Anweisungen alle ausgeführt. Ob das in deinem Sinne ist, ist eien andere Frage.
Deshalb nochmal: Was erwartest Du bei deinem Sketch was passieren soll und was passiert tatsächlich.
hab mich auch über die color gewundert. Kann es sein das die aus dem Webeditor stammen. ?
Mach doch erst mal ein ganz einfaches Beispiel mit nur einem Motor. Den lässt Du auf eine bestimmte Anzahl stepps laufen und wenn das fertig ist machst Du eine LED an. Am besten nimmst Du noch einen Taster dazu damit Du das dann immer wieder neu starten kannst. Und alles im loop.
ich weiss auch nicht was passiert wenn man Stepper.run() merfach aufruft, zum laufen lassen und zur Abfrage. ? Schau dir mal die Doku an link da findest Du auch noch die methode distanceToGo().
Rentner:
hab mich auch über die color gewundert. Kann es sein das die aus dem Webeditor stammen. ?
Eher nicht. Jedenfalls nicht, wenn am PC gearbeitet wird. Gerade ausprobiert:
Webeditor: Copy. Forum: Paste.
Da wird nur der "reine" Code eingefügt. Mag natürlich sein, dass es ev. auch vom Browser abhängt. Habe es jedenfalls probiert mit Chrome und Firefox. Gleiches Verhalten.
Rentner:
ich weiss auch nicht was passiert wenn man Stepper.run() merfach aufruft, zum laufen lassen und zur Abfrage. ? Schau dir mal die Doku an link da findest Du auch noch die methode distanceToGo().
distanceToGo() wird am Ende von run() aufgerufen. Aber ich finde auch klarer, wenn man für die Abfrage, ob der Stepper das Ziel erreicht hat, distanceToGo() nimmt.