- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 35

Thema: Neustes Asuro Greifarm Projekt (5 Servos) Es funktioniert!

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.01.2009
    Ort
    NRW
    Beiträge
    562
    Dein Gott sei mein Zeuge!

  2. #2
    Hallo Leute!

    Zuerst einmal großes Lob an euch! Es ist sehr interessant und lehrreich was hier so gepostet wird.

    Ich bin nun auch mal in die "Servofalle" getappt. Hab mir vor kurzem einen Asuro-Bausatz bestellt und bisher nur mal ein wenig rumgetüftelt.

    Nun möchte ich gerne, so wie ihr es hier auch getan habt, einen kleinen Servo ansteuern können.....genauer gesagt als Stiftheber arbeiten lassen.

    Der Stift soll quasi waagerecht über dem Asuro am Servo befestigt sein und der Servo soll beim Ausführen des Programms eine Drehung von 90° ausführen, so dass der Stift senkrecht in der rundlichen Mulde zwischen den Kollisions-Tastern steht und den Asuro ein wenig anhebt. Danach soll er z.B. einen Kreis fahren (malen).

    Nach dem Kreis soll der Stift wieder zurück (90°) zum Ausgangspunkt fahren.

    Meine Frage nun : Für diese Servoaktion reicht doch das PWM-Signal EINER LED?! Kann ich dann ohne weiteres auf den von euch hier eingestellten Quellcode zurückgreifen und damit experimentieren? Da ich auf diesem Gebiet ein absoluer Neuling bin hab ich nur ein klein wenig Angst, mir irgendwas zu zerstören.

    Achso......ja.....der Servo ist ein ZEBRA ZS-F100.

    Würde mich sehr freuen, wenn mir da jemand helfen könnte!

    Vielen Dank im Voraus!

    Gruß

    sneiser

  3. #3
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Das Servo sollte schon ausreichen. Wenn du nur eine Led benötigst würde ich dafür die rote Statusled verwenden. Das würde keine andere Funktion behindern. Einzige Einschränkung wäre der vorsichtige Umgang mit StatusLED(), weil diese Funktion ein Servosignal an der roten StatusLED verändern würde. Die Ansteuerung wäre dafür sehr einfach:

    Code:
    #include "asuro.h"
    
    char statusledgreen;
    int i, p;
    
    int main(void)
    {
    	Init();
    	for(i=0; i<1000; i++) Sleep(72);	// Pause eine Sekunde bei 72kHz-Library
    	
    // In asuro.h werden die Farben der StatusLED so definiert:
    
    // #define GREEN	1
    // #define RED		2
    // #define YELLOW  3
    
    // Zusätzlich wird noch dies definiert:
    
    // #define  OFF    0
    // #define  ON     1
    
    
    // Da wir zum Setzen der grünen LED die Funktion StatusLED() nicht verwenden dürfen
    // merken wir uns ihren Status in der Variablen statusledgreen und schalten sie aus
    	statusledgreen = OFF;
    	
    	while (1)
    	{
    	   for(i=0; i<50; i++)	// Impuls 50 mal senden (1 Sekunde!)
    		{
    			StatusLED(RED+statusledgreen);	// Implus high ausgeben
    			Sleep(54);	// -45° 0,75ms
    			StatusLED(statusledgreen);	// Implus low ausgeben
    			p=72*20-54;	// Impulspause
    			while(p > 255)
    			{
    			   Sleep(255);
    			   p=p-255;
    			}
    			Sleep(p);
    		}
    		if(statusledgreen == ON) statusledgreen=OFF;	// grüne StatusLED umschalten
    			else statusledgreen=ON;
    
    	   for(i=0; i<50; i++)
    		{
    			StatusLED(RED+statusledgreen);
    			Sleep(72);	// Mitte 1ms
    			StatusLED(statusledgreen);
    			p=72*20-72;
    			while(p > 255)
    			{
    			   Sleep(255);
    			   p-=255;
    			}
    			Sleep(p);
    		}
    		if(statusledgreen) statusledgreen=0;
    			else statusledgreen=1;
    
    	   for(i=0; i<50; i++)
    		{
    			StatusLED(RED+statusledgreen);
    			Sleep(90);	// +45° 0,125ms
    			StatusLED(statusledgreen);
    			p=72*20-90;
    			while(p > 255)
    			{
    			   Sleep(255);
    			   p-=255;
    			}
    			Sleep(p);
    		}
    		if(statusledgreen) statusledgreen=0;
    			else statusledgreen=1;
    
    	   for(i=0; i<50; i++)
    		{
    			StatusLED(RED+statusledgreen);
    			Sleep(72);
    			StatusLED(statusledgreen);
    			p=72*20-72;
    			while(p > 255)
    			{
    			   Sleep(255);
    			   p-=255;
    			}
    			Sleep(p);
    		}
    //		if(statusledgreen) statusledgreen=0;
    //			else statusledgreen=1;
    
    	}
    	return(0);
    }
    ungetestet

    Gruß

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

Berechtigungen

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

Solar Speicher und Akkus Tests