Mex78
08.12.2007, 10:45
Hallo!
Vorweg ich bin *Newbe* was das programmieren von Robotern angeht.
Ich bin gerade dabei das Servo Driver Modul SD21 an meinem RP6 zu testen. Zuerst möchte ich den Servo nur mal in eine gewünschte Position Rechts und Links drehen. Sollte normalerweise über I2C kein Problem sein. Bis jetzt dreht der Servo irgendwo hin und bleibt da auch.
In der Anleitung hab ich gelesen ich muß mit einem Register arbeiten. Das so aus sieht:
Register 0, Servo 1, Speed
Register 1, Servo 1, Low byte
Register 2, Servo 1, High byte
Register 3, Servo 2, Speed
usw... bis Servo 21 und noch zus. Funktionen.
Hier stellt sich mir schon mal die erste Frage. Was sind Low byte und High byte? Wie verwende ich die?
Das diese für die Servo Position zuständig sind ist mir klar, aber was bedeuten die 2 Werte?
Hier noch mein derzeitiger Code:
#include "RP6RobotBaseLib.h"
#include "RP6I2CmasterTWI.h"
uint8_t servo1a;
uint8_t servo1b;
uint8_t servo1c;
char buffer1[1];
#define servoboard 0xC2
void servo(void)
{
I2CTWI_initMaster(100);
powerON();
while(true)
{
receiveBytes(5);
waitUntilReceptionComplete();
copyReceivedBytesToBuffer(&buffer1[0]);
I2CTWI_transmit2Bytes(servoboard, 7, buffer[0]);
}
}
int main(void)
{
initRobotBase();
servo();
return 0;
}
Für Hilfe an nen *Newbe*, der sein Wissen wieder um ein kleines Stückchen erweitern kann, währe ich Dankbar.
Es grüßt
MeX
Vorweg ich bin *Newbe* was das programmieren von Robotern angeht.
Ich bin gerade dabei das Servo Driver Modul SD21 an meinem RP6 zu testen. Zuerst möchte ich den Servo nur mal in eine gewünschte Position Rechts und Links drehen. Sollte normalerweise über I2C kein Problem sein. Bis jetzt dreht der Servo irgendwo hin und bleibt da auch.
In der Anleitung hab ich gelesen ich muß mit einem Register arbeiten. Das so aus sieht:
Register 0, Servo 1, Speed
Register 1, Servo 1, Low byte
Register 2, Servo 1, High byte
Register 3, Servo 2, Speed
usw... bis Servo 21 und noch zus. Funktionen.
Hier stellt sich mir schon mal die erste Frage. Was sind Low byte und High byte? Wie verwende ich die?
Das diese für die Servo Position zuständig sind ist mir klar, aber was bedeuten die 2 Werte?
Hier noch mein derzeitiger Code:
#include "RP6RobotBaseLib.h"
#include "RP6I2CmasterTWI.h"
uint8_t servo1a;
uint8_t servo1b;
uint8_t servo1c;
char buffer1[1];
#define servoboard 0xC2
void servo(void)
{
I2CTWI_initMaster(100);
powerON();
while(true)
{
receiveBytes(5);
waitUntilReceptionComplete();
copyReceivedBytesToBuffer(&buffer1[0]);
I2CTWI_transmit2Bytes(servoboard, 7, buffer[0]);
}
}
int main(void)
{
initRobotBase();
servo();
return 0;
}
Für Hilfe an nen *Newbe*, der sein Wissen wieder um ein kleines Stückchen erweitern kann, währe ich Dankbar.
Es grüßt
MeX