@Xandi11
Danke erst mal !!! Das Programm geht ziemlich gut.
Aber wie kann ich den Servoausschlag verändern ?
Ich habe ja auch nix für die M32 umgeändert ...
ich hab noch gar kein Programm gehabt wenn man es genau nimmt ...
außerdem gehts da nur ums verstehen ...
hat man es einmal verstanden ist es kein Problem mehr
... danke für den ZuspruchLass es. ... kann es nur schlimmer werden.
@Xandi11
Danke erst mal !!! Das Programm geht ziemlich gut.
Aber wie kann ich den Servoausschlag verändern ?
indem du die variable imp änderst
15 entspricht ca. der Mittelstellung
<15 geht das Servo nach links
>15 geht das Servo nach rechts
Habe jetzt ein kleines Programm geschrieben.
habe nur das problem, dassder servo nach dem stellen auf den mittelpunkt nur noch "herumzuckt" !!
Was mache ich falsch ??
Code:#include"RP6RobotBaseLib.h" void servo_scl (uint8_t imp) { DDRC |= SCL; PORTC |= SCL; sleep(imp); PORTC &= ~SCL; sleep(200-imp); } void servo(void) { uint8_t i=0, x; i=0; x=10; while(i<10) //200ms { servo_scl(x); i=i+1; } x=x+1; if (x>=20) { x=10; } i=0; } void servol(void) { uint8_t i=0, x; i=10; x=0; while(i>15) //200ms { servo_scl(x); i=i+1; } x=x+1; if (x<=20) { x=10; } i=0; } int main(void) { initRobotBase(); uint8_t i=0, x; i=0; x=10; powerON(); while(true) { servo(); move(70, BWD, DIST_MM(150), BLOCKING); servol(); servo(); move(70, FWD, DIST_MM(150), BLOCKING); servol(); } while(true) { writeString_P("\n Endlosschleife"); } return 0; }
Sorry, dass ich solange nicht zurückgeschrieben habe ...
Auf die Schnelle ist mir nur aufgefallen, dass du im servo1 vermutlich x und i vertauscht hat.
Denn du gibtst dem Servoprogramm die Position 0 über.
Falls das nicht der Fall ist, schreib nochmal ...
Edit:
Außerdem solltest du zwischen servo1() und servo() eine Pause einbauen.
Damit kannst du sichergehen, dass das Servo den Bewegungen folgen kann und vorallem du auch etwas siehst.
hi, schön das du wieder schreibst.
Bin aber nicht wewiter gekommen habe den code zwar etwas abgeändert aber immer noch der gleiche effekt.
Könntest du ihn vielleicht mal auf deinem RP6 ausprobieren ?
Code:#include"RP6RobotBaseLib.h" void servo_scl (uint8_t imp) { DDRC |= SCL; PORTC |= SCL; sleep(imp); PORTC &= ~SCL; sleep(200-imp); } void servo1(void) { uint8_t i=0, x; i=0; x=10; while(i<10) //200ms { servo_scl(x); i=i+1; } x=x+1; move(70, BWD, DIST_MM(150), BLOCKING); if (x<=15) { x=15; } i=0; } void servo2(void) { uint8_t i=0, x; i=0; x=10; while(i<10) //200ms { servo_scl(x); i=i+1; } x=x+1; move(70, FWD, DIST_MM(150), BLOCKING); if (x<=15) { x=15; } i=0; } int main(void) { initRobotBase(); powerON(); while(true) { servo1(); servo2(); } while(true) { writeString_P("\n Endlosschleife"); } return 0; }
So vielleicht?
Code:// Servoansteuerung2: Wir erzeugen zwei Impulse im Wechsel mit Fahren 22.1.2010 mic // sleep(1) verzögert ca. 0,1ms, 50 Impulse dauern ca. 1 Sekunde // Servo an SCL (PC0) (XBUS Pin 10) #include "RP6RobotBaseLib.h" uint8_t c; // allgemeine 8-Bit-Variable (ein Char) int main(void) { initRobotBase(); powerON(); DDRC |= SCL; PORTC &= ~SCL; while(1) { for(c=0; c<50; c++) // 50 Impulse senden, das dauert ca. 1 Sekunde { PORTC |= SCL; // Impulsstart sleep(12); // 1,2ms warten = Servoposition 1 PORTC &= ~SCL; // Impulsende sleep(190); // 19ms warten } move(70, BWD, DIST_MM(150), BLOCKING); for(c=0; c<50; c++) { PORTC |= SCL; sleep(18); // 1,8ms warten = Servoposition 2 PORTC &= ~SCL; sleep(190); } move(70, FWD, DIST_MM(150), BLOCKING); } return(0); // wird nie erreicht }
Ich habe den Fehler jetzt gefunden !!! \/
Der Servo war schuld, habe meinen großen jetzt durch einen miniservo ersetzt und läuft perfekt. Hatte den Modelcraft RS-2 von Conrad, wahrscheinlich nahm er einfach zu viel Strom auf.
Gruß fabi
Dann bräuchtest du ne externe Stromversorgung ...
an +5V (rot) kommt der Plus des Akkus
an GND (schwarz) kommt der Minus des Akkus und des RP6s
und der Gelbe/Orange kommt auf den Pin am Roboter
entweder mit Spannungsregler IC 7805 oder mit ein paar dioden in reihe
da die betriebspannung mit 4-6volt angegeben ist, ist es nich das wahre ihn an die akkus mit 6-8volt zu klemmen
Mit hochohmigen Grüßen
Virus
Es lebe der Digitalkäse !
Lesezeichen