-
-
Erfahrener Benutzer
Roboter Genie
> was habe ich denn noch nicht verstanden?
So einiges
Sorry habe keine Zeit da näher drauf einzugehen daher nur kurz:
startStopwatch2();
setStopwatch2(0);
if (getStopwatch2() > 2000)
In Deutsch:
Starte Stopuhr und Setze Stopuhr auf 0
paar kurze Befehle im MICROsekunden Bereich später
abfrage: ist Stopwatch2 > 2000*0.1 Millisekunde = 200 Millisekunden ???
NEIN, die ist dann noch nichtmal über 0 hinaus gekommen...
Danach wird die Funktion sofort verlassen und der blockierende bewegen Befehl ausgeführt.
Bei der zweiten Funktion ist es dasselbe.
Dann wird noch die Servoeinstellung aufgerufen und 3 Millisekunden gewartet - daher zucken die Servos eben kurz.
Klar warum das so nicht funktionieren kann?
So eine Stopwatch MUSS in einer Schleife abgefragt werden und darf natürlich nicht währenddessen ständig gestartet und gesetzt werden.
(das darfst Du nur dann machen wenn eine bestimmte Zeit erreicht wurde oder ein bestimmtes ereignis eingetreten ist)
Blockierende Funktionen wie "move...BLOCKING" darfst Du da natürlich auch nicht verwenden sondern musst mit isMovementcomplete abfragen ob die Bewegung abgeschlossen ist und DANN eine andere Aktion auslösen.
--> Für komplexe Bewegungsabläufe nimmt man State Machines (Zustandsautomaten). Das ist kurz in der RP6 Anleitung beschrieben und such auch mal hier im RP6 Forum danach hab ich schonmal was zu geschrieben.
MfG,
SlyD
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen