-         

Ergebnis 1 bis 5 von 5

Thema: Servo Fragen

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.05.2009
    Ort
    Berlin
    Beiträge
    450

    Servo Fragen

    Anzeige

    Hi,

    ich habe hier den CodeSchnipsel irgendwo her, ich habe den so verändert das sich jetzt mein Servo um 180 Grad dreht. Die Pausen zwischen den Drehungen sind klar, der Winkel auch. Nur die Geschwindigkeit, z.B. von links 90 Grad zu rechts 90 Grad kriege ich nicht hin. Das Servo ist mir zu schnell. Was muß ich also genau tun ?

    Trainmen
    Code:
    #include "RP6RobotBaseLib.h" 
    
    int main(void) 
    { 
       initRobotBase();   
       DDRA |= 1;         
    
       while(true) 
       { 
        for(i=0;i<100; i++) 
             { 
              PORTA |= 1; 
    		  sleep(25);           
    		  PORTA &= ~1; 
    		  sleep(190); 
    		 }
    
          for(i=0;i<100; i++) 
            { 
             PORTA |= 1; 
    	     sleep(5);          
    	     PORTA &= ~1; 
             sleep(180);
            } 
       } 
       return(0); 
    }

  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
    Nicht getestet:
    Code:
    #include "RP6RobotBaseLib.h"
    
    uint8_t i,j;
    
    int main(void)
    {
       initRobotBase();
       DDRA |= 1;
    
       while(true)
       {
       	for(i=5;i<25; i++) // Schritte von 5 bis 25
       	{
             for(j=0;j<10; j++) // Position 10 mal senden
    			{
    				PORTA |= 1; // Servo-PWM ein
            		sleep(i); // auf Winkel warten
            		PORTA &= ~1; // Servo-PWM aus
            		sleep(200-i); // auf 20ms warten
            	}
           }
    
          for(i=25;i>5; i--) // und zurück von 25 nach 5
          {
             for(j=0;j<10; j++)
    			{
          		PORTA |= 1;
            		sleep(i);
            		PORTA &= ~1;
             	sleep(200-i);
    			}
          }
       }
       return(0); // wird nie erreicht
    }
    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
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.05.2009
    Ort
    Berlin
    Beiträge
    450
    Guten Morgen Mic,
    ja nicht ganz das Ziel erreicht, weil er ja jetzt schritte macht, ich möchte aber das er fließend rumläuft.
    Trainmen

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Guten Morgen :)

    Für eine fließendere/schnellere Bewegung kannst du entweder die Anzahl der Wiederholungen verringern:

    for(j=0;j<10; j++)

    Oder die Schrittweite vergrößern:

    for(i=5;i<25; i+=1)

    Gruß

    mic

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

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.05.2009
    Ort
    Berlin
    Beiträge
    450
    Hi
    hmm wollt ich gerade dir mitteilen das ich die werte verändert hab und nun zufrieden bin.............
    da lese ich die Lösung auch schon von dir
    Dankeschön
    Trainmen

Berechtigungen

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