-
        

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

Thema: Asuro steuert 2 servos unabhängig. wie????

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    10.02.2010
    Beiträge
    70

    Asuro steuert 2 servos unabhängig. wie????

    Anzeige

    Also habe mal ne Frag wie man einen Servo steuert weiß ich, aber wie man 2 Servos unabhängig von einander steuert versteh ich nicht.
    Habe mal ein Programm geschrieben, bei dem, wenn ich einen bestimmten Taster drücke der Servo 1 angesteuert wird und wenn ich einen anderen bestimmten Taster drücke soll der Servo 2 in eine andere Richtung drehen.
    Code:
    #include "asuro.h"
    int main (void)
    {
    	Init();
    	StatusLED(GREEN);
    	while(1) {
    	
    	if (PollSwitch()==1) {
        BackLED (OFF,ON);
    	Sleep(18); 					// Impuls Wert ca. 18-54, Mitte ca.36
    	BackLED (OFF,OFF);
    	Sleep(255); 				// Pause Sleep(20*36-winkel)
    	Sleep(255);
    	Sleep(210-18);}
    	
    	else if (PollSwitch()==16) {
    	BackLED (ON,OFF);
    	Sleep(54);
    	BackLED (OFF,OFF);
    	Sleep(255);
    	Sleep(255);
    	Sleep(210-18);}
    	else {BackLED(OFF,OFF);}
    	}   
       return 0;
    }
    
    
    nur das will nicht so wie ich will. Es drehen sich immer beide Sevos.
    Kann mir irgendjemand sagen wo mein Fehler ist???
    Danke im vorraus.
    Gruß Lars

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.167
    Keine garantie... und auch nicht fertig. Weil ich wenig zeit habe. Ist aber der (ein) richtige weg zur Rome.

    Hier mache ich nur einer loop wo beiden servo's unabhangig an oder aus gepulst werden. Jeder wiederholung geht tickzahler auf 0 und startet es neue servo pulsen.

    Code:
    ...
    
    unsigned int minimum_puls=18;
    unsigned int winkel1, winkel2;   /* 0-36 */
    unsigned int pulselange1, pulslange2;
    unsigend int wiederholung_zahl=720; /* anzahl ticks servo puls wiederholung, abhangig von Sleep-taktfrequenz */
    
    unsigned char servo1=0, servo2=0; /* puls status: hoch oder niedrig */ 
    
    unsigned int tickzahler=0; /* inkrementiert jede Sleep tick */ 
    
    /* Init(); und so ... */
    
    pulselange1=winkel1+minimum_puls;
    pulselange2=winkel2+minimum_puls;
    
    Backleds(OFF,OFF);
    
    while (1) {
    
      /* irgendwie ein neue wert fur winkel1 und winkel2 bekommen, dammit es kein schlau wird, muss aber nicht */
    /*    winkel1=etwas_neues; */
    /*    winkel2=etwas_neues; */
    
      /* pulslangen auch erneuen */
       pulselange1=winkel1+minimum_puls;
       pulselange2=winkel2+minimum_puls;
    
       if (tickzahler<=pulslange1) {servo1=1;} else {servo1=0;}
      
       if (tickzahler<=pulslange2) {servo2=1;} else {servo2=0;}
     
       if (tickzahler>=  wiederholung_zahl)
         {tickzahler=0;} 
       else { tickzahler++;   }
       
      Sleep(1); /* minimale resolution der pulslange */
    
       BackLED(servo1,servo2); 
    
    } /* ende der servo puls
    
    
    ...

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    10.02.2010
    Beiträge
    70
    habe den code so übernommen und halt durch int main void return und init erweitert, dass problem die Servos drehen einfach immer weiter aber in gegesätzliche richtungen. wie kann ich das ändern???

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.167
    Ich habe die winkel variabelen nicht mit werten initialisiert.

    Code:
    unsigned int winkel1=4, winkel2=25;   /* eigene winkeln aufgeben, zwisschen 0-36 */

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.167
    Vielleicht sind die minimum_puls und wiederholung_zahl nicht korrekt. Versuch es mal mit wiederholung_zahl=1440, und minimum_puls ein bisschen mehr oder weniger.

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    10.02.2010
    Beiträge
    70
    hallo, das problem ist weiterhin das sie immer weiter drehen halt in gegenzätzliche richtung. Ich versteh eins so wie so nicht wo ist der Taster im programm, auf dem sein komando sich ein servo drehen soll??? (pollswitch1=servo1 pollswitch6=servo2)?????

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.167
    Den taster abfrage hab ich nicht in meinem code-vorschlag implementiert. Das lasse ich an ihn uber. In mein code-vorschlag könnte man den winkeln neu einstellen mit ein selbgeschrieben funktion (etwas neues) auf diesen stelle:

    Code:
      /* irgendwie ein neue wert fur winkel1 und winkel2 bekommen, dammit es kein schlau wird, muss aber nicht */ 
    /*    winkel1=etwas_neues; */ 
    /*    winkel2=etwas_neues; */
    Aber Pollswitch hat auch ein Sleep anrufen im code ( Sleep(10) ), deshalb kan es den Pulsgeneration stören und falsche bewegungen machen. Ich empfehle eine andere art von winkel einstellung zu betrachten. Ich habe bis jetzt keine idee wie du das machen soll.

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    10.02.2010
    Beiträge
    70
    also mein problem ist halt ich hab den asuro erst seit ein paar wochen und bin im programieren nicht wirklich gut. ich brauche halt nur ein programm bei dem ich mit einem bestimmten taster(pollswitch) einen bestimmten servo ansteuere, wie mach ich das?????

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.01.2009
    Ort
    NRW
    Beiträge
    561
    Hallo

    Als kleiner Tip:

    Die BackLEDs eignen sich doch nicht so gut wie gedacht zur Ansteuerung von Servis. Wenn eine BackLED blinkt bekommt die andere auch einen geringen Stromimpuls die den anderen Servo beeinflusst. Außerdem sind die BackLEDS auch nicht störungsfrei wenn die Motoren laufen.

    Gruß Thund3r
    Dein Gott sei mein Zeuge!

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.02.2010
    Ort
    irgendwo in BW
    Beiträge
    154
    ich würds über die status-led ansteuern!!!!!

    gruß josua
    asuro!!!!!!!!!!!!!!!!!!! \/

Seite 1 von 4 123 ... LetzteLetzte

Berechtigungen

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