Das braucht dann seine Zeit. 72 Mal 2 Sekunden Pause plus 72 Mal 82 Umdrehungen inkl. 30 ms Pause. Da würde ich mir dann Gedanken um "Multitasking" machen. Entweder per Timer oder mit Zeitschlitzen arbeiten. Falls Daten per I2C übertragen werden sollen und auch die Stopptaste würde ich während dessen nicht stilllegen. Ist das in Deinem Projekt nicht von Bedeutung, dann einfach die Schleife von 400 auf 82 ändern und eine Pause von 2 Sekunden einfügen. Darum noch eine 2. Schleife mit 72 Durchläufen und Deine Wünsche sind ohne Rücksicht auf Verluste der Tasten und I2C während der Codeausführung erfüllt.
In den Kopf:
Code:
dim Durchlauf as byte
Dann die Änderungen:
Code:
Case 2 'Bewegt Motor genau 400 Halbschritte (1 Umdrehung bei den meisten Motoren)
For Durchlauf = 1 to 72
For I = 1 To 82
Stepper_takt = 0 : Waitus 1 : Stepper_takt = 1
Waitms 30
Next I
Wait 2
next durchlauf
Oder mit Stopptaste:
In den Kopf:
Code:
dim Durchlauf as byte
dim ipause as integer
dim abbruch as byte 'schneller als bit
Dann die Änderungen:
Code:
Case 2 'Bewegt Motor genau 400 Halbschritte (1 Umdrehung bei den meisten Motoren)
abbruch=0
For Durchlauf = 1 to 72
For I = 1 To 82
Stepper_takt = 0 : Waitus 1 : Stepper_takt = 1
Waitms 30
if abbruch=1 then exit for
Next I
for ipause= 1 to 2000 ' evtl. Wegen Tastenabfrage verkleinern
Waitms 1
taste = tastenabfrage()
if taste=5 then
abbruch=1
end if
if abbruch=1 then exit for
next durchlauf
Alles ungetestet...
Lesezeichen