Forum
Arduino Programmierung "speciale" (Elektronik)
» Da DIR immer auf HIGH geblieben ist, habe ich diesen Ausgang am Ende der
» jeweiligen Impuls-Unterprogramme auf LOW gesetzt.
Das kannst du machen, notwendig ist es aber nicht. DIR wird jeweils vor Beginn der Bewegung auf den richtigen Wert gesetzt. Solange keine Taktimpulse ausgegeben werden, ist der Pegel von DIR nicht von Belang.
» Allerdings ist die Pausenzeit nur beim Ersten PULS 1ms, alle weiteren haben
» 2ms.
Eigentlich sollte die Pause zwischen zwei Taktimpulsen um die 100ms liegen, entsprechend der Konstante "schrittmotortakt" im Header. Irgendwas läuft da noch nicht so, wie es soll. Hast du den Vergleichsoperator in der markierten Zeile korrigiert?
while (motorschritte > 0) { // vorgewählte anzahl von schritten ausgeben
impulslaenge = schrittmotortakt; // wartezeit zwischen zwei motorschritten
digitalWrite(clkPin, HIGH); // taktimpuls
digitalWrite(clkPin, LOW);
motorschritte--; // schritte herunterzählen
while (impulslaenge > 0) { // impulslänge abwarten
if (zeitmerken != millis()) { // timer hat weitergezählt <<<<<<<<< so ist es korrekt <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
------------------- ^^^
impulslaenge--; // wartezeit herunterzählen
zeitmerken = millis(); //neuen timerwert merken
}
}
}
»
» Ansonsten funktioniert der Automatik-Modus wie gewünscht. Die Anzahl der
» Impulse entsprechend BCD-Schalter stimmt auch auffallend.
Dann habe ich ja scheinbar richtig geraten.
»
» Nur der Hand-Modus schaltet sich nicht ab...
Die Zeile
while(digitalRead(handPin == 1)) { // impulse ausgeben, solange taste gedrückt ist
ist auch nicht ganz korrekt. Richtig muss es heißen
while(digitalRead(handPin == HIGH)) { // impulse ausgeben, solange taste gedrückt ist
Die "0" für "LOW" bei den anderen "digitalRead"-Abfragen ist ebenfalls nicht korrekt, die scheint der Arduino allerdings richtig auszuwerten.
EDIT: Hier eine bereinigte und korrigierte Version des Programms. Die Zeitschleifen habe ich auch etwas vereinfacht.
https://www.elektronik-kompendium.de/forum/upload/20260214202307.ino
--
Es ist unter der Würde eines Technikers, die Gebrauchsanweisung zu lesen!
Gesamter Thread:
