-         

Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 37

Thema: servo mit ir-fernbedieung steuern

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.01.2008
    Ort
    Allgäu
    Alter
    30
    Beiträge
    220

    servo mit ir-fernbedieung steuern

    Anzeige

    hallo leute, hab grad mein funktionierendes servoprogramm abgeändert, so dass ich den servo mit der fernbedienung steuern kann. leider funktioniert das programm noch nicht so wie ich will, weil der rp6 glaub nicht auf meine rc5- signale reagiert. hier mein programm:

    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
    
    #define RC_PROMO8
    
    #ifdef RC_PROMO8	
    	#define RC5_KEY_LEFT 				21		
    	#define RC5_KEY_RIGHT 				22		
    	#define RC5_KEY_FORWARDS 			16  	
    	#define RC5_KEY_BACKWARDS 			17	
    	#define RC5_KEY_STOP 				11	
    	#define RC5_KEY_CURVE_LEFT 			29	
    	#define RC5_KEY_CURVE_RIGHT 		13	
    	#define RC5_KEY_CURVE_BACK_LEFT 	10	
    	#define RC5_KEY_CURVE_BACK_RIGHT 	62		
    	#define RC5_KEY_LEFT_MOTOR_FWD 		1
    	#define RC5_KEY_LEFT_MOTOR_BWD 		7
    	#define RC5_KEY_RIGHT_MOTOR_FWD 	3
    	#define RC5_KEY_RIGHT_MOTOR_BWD 	9
    	#define RC5KEY_SERVO_RIGHT			46
    	#define RC5KEY_SERVO_LEFT			60
    #endif
    
      
    int main(void)
    {
       initRobotBase();
       powerON();
       setLEDs(0);   
                  
       while(true)
       {
                      
          while(RC5KEY_SERVO_LEFT)       
          {                          
             setLEDs(1);             
             sleep(10);        
             setLEDs(0);             
             sleep(200-10);}
    		while(RC5KEY_SERVO_RIGHT)
    		{setLEDs(1);
    		sleep(20);
    		setLEDs(0);
    		sleep(200-20);
          }                          
          task_RP6System();
       }
       return(0);
    }
    gruß

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    10.08.2007
    Beiträge
    47
    Code:
    while(RC5KEY_SERVO_LEFT)
    {
        setLEDs(1);
        sleep(10);
        setLEDs(0);
        sleep(200-10);}
    das ist eine endlosschleife ..., weil RC5KEY_SERVO_LEFT eine Konstante >0 ist, welche somit immer als true ausgewertet wird
    was du wahrscheinlich wolltest, ist eine Variable pruefen die gleich dieser Konstanten ist und von einer Empfaengerfunktion bedient wird

    hth
    Kay

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.01.2008
    Ort
    Allgäu
    Alter
    30
    Beiträge
    220
    ja glaub schon, dass du mich jetzt richtig verstanden hast. ich will halt den servo nach links und nach rechts drehen lassen, je nachdem welche taste auf der fernbedienung ich drücke. bei mir war des jetzt einmal taste
    #define RC5KEY_SERVO_RIGHT 46
    und
    #define RC5KEY_SERVO_LEFT 60

    kannst du mir jetzt vielleicht sagen, wie ich mein programm abändern muss, damit des funktioniert?

    gruß

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    09.04.2008
    Beiträge
    376
    Sieht du mal das vorbild programma an um den RP6 mid eine RC5 zapper zu steuern. Dan kannst du gleich sehen oder die zapper die richtige RC5 code sendet. Da gibt eine RC5Handlerevent die jeden mal bearbeitet werd wen eine RC5 code kommt. Einfach in diese handler programmieren was gemacht werden soll.

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.01.2008
    Ort
    Allgäu
    Alter
    30
    Beiträge
    220
    Einfach in diese handler programmieren was gemacht werden soll.
    des kann man nicht so einfach machen....
    kann mir jetzt bitte mal jemand schreiben, wie ich des obere programm verändern kann, damit des mit dem fernbedienen dann geht? der grundkern des programms dürfte ja schon passen, sollt sich also nur um kleinigkeiten handeln...

    gruß

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.01.2008
    Ort
    Schrobenhausen, München
    Alter
    24
    Beiträge
    583
    Hi,

    ich hab schon öfter was gelesen, von einer Funktion, die die RC5-Daten ausliest, guck doch mal anleitung, sry, ich kann grad nich

    dann musst du nur mit

    Code:
    while(1)
    {
    int key=getRC5Data(); //oder wie das auch immer heisst
    switch(key)
    {
    case RC5KEY_SERVO_RIGHT: 
    setLEDs(1); 
          sleep(20); 
          setLEDs(0); 
          sleep(200-20);
    case RC5KEY_SERVO_LEFT:
    setLEDs(1);              
             sleep(10);        
             setLEDs(0);              
             sleep(200-10);
    }
    task_RP6System();
    }
    MfG Pr0gm4n

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.01.2008
    Ort
    Allgäu
    Alter
    30
    Beiträge
    220
    jetzt hab ich s grad mal ausprobiert.... irgendwie klappt des aber damit nicht.
    die funktion muss irgendwie anders heißen.
    irgendjemand aus m forum hat doch bestimmt schon mal sowas mit der fernbedienung gesteuert...

    gruß

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.01.2008
    Ort
    Schrobenhausen, München
    Alter
    24
    Beiträge
    583
    Hi proevofreak,

    kannst du bitte wenigstens alles lesen?


    int key=getRC5Data(); //oder wie das auch immer heisst

    das heißt, dass ich nicht weis, wie die Funktion heißt...

    und nachgucken kannst du im Selftest-Programm und in der Anleitung, hab ich

    von einer Funktion, die die RC5-Daten ausliest, guck doch mal anleitung

    da geschrieben, also lasse bitte solche unsinnigen posts...



    MfG Pr0gm4n

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.01.2008
    Ort
    Allgäu
    Alter
    30
    Beiträge
    220
    so, jetzt hab ich weiterprogrammiert. mittlerweile kommen meine ir- signale beim robby an. aber der servo lässt sich noch nicht so steuern wie ich es will. meine ir-signale haben nämlich noch keinen einfluss auf auf den servo.
    hier mein programm:

    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');}
    
    void servoTaskRight()
    { if (RC5_KEY_SERVO_RIGHT)
    		{setLEDs(1);             
            sleep(10);        
             setLEDs(0);             
             sleep(200-10);}
    		 }
    		 
    void servoTaskLeft()
    { if (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(); 
    servoTaskRight();
    servoTaskLeft();
       }
       return 0;
    }
    wer kann mir sagen woran es liegt?
    gruß

    [Edit von radbruch]Bitte verwende code-Tags

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    10.08.2007
    Beiträge
    47
    deine beiden servoTasks enthalten immer noch nur Abfragen auf eine Konstante ...
    if(RC5_KEY_SERVO_LEFT)
    {
    ...
    }
    das wird immer ausgefuehrt, weil s.o.!

    du wolltest wohl sowas aehnliches:
    if(rc5data.key_code == RC5_KEY_SERVO_LEFT)
    {
    ...
    }

    hth
    KaY

Seite 1 von 4 123 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •