-
        

Ergebnis 1 bis 3 von 3

Thema: Servo 3 positionen anfahren lassen

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    24.01.2009
    Beiträge
    76

    Servo 3 positionen anfahren lassen

    Anzeige

    Hallo,
    ich habe hier in RN folgenen code gefunden:
    Code:
    #include "RP6RobotBaseLib.h" 
    uint16_t servopos = 20; 
    
    void servotrim(void) 
    { 
       setLEDs(1); 
       sleep(servopos); 
       setLEDs(0); 
       sleep(200-servopos); 
    } 
    
    void servoposi(void) 
    { 
       if(servopos==10) 
       { 
          while(servopos != 20) 
          { 
             servopos++; 
             servotrim(); 
             mSleep(50); 
          } 
       } 
       else if(servopos==20) 
       { 
          while(servopos != 10) 
          { 
             servopos--; 
             servotrim(); 
             mSleep(50); 
          } 
       } 
    } 
    
    int main (void) 
    { 
       initRobotBase(); 
       while (true) 
       { 
          task_RP6System(); 
          servoposi(); 
       } 
       return 0; 
    }
    so jetzt wollte ich das der servo 3 positionen anfährt
    das hab ich auch probiert selber hinzukrigen aber bei mir
    hat der nur einmal alle 3 posi angefahren und dann wieder nur
    2 posi könnt ihr mir fehlen? der servo soll posi 10 dan 15 und dann 20 anfahren.
    LG
    Christian

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Hallo

    Da hast du eine meiner Jugendsünden ausgegraben. Das waren meine ersten Versuche mit Servos :)

    Vielleicht funktioniert es so, ich habe es nicht getestet:
    Code:
    #include "RP6RobotBaseLib.h"
    uint16_t servopos = 20;
    
    void servotrim(void)
    {
       setLEDs(1);
       sleep(servopos);
       setLEDs(0);
       sleep(200-servopos);
    }
    
    void servoposi(uint8_t servosoll)
    {
    	uint8_t i;
    
    	while(servopos != servosoll)
    	{
    		if(servopos<servosoll) servopos++; else servopos--;
          servotrim();
          // mSleep(50);
          // was das mSleep() hier soll weiß ich auch nicht mehr genau
          // richtiger wäre servotrim() mehrfach aufzurufen um dem
    		// Servo genug Zeit zu geben die neue Position anzufahren:
          for(i=0; i<5; i++) servotrim();
    	}
    }
    
    int main (void)
    {
       initRobotBase();
       while (true)
       {
          //task_RP6System();
          servoposi(10);
          servoposi(15);
          servoposi(20);
       }
       return 0;
    }
    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    24.01.2009
    Beiträge
    76
    werde es testen DANKE!
    zu:
    Da hast du eine meiner Jugendsünden ausgegraben
    lol naja ich find das is die einfaste servo steuerung die ich bisjetzt gesehen hab
    LG

Berechtigungen

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