-         

Ergebnis 1 bis 2 von 2

Thema: Asuro steuert Servo an, Problem!

  1. #1

    Asuro steuert Servo an, Problem!

    Anzeige



    Hallo,

    ich weiß dass es zu diesem thema unzählige beiträge schon unzählige beiträge gibt, allerdings habe ich ein folgendes Problem:

    Die Servo mit Hilfe der FrontLED() funktion anzusteuern klappt, wenn auch im mom noch sehr primitiv, seht ihr ja im quellcode, aber das ist nicht das problem.

    am bestern schaut ihr euch das video an, wenn die servo was "greifen" soll, bewegt sie sich so lande auf den gegenstand zu, bis sie diesen berührt und im nächsten moment fährt sie auch schon wieder zurück. wenn ich den "greifer" nur so, also ohne ein gegenstand bewege, funktioniert alles wunderbar,

    wisst ihr woran das liegen könnte?

    Code:
    #include <asuro.h>
    int main (void)
    {
       Init();
       StatusLED(YELLOW);
       int x;
       int i;
       int p;
    	FrontLED(ON);
    	   Sleep(80);
        FrontLED(OFF);
          Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
    		FrontLED(ON);
    	   Sleep(80);
        FrontLED(OFF);
          Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
    	  	FrontLED(ON);
    	   Sleep(80);
        FrontLED(OFF);
          Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
    	  	FrontLED(ON);
    	   Sleep(80);
        FrontLED(OFF);
          Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
    	      FrontLED(ON);
         Sleep(80);
    	FrontLED(OFF);
    	 Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
    	  StatusLED(RED);
    	//anders rum
    		 Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
    		 	 Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
    			 	 Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
    				 	 Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
    					 	 Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
    		FrontLED(ON);
    	   Sleep(175);
        FrontLED(OFF);
          Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
    		FrontLED(ON);
    	   Sleep(175);
        FrontLED(OFF);
          Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
    	  	FrontLED(ON);
    	   Sleep(175);
        FrontLED(OFF);
          Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
    	  	FrontLED(ON);
    	   Sleep(175);
        FrontLED(OFF);
          Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
    	      FrontLED(ON);
    		  Sleep(175);
    		  FrontLED(OFF);
          Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
    	  StatusLED(RED);
    	  
    	
    }


    vielen DANK für eure tips!

    max

  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

    Du sendest pro Richtung jeweils nur 5 Impulse und in der Pause wird gar kein Impuls gesendet. Deshalb "federt" dein Greifer in der Pause mit Schaumstoff zurück. Versuche es mal so:

    Code:
    #include "asuro.h"
    
    // Alle Sleep()s auf Basis der orginalen CD-Library mit 72kHz-Timer
    // Sleep(72) dauert dann ca. 1ms
    
    int main (void)
    {
    	//int x;
    	//int i;
    	int p;
    
    	Init();
    
    	while(1) // Programm endlos ausführen
    	{
    		// 1 Sekunde Greifer schliesen
    		StatusLED(YELLOW);
    		for(p=0; p<50; p++) // 50*22ms ergibt ca. eine Sekunde Richtung "Greifer schließen"
    		{
    			FrontLED(ON);
    			Sleep(80);
    			FrontLED(OFF);
    			Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255); // 21ms Impulspause
    		}
    
    		// 2 Sekunden halten
    		StatusLED(RED);
    		for(p=0; p<100; p++)
    		{
    			FrontLED(ON);
    			Sleep(80);
    			FrontLED(OFF);
    			Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
    		}
    
    		// 1 Sekunde Greifer öffen
    		StatusLED(GREEN);
    		for(p=0; p<50; p++) // 50*23ms ergibt ca. eine Sekunde Richtung "Greifer öffnen"
    		{
    			FrontLED(ON);
    			Sleep(175); // 2,5ms?
    			FrontLED(OFF);
    			Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
    		}
    
    		while(PollSwitch() == 0) // Blinken bis Taste gedrückt wird, dann Programm wiederholen
    		{
    			StatusLED(RED);
    			for(p=0; p<200; p++) Sleep(72);
    			StatusLED(OFF);
    			for(p=0; p<300; p++) Sleep(72);
    		}
    	}
    	return(0); // wird nie erreicht!
    }
    ungetestet, die Tabs rauben mir den letzten Nerv *evil*

    Gruß

    mic

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

Ähnliche Themen

  1. Asuro steuert Servo aber wie???
    Von lars_94 im Forum Asuro
    Antworten: 18
    Letzter Beitrag: 11.05.2010, 18:15
  2. Drehpotentiometer steuert Servo
    Von Arne1978 im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 26.12.2009, 18:45
  3. Minimallösung: asuro steuert RC-Servo
    Von radbruch im Forum Asuro
    Antworten: 20
    Letzter Beitrag: 16.05.2007, 18:57
  4. Wie steuert man ein Servo an?
    Von grind im Forum C - Programmierung (GCC u.a.)
    Antworten: 12
    Letzter Beitrag: 19.07.2005, 12:21
  5. Wie Steuert man ein Servo an?
    Von Matthias im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 30.12.2003, 11:30

Stichworte

Berechtigungen

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