so, jetzt hab ich das programm von dirk oben mal versucht so umzuprogrammieren, dass ich den servo auf der experimentierplatine am xbus an der sda leitung anschließen kann. leider reagiert der servo jetzt nicht mehr auf die signale meiner fernbedienung.
hier mein abgeändertes programm:
Code:
// RP6 steuert ein Servo an der SL1-LED mit Sleep()
#include "RP6RobotBaseLib.h" // Denn vollen Funktionsumfang der Lib bezahlen
#define SERVO_OUT SDA
#define RC_PROMO8
#ifdef RC_PROMO8
#define RC5_KEY_SERVO_RIGHT 46
#define RC5_KEY_SERVO_LEFT 60
#endif
void receiveRC5Data(RC5data_t rc5data)
{
writeString_P("Toggle Bit:");
writeChar(rc5data.toggle_bit + '0');
writeString_P(" | Device Address:");
writeInteger(rc5data.device, DEC);
writeString_P(" | Key Code:");
writeInteger(rc5data.key_code, DEC);
writeChar('\n');
if (rc5data.key_code == RC5_KEY_SERVO_RIGHT)
{cli();
PORTC |= SERVO_OUT; //SDA high
sleep(10);
PORTC &= ~SERVO_OUT;
sleep(200-10);
sei();}
if (rc5data.key_code == RC5_KEY_SERVO_LEFT)
{cli();
PORTC |= SERVO_OUT;
sleep(20);
PORTC &= ~SERVO_OUT;
sleep(200-20);
sei();}
}
void initSERVO(void)
{
DDRC |= SERVO_OUT;
PORTC &= ~SERVO_OUT;
}
int main(void)
{
initRobotBase();
IRCOMM_setRC5DataReadyHandler(receiveRC5Data);
powerON();
initSERVO();
while(true)
{
task_RP6System();
}
return 0;
}
Lesezeichen