Transformer
19.06.2014, 20:05
Servus
Habe den RP6 mit einem Greifarm erweitert. Zusätzlich habe ich das W-LAN-Modul M256 (Master), das über I2C mit dem Servoboard SD21 verbunden ist.
Den Greifarm hab ich soweit über I2C des Servoboards angesteuert.
#define SD21_Servoboard_I2C_ADR 0xC2
void I2C_SD21(uint8_t servo, uint8_t servo_speed, uint16_t servo_position)
{
uint8_t transmitBuf[4];
transmitBuf[0] = (servo -1)*3; // Register 0-2 = Servo1, 3-5 = Servo2, ...
transmitBuf[1] = servo_speed; // Geschwindigkeit 0...255
transmitBuf[2] = (servo_position & 0xff); // Low Byte Position
transmitBuf[3] = ((servo_position >> 8) & 0xff); // High Byte Position
I2CTWI_transmitBytes(SD21_Servoboard_I2C_ADR,&transmitBuf[0],4);
}
// STOP Servo
void I2C_SD21_STOP(uint8_t servo, uint8_t servo_speed)
{
I2CTWI_transmit2Bytes(SD21_Servoboard_I2C_ADR,1,0) ;
}
Meine frage ist, wie ich einen Servo anhalten (Stoppen) kann. Habe bei der Funktion I2C_SD21_STOP,
den servo 1 anhalten wollen, indem ich die servo_speed auf 0 setze. Klappt aber nicht wie ich es will.
Ich möchte gerne das der Servo während er verfährt, nach einem bestimmten Eingabebefehl stoppt und
auf der Position bleibt, wo er sich gerade befindet.
Wenn Ihr noch Informationen braucht fragt mich.
Gruß
Habe den RP6 mit einem Greifarm erweitert. Zusätzlich habe ich das W-LAN-Modul M256 (Master), das über I2C mit dem Servoboard SD21 verbunden ist.
Den Greifarm hab ich soweit über I2C des Servoboards angesteuert.
#define SD21_Servoboard_I2C_ADR 0xC2
void I2C_SD21(uint8_t servo, uint8_t servo_speed, uint16_t servo_position)
{
uint8_t transmitBuf[4];
transmitBuf[0] = (servo -1)*3; // Register 0-2 = Servo1, 3-5 = Servo2, ...
transmitBuf[1] = servo_speed; // Geschwindigkeit 0...255
transmitBuf[2] = (servo_position & 0xff); // Low Byte Position
transmitBuf[3] = ((servo_position >> 8) & 0xff); // High Byte Position
I2CTWI_transmitBytes(SD21_Servoboard_I2C_ADR,&transmitBuf[0],4);
}
// STOP Servo
void I2C_SD21_STOP(uint8_t servo, uint8_t servo_speed)
{
I2CTWI_transmit2Bytes(SD21_Servoboard_I2C_ADR,1,0) ;
}
Meine frage ist, wie ich einen Servo anhalten (Stoppen) kann. Habe bei der Funktion I2C_SD21_STOP,
den servo 1 anhalten wollen, indem ich die servo_speed auf 0 setze. Klappt aber nicht wie ich es will.
Ich möchte gerne das der Servo während er verfährt, nach einem bestimmten Eingabebefehl stoppt und
auf der Position bleibt, wo er sich gerade befindet.
Wenn Ihr noch Informationen braucht fragt mich.
Gruß