Ich entschuldige mich dafür, dass ich seit Jahren nicht mehr hier war.
Auch wenn es für eine Antwort auf die Frage von pocketpcuser schon einige Jahre zu spät ist, antworte ich trotzdem (vielleicht sucht ja mal jemand anderes nach genau dieser Lösung).
Einem Servo die Betriebsspannung zu nehmen ist keine gute Idee. Das Servo verliert seine Haltekraft. Zudem reagieren manche Servos sehr nachtragend, wenn die Versorgungsspannung wegfällt, aber die Impulse des Empfängers weiter anliegen.
Im Code wäre es recht einfach gewesen, einen Endschalter für ein bestimmes Servo zu integrieren. In den Zeilen 299 bis 334 werden unter anderem die Servostellungen berechnet. Dies passiert mit den Zeilen:
Code:
Decr Berechnung_1a
Incr Berechnung_1a
Decr Berechnung_2a
Incr Berechnung_2a
In diesen Zeilen wird die jeweilige Stellung von Servo 1 oder Servo 2 nach rechts oder links verschoben.
Wenn nun z.B. die Linksbewegung des Servos 1 mit einem Endschalter begrenzt werden soll, liese sich das mit lediglich 3 Programmzeilen bewerkstelligen.
Vor der Hauptschleife den Endschalter einrichten mittels:
Code:
Endschalter Alias Pinx.y ' Pin festlegen, an dem der Endschalter angeschlossen wird
Portx.y = 1 ' PullUp an dem Pin einschalten
Im jeweiligen Berechnungsblock (abhängig von Servo und Richtung) dann z.B. folgende Änderung durchführen:
Code:
' Decr Berechnung_1a <--- diese Zeile ersetzen durch...
If Endschalter = 1 then Decr Berechnung_1a ' Nur ausführen, wenn Endschalter nicht betätigt ist
Nun würde das Servo nur solange in die entsprechende Richtung bewegt werden können, solange der Endschalter (oder besser gesagt der EndTASTER) nicht betätigt ist.
Sobald der Baggerarm den Taster betätigt (am Endschalter-Pin liegt dann Masse an), würde die Variable "Berechnung_1a" nicht mehr weiter decreased -> Das Servo bleibt stehen.
Lesezeichen