Hallo
Wie SlyD schon schreibt, diese Funktionen sind im orginalen Base-Slaveprogamm nicht vorhanden:
#define CMD_SET_MOTOR_PWR 13
#define CMD_SET_MOTOR_DIR 14
Wichtig ist, dass beide Funktionen die Motorparameter libkonform ändern sonst klappt es nicht mit dem task_motionControl() in der Slave-Hauptschleife. Hier eine von mir geschriebene Funktion um die Motoren direkt anzusteuern im direkten Vergleich zum setMotorPower() aus der RP6RobotBaseLib:
Code:
// Achtung! Die PWM-Werte werden hier OHNE Rampe verändert!
void setMotorPWM(uint8_t power_links, uint8_t power_rechts)
{
extern uint8_t mleft_ptmp, mright_ptmp;
if(power_links > 210) power_links = 210;
if(power_rechts > 210) power_rechts = 210;
mleft_power=mleft_ptmp=power_links;
mright_power=mright_ptmp=power_rechts;
OCR1BL = power_links;
OCR1AL = power_rechts;
if(power_links || power_rechts)
TCCR1A = (1 << WGM11) | (1 << COM1A1) | (1 << COM1B1);
else
TCCR1A = 0;
}
void setMotorPower(uint8_t left_power, uint8_t right_power)
{
if(left_power > 210) left_power = 210;
if(right_power > 210) right_power = 210;
mright_power = right_power;
mleft_power = left_power;
}
Vielleicht hilfts?
Gruß
mic
[Edit]
Ach, das steht ja auch in der Beschreibung von setMotorPower():
* -------------------------------------------------------------
* IT IS A BETTER IDEA NOT TO USE THIS FUNCTION AT ALL!
* Use moveAtSpeed together with task_motionControl instead.
* YOU CAN NOT USE setMotorPower AND setMotorDir WHEN YOU USE
* task_motionControl! This will not work!
* -------------------------------------------------------------
http://translate.google.de/translate...+will+not+work!
Lesezeichen