-
-
Erfahrener Benutzer
Robotik Einstein
Hallo andi,
so ganz verstehe ich dein Prog nicht.
Rein formal:
1. Mit initSERVO() must du ALLE Servos, die du angeschlossen hast, in der Main (also VOR der while(1)-Schleife!) EINMAL definieren. Wenn du also Servos an 1, 3 und 4 hast, dann steht da:
initSERVO(SERVO1 | SERVO3 | SERVO4);
In einer Funktion (und bes. in einer Schleife) hat initSERVO nichts zu suchen.
2. Wenn sich der Arm bewegen soll, müßtest du die Servopositionen für eine bestimmte Bewegung z.B. in einer Funktion (Armrunter, Armhoch, Handauf ...) zusammen fassen. Das sind dann mehrere Positionen pro Bewegung, zwischen denen je eine Pause liegt.
Gruß Dirk
-
Erfahrener Benutzer
Fleißiges Mitglied
Hallo Dirk,
erstmal: dein Beitrag ist einfach toll!
Mal eine kleine Frage zu Zeile 68 der Datei RP6ControlServoLib.h.
Nach meinem Verständnis müsste das doch so sein:
#define MIDDLE_POSITION ((RIGHT_TOUCH + LEFT_TOUCH) / 2) // Middle position (~1.5ms)
denn left Touch ist ja nicht gleich null.
grüsse,
Patrick
-
Erfahrener Benutzer
Robotik Einstein
@Patrick,
sorry, hatte erst jetzt deinen Beitrag gelesen.
Nein, die Definition in der Lib ist ok, weil ich die Servos von 0 bis RIGHT_TOUCH ansteuere.
LEFT_TOUCH wird nur in der Lib für das einmalige Einstellen des linken Anschlags benötigt.
Im Programm braucht man dann LEFT_TOUCH nicht mehr, weil der linke Anschlag 0 ist.
MIDDLE_POSITION ist dann tatsächlich RIGHT_TOUCH / 2.
-
Erfahrener Benutzer
Fleißiges Mitglied
hey,
ich wollte die library für 8 Servos heute ausprobieren und wollte dann einfach zunächst das demo-programm ausprobieren, da ich nach einer vernünftigen servo-ansteuerung suche!
als ich das demo-programm dann erfolgreich kompilert habe, und es dann mit nem servo ausprobieren sollte, hab ich es einfach, wie in der lib beschrieben in pin 7 gesteckt (also eig sollte es ja mit 2 Servos angesteuert werden, aber ich hatte gerade nur einen parat.) als ich das programm dann gestartet hab, ist weiter nichts passiert.
als ich dann mal die anderen io-s ausprobiert habe, habe ich dann einen io gefunden, wo sich am servo überhaupt was getan hat. nämlich pc7, also pin 1!
allerdings hat sich der servo auch nicht in irgendeiner art bewegt, sondern hat einfach einen lauten ton, von sich gegeben, und der servo vibrierte einwenig.
weiter ist allerdings nix passiert -.-
Bitte helft mir! würde mich über schnelle antworten freuen!
Lieben Gruß Marcel
-
Erfahrener Benutzer
Roboter-Spezialist
wenn Du den Servo in pin1 steckst hast du PC7 und das ist Servo 1 laut der LIB, also auch
initSERVO(SERVO1); und servo1_position = pos; benutzen.
Nun es gibt viele Töne. Ein kratzendes schnarren hatte ich bei neuen Servos auch mal, nach dem Aufschrauben fand ich dann ein Zahnrad mit abgefrästen Zähnen.
Was sagt denn das Display über die Position ? Hast Du noch andere Servos zum testen ? Hast Du eine eigene Stromversorgung für die Servos ?
MfG TrainMen
-
Erfahrener Benutzer
Fleißiges Mitglied
hey trainmen!
es liegt nicht am servo, denn ich habe es mit anderen Servos auch schon ausprobiert, immer wieder das gleiche geräusch.
es muss wohl an etwas anderes liegen.
also ein display habe ich momentan auch gar nicht angeschlossen.
LG Marcel
-
Erfahrener Benutzer
Roboter-Spezialist
Was passiert denn wenn Du den Servo mal von Hand drehst in Mittelstellung und dann probierst ?
MfG TrainMen
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen