also... jetzt programmier ich schon seit über ner woche an ner vernünftigen servoansteuerung mit ir- fernbedienung rum. leider bisher mit mäßigem erfolg, weil mein servo zu ruckartig dreht.
ich hab es mit verschiedenen programmiervarianten versucht....

bei der folgenden dreht der servo zwar flüssig, ist aber jedoch nur über zeitgesteuert:

Code:
// RP6 steuert ein Servo an der SL1-LED mit Sleep()                 

#include "RP6RobotBaseLib.h"      // Denn vollen Funktionsumfang der Lib bezahlen
                                 // wir mit den störenden Interrupts

uint8_t stellzeit, servopos=10;    
int main(void)
{
   initRobotBase();
   setLEDs(0);   
startStopwatch1();                
   while(true)
   {
                  
      while(getStopwatch1()<2000)       
      {                          
         setLEDs(1);             
         sleep(10);        
         setLEDs(0);             
         sleep(200-10);}
		while(getStopwatch1()>2000)
		{setLEDs(1);
		sleep(20);
		setLEDs(0);
		sleep(200-20);
      }                          
      
   }
   return(0);
}
im folgende programm dreht lässt sich der servo über ir steuern, aber dreht aber viel zu ruckartig:

Code:
// RP6 steuert ein Servo an der SL1-LED mit Sleep()

#include "RP6RobotBaseLib.h" // Denn vollen Funktionsumfang der Lib bezahlen

#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)
   {setLEDs(1);
    sleep(10);
    setLEDs(0);
    sleep(200-10);}
 
if (rc5data.key_code == RC5_KEY_SERVO_LEFT)
   {setLEDs(1);
    sleep(20);
    setLEDs(0);
    sleep(200-20);}
}

int main(void)
{
initRobotBase();
IRCOMM_setRC5DataReadyHandler(receiveRC5Data);
powerON();
setLEDs(0);

while(true)
{
task_RP6System();
}
return 0;
}
meiner meinung nach liegt das daran, dass die servo funktion nicht in einer while- schleife ausgeführt wird. d.h. man müsste, was mir bisher noch nicht gelungen ist, das zweite programm so abändern, dass die servofunktion auch hier in einer while schleife ausgeführt wird.
kann mir vielleicht jemand da weiterhelfen?

gruß