-
        

Ergebnis 1 bis 6 von 6

Thema: [gelst] schwarze linie - rckwrts - 90 grad drehung

  1. #1
    Neuer Benutzer fters hier
    Registriert seit
    07.10.2010
    Beitrge
    17

    [gelst] schwarze linie - rckwrts - 90 grad drehung

    Anzeige

    hallo
    ich versuche nun seit 2 tagen ein Asuro programm zu entwerfen er soll folgendes tun:

    -vorwrts
    - wenn er eine Linie sieht anhalten
    - kurz rckwrts fahren
    - 90 wende nach links
    - wieder von vorne

    Nur die ersten 2 punkte sind das problem ..
    vielleicht kann mir irgendjemand ja helfen

    P.S. Der untergrund ist wei

    mfG Sigi

  2. #2
    Moderator Robotik Visionr Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beitrge
    5.781
    Blog-Eintrge
    8
    Hallo

    "vorwrts" drfte ja eigentlich kein Problem sein

    "wenn er eine Linie sieht anhalten" ist schon schwieriger. Woran erkennt der asuro die Linie?

    "kurz rckwrts fahren" auch einfach...

    "90 wende nach links" Schon schwieriger. Mit Odometrie sehr kompliziert, zeitgesteuert sehr einfach.

    Das wren mal grob die Teilaufgaben. Vermutlich "klemmt" es bei der Erkennung der Linie. Wenn man sicher ist, dass der asuro beim Programmstart nicht auf der Linie sondern auf dem (weisen) Untergrund steht, kann man zuerst die aktuelle Helligkeit des Untergrunds ermitteln und als Vergleichswert speichern. Aus dem rmel geschttelt und ungetestet knnte das Programm dazu etwa so aussehen:
    Code:
    #include "asuro.h"
    
    unsigned int data[2], startwerte[2];
    
    int main(void)
    {
    	Init();
    	FrontLED(ON);				// LED einschalten
    	Sleep(100);					// Warten bis LED sicher volle Helligkeit erreicht hat
    	LineData(startwerte);   // ADC warmlaufen lassen
    	LineData(startwerte);   // Startwerte einlesen
    	
    	MotorSpeed(150, 150);   // Antriebe starten
    	while(1)
    	{
    		StatusLED(RED);
    		LineData(data);        // aktuelle Helligkeitswerte einlesen
    
    		if(data[0] < (startwerte[0]-startwerte[0]/10)) StatusLED(YELLOW); // 10%
    		if(data[1] < (startwerte[1]-startwerte[1]/10)) StatusLED(YELLOW);
    		if((data[0]+data[1]) < ((startwerte[0]+startwerte[1])-((startwerte[0]+startwerte[1])/10))) StatusLED(YELLOW);
    
    		if(data[0] < (startwerte[0]/2)) break; // 50%
    		if(data[1] < (startwerte[1]/2)) break;;
    		if(((data[0]+data[1])/2) < ((startwerte[0]+startwerte[1])/2)) break;
    	}
    	MotorSpeed(0,0);
    	StatusLED(GREEN);
    	while(1);
    	return 0;
    }
    Gru

    mic

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

  3. #3
    Neuer Benutzer fters hier
    Registriert seit
    07.10.2010
    Beitrge
    17
    hallo
    hatte grade einen Gedanken Blitz ^^

    Code:
    #include "asuro.h"
    int main (void)
    {
    Init();
    int ldata[2];
    int v; 
    v=250 ; // muss an jeden roboter angepasst werden
    while(1)
    {
    LineData(ldata);
    if(ldata[0]<v){StatusLED(RED);}
    else {StatusLED(GREEN);}
    }
    
    }
    die rote status LEd leuchtet wenn fototransitor T9 die schwarze linie sieht
    wenn der fototransistor den boden sieht leuchtet sie grn

    der wert v muss immer abgestimmt werden da alle fototransistoren unterschiedlich sind

    dann noch in ein programm wo der asuro dann noch fhrt

    Code:
    #include "asuro.h"
    int main (void)
    {
    	Init();
    	FrontLED(ON);
    	MotorSpeed(150,160);
    	int ldata[2];
    	int z;
    	while(1)
    	{
    		LineData(ldata);
    		if(ldata[0]<250){MotorDir(BREAK,BREAK);
    		MotorDir(RWD,RWD);
    		for(z=0 ; z < 100 ; z++){Sleep(216);}
    		MotorDir(RWD,FWD);
    		for(z=0 ; z < 120 ; z++){Sleep(216);}
    		}
    		else { MotorDir(FWD,FWD);}
    	}
    }
    wo kann ich das thema als gelst einstellen ?

    danke trotzdem

    mfG Sigi

    edit:
    das mit dem vergleichswert hat nicht immer funktioniert..

  4. #4
    Moderator Robotik Visionr Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beitrge
    5.781
    Blog-Eintrge
    8
    Hallo

    Glckwunsch zum Gedankenblitz :)

    Wenn ein Problem gelst wurde, kann man seinen eigenen ersten Beitrag im Thread editieren und im Titel ein "[gelst]" ergnzen. Ich war mal so frei und habe das fr dich erledigt. Weiterhin viel Spass mit deinem asuro wnscht

    mic

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

  5. #5
    Neuer Benutzer fters hier
    Registriert seit
    07.10.2010
    Beitrge
    17
    habe nun ein anderes problem wenn ich ihn nun so durch ein labyrinth mit schwarzen linien als begrenzung fahren lasse ...blinkt nach einiger zeit die statusled grn und rot abwechselnd

    mfg Sigi

  6. #6
    Moderator Robotik Visionr Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beitrge
    5.781
    Blog-Eintrge
    8
    ...blinkt nach einiger zeit die statusled grn und rot abwechselnd
    Prfe mal mit dem Terminal ob der asuro "VLVLVLVLVL..." sendet. Das wrde "Voltage low" bedeuten, die Akkus sind leer.

    Gru

    mic

    Atmels 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
  • Anhnge hochladen: Nein
  • Beitrge bearbeiten: Nein
  •