@TrainMen:
...da passiert nichts. ..., und nun ?
Wenn du LEFT_TOUCH in der RP6ControlServoLib.h geändert hast, kompilierst du ja alles neu. Nach meiner Erfahrung wird dabei manchmal die Lib nicht neu kompiliert. Ich lösche dann immer im Projekt den Unterordner .dep und alle Dateien mit .elf, .lss, .lst, .map, .o, .sym vor dem nächsten Kompilieren der Demo. Zur Sicherheit lösche ich auch .lst und .o im RP6Lib\RP6control Verzeichnis.
Wenn es das bei dir nicht ist, dann hier noch 2 geänderte Demos. Bei Version 1 fährt das Servo umgekehrt, d.h. langsam an den linken Anschlag. Dadurch kann man es besser einstellen. In Version 2 werden die beiden Endpositionen und die Mittelstellung nacheinander angefahren. Das hilft auch etwas bei der Einstellung:
Code:
VERSION 1:
==========
/*****************************************************************************/
// Variables:
uint16_t pos = RIGHT_TOUCH;
// ............
// ---------------------------------------------------------------------
// The demo code for positioning Servos 1 and 2:
if (getStopwatch2() > 48) { // Change position every ~50ms
servo1_position = pos; // Position of servo 1
servo2_position = pos; // Position of servo 2
setCursorPosLCD(0, 0);
writeStringLCD_P("Servopos.: ");
writeIntegerLCD(pos, DEC);
writeStringLCD_P(" ");
pos--; // Next position to the left
if (pos > RIGHT_TOUCH) {pos = RIGHT_TOUCH;} // pos: RIGHT_TOUCH..0
setStopwatch2(0);
}
// ---------------------------------------------------------------------
VERSION 2:
==========
// ---------------------------------------------------------------------
// The demo code for positioning Servos 1 and 2:
if (getStopwatch2() > 5000) { // Change position every ~5s
if (pos == 0) {
servo1_position = 0; // Position of servo 1
servo2_position = 0;} // Position of servo 2
if (pos == 1) {
servo1_position = MIDDLE_POSITION;
servo2_position = MIDDLE_POSITION;}
if (pos == 2) {
servo1_position = RIGHT_TOUCH;
servo2_position = RIGHT_TOUCH;}
if (pos == 3) {
servo1_position = MIDDLE_POSITION;
servo2_position = MIDDLE_POSITION;}
setCursorPosLCD(0, 0);
writeStringLCD_P("Servopos.: ");
writeIntegerLCD(servo1_position, DEC);
writeStringLCD_P(" ");
pos++;
if (pos > 3) {pos = 0;}
setStopwatch2(0);
}
// ---------------------------------------------------------------------
ich kann sie dann nicht mehr aktivieren. initSERVO habe ich dann erneut versucht aber da passiert dann nichts.
Die Servos starten wieder mit startSERVO().
Gruß Dirk
Lesezeichen