er soll eine Spindel drehen er hört aber nicht auf zu drehen weil sich das sketch immer wiederholt
mein Problem ich das die Spindel irgendwann zu ende ist nach 3200 steps
danaos1972:
while (analogRead(x_pin) >= 0 && analogRead(x_pin) <= 200)
Kannst du dir bitte mal angewöhnen, kompletten Sketch und den in Code-tags zu posten.
Verwende dazu die Schaltfläche </> oben links im Editorfenster. Das kannst du auch nachträglich machen. Dazu den Sketch markieren und die Schaltfläche klicken.
Deine Schleife weiß nicht ob das Fenster auf oder zu ist, das musst du noch in die Abfrage einbringen damit er gar nicht erst losfährt wenn die Soll Position schon erreicht ist. Hast du Endschalter montiert?
Der Sketch macht doch genau das, was du programmiert hast. Deine merkwürdige while()-Schleife verwendest du irrtümlicherweise analog zur if()-Bedingung. Diese ist an dieser Stelle sicher verständlicher, gerade für dich als Einsteiger.
Der "Trick" besteht einfach darin, sich zu merken, wann das Fenster bereits offen ist und wann es geschlossen ist. Dazu brauchst du eine weitere Variable als Merker bzw. Zustand und die dir bekannten logischen Verknüpfungen, mit denen du bereits den Wertebereich eingeschränkt hast.
Ich würde also einmal den Analogwert abfragen und dann wie hier im Pseudocode in etwa so auswerten:
wenn sensorwert>0 UND sensorwert<200 UND FensterAuf=0 dann
{ FensterOeffnen();
FensterAuf=1}
wenn sensorwert>300 UND sensorwert<400 UND FensterAuf=1 dann
{ FensterSchliessen();
FensterAuf=0}
wenn sensorwert>0 UND sensorwert<200 UND FensterAuf=0 dann
{ FensterOeffnen();
FensterAuf=1}
wenn sensorwert>300 UND sensorwert<400 UND FensterAuf=1 dann
{ FensterSchliessen();
FensterAuf=0}
Der Sketch oben sieht doch ganz gut aus. Du hast die Variable aus aufgenommen, hast aber in der if-Bedingung nicht den Status geändert, wie ich es im Pseudocode schrieb. Auch solltest du auf die geschweiften Klammern achten - Grundlagen lernen!
Einen fertigen Code liefern wir nicht, Hilfe zur Selbsthilfe hingegen schon.