- Labornetzteil AliExpress         
Ergebnis 1 bis 6 von 6

Thema: [gelöst] schwarze linie - rückwärts - 90 grad drehung

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    07.10.2010
    Beiträge
    17

    [gelöst] schwarze linie - rückwärts - 90 grad drehung

    Anzeige

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

    -vorwärts
    - wenn er eine Linie sieht anhalten
    - kurz rückwärts 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 Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    "vorwärts" dürfte ja eigentlich kein Problem sein

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

    "kurz rückwärts fahren" auch einfach...

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

    Das wären 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 geschüttelt und ungetestet könnte 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
    Bild hier  
    Atmel’s 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
    Beiträge
    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 grün

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

    dann noch in ein programm wo der asuro dann noch fährt

    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 gelöst einstellen ?

    danke trotzdem

    mfG Sigi

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

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

    Glückwunsch zum Gedankenblitz :)

    Wenn ein Problem gelöst wurde, kann man seinen eigenen ersten Beitrag im Thread editieren und im Titel ein "[gelöst]" ergänzen. Ich war mal so frei und habe das für dich erledigt. Weiterhin viel Spass mit deinem asuro wünscht

    mic
    Bild hier  
    Atmel’s 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
    Beiträge
    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 grün und rot abwechselnd

    mfg Sigi

  6. #6
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    ...blinkt nach einiger zeit die statusled grün und rot abwechselnd
    Prüfe mal mit dem Terminal ob der asuro "VLVLVLVLVL..." sendet. Das würde "Voltage low" bedeuten, die Akkus sind leer.

    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