Anfänger sucht Hilfe bei Motorenauswahl

@ postmaster-ino

Hi,

Wer /dev/null schreibt, kann gar nicht so blöd sein :slight_smile:

=> (Danke, hier läuft alles unter Debian)

Die im Fritzing angedachten Schalter (UT/OT/Drehen) sind Taster?

=> Ja, sind https://www.amazon.de/gp/product/B01I2ZG1UC/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1

Was hindert Dich, statt 35677 fest vorgegebene Schritte zu fahren, so lange zu fahren, bis der entsprechende Taster betätigt ist?

=> Ja genau, das möchte ich, bekomme das aber ums verrecken nicht hin, steht aber oben.

Klar MUSS Das blockadefrei sein (während der Blockade kann man ja den Ziel-Taster nicht abfragen).
Vll. liegt hier schon Dein Problem?!?

Äääh - Ja, genau Da liegt Dein Problem!
Du hast eine Art feste Schrittkette aufgebaut.
Dort machst Du z.B. 2500x einen Schritt, um den Rost hoch zu fahren - während dieser Zeit passiert sonst - Nichts.
Hier kann ein Meteor die Dinosaurier auslöschen - den Arduino stört Das nicht die Bohne!

Was Du brauchst: eine State-Maschine, kein delay, denke in Schritten.

Schritt 'Rost hoch':
ist die Zeit gekommen, für den nächsten Schritt?
N -> mache Nichts
J -> löse Schritt aus, merke Dir die Uhrzeit, sind wir 'oben'? -> Wechsel zu 'Rost drehen'

Schritt 'Rost runter':
ist die Zeit gekommen, für den nächsten Schritt?
N -> mache Nichts
J -> löse Schritt aus, merke Dir die Uhrzeit, sind wir 'unten'? -> Wechsel zu 'Warten'

Schritt 'Warten':
ist die Zeit gekommen, für den nächsten Schritt?
N -> mache Nichts
J -> Wechsel zu 'Rost rauf'

Schritt 'Rost drehen':
ist die Zeit gekommen, für den nächsten Schritt?
N -> mache Nichts
J -> löse Schritt aus, merke Dir die Uhrzeit, sind wir fertig? -> Wechsel zu 'Rost runter'

=> Sehr gut, danke, aber wie genau kann ich dass in Code "giessen"?
Ich hab mich totgesucht, auch auf englisch, Ergebnisse, nahe NULL.

Ich hege die Hoffnung, das mir hier irgendwer mit passenden Code Schnipseln "auf die Sprünge" hilft.

Da wir nirgendwo warten, sind wir quasi immer überall - wir machen aber nur, was gerade akut ist.
Bei 'Rost runter' z.B. müssen wir nicht prüfen, oder wir mit dem Drehen des Rost fertig sind - warum auch?
Auch müssen wir nicht Warten, bis der Arzt kommt, sondern einfach erst was machen, wenn 'Zeit dafür ist'.

Ohne Stepper-Lib halt stur die Zeiten zwischen den Steps 'warten' - also prüfen, ob die Wartezeit vorbei ist.
Mit Stepper-Lib die nächste Soll-Position vorgeben und warten, daß der Motor Diese erreicht.

Da Du bis jetzt den Stepper 'von Hand' ansteuerst, würde ich Da auch erst Mal bleiben.

=> "Von Hand"? Das was oben als Code steht, führt der Arduino aus.
Das bewegt sich autonom. Ich tue da nix!

Oder bedeutet 'von Hand' irgend etwas anderes? (ich Newbie- muss mich wohl auch erst in die Kommunikation reinfühlen)

MfG und danke fürs Feedback

feuerstein