-         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: Linienverfolgung mit verschieden geschwindigkeiten via IR

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    25.02.2009
    Beiträge
    8

    Linienverfolgung mit verschieden geschwindigkeiten via IR

    Anzeige

    Hallo Robo fans

    Habe da ein klitze kleines problemchen
    Wollte meinen Asuro eine linie verfolgen lassen und während der fahrt via IR verschiedene geschwindigkeiten einstellen. Tja also reagieren tut er auf meine befehle, jedoch nicht so wie er sollte. Besser gesagt wenn ich z.B a Drücke sollte er mit einer Geschwindigkeit von 120 fahren. Nun das tut er auch jedoch fährt er dann mit dieser geschwindigkeit gerade aus statt der Linie entlang. Die linienverfolgung ohne befehle funktioniert ganz gut.

    Hat jemand eine idee was ich da falsch mache?

    Gruss Robotoby

    Code:
    #include <asuro.h> 
    
    int main(void) 
    
    
    { 
    	unsigned int data[2]; 
    	int i; 
       	char input[1]; 
    
    	Init(); 
    FrontLED(ON); 
    MotorDir(FWD,FWD); 
    while(1) 
    { 
    
    SerRead(input,1,0); 
    
    if(input[0]=='a') 
     
    {
     a = 120;
    }
    
    if else(input[0]=='b') 
     
    {
     a = 180;
    }
    
    if else(input[0]=='c') 
     
    {
     a = 200;
    }
    
    if else(input[0]=='d') 
     
    {
     a = 220;
    }
    
    else 
    
    {
    a = 250
    }
    
    LineData(data); 
    if(data[0]>data[1]) 
    { 
    MotorSpeed(a,0); 
    BackLED(ON,OFF); 
    } 
    else if (data [0] < data [1] ) 
    { 
    MotorSpeed(0,a); 
    BackLED(OFF,ON); 
    } 
    else 
    { 
    MotorSpeed(a,a); 
    BackLED(ON,ON); 
    } 
    } 
    return 0; 
    }

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    55
    Beiträge
    5.789
    Blog-Einträge
    8
    Hallo,

    willkommen im RN-Forum.

    Ich kann dein Programm nicht fehlerfrei kompilieren, diese Version ist (syntax-)fehlerfrei:
    Code:
    #include "asuro.h"
    
    int main(void)
    {
       unsigned int data[2];
       int a;
       char input[1];
    
       Init();
    	FrontLED(ON);
    	MotorDir(FWD,FWD);
    	while(1)
    	{
    		SerRead(input,1,0);
    		if(input[0]=='a')
    		{
    	 		a = 120;
    		}
    		else if(input[0]=='b')
    		{
    	 		a = 180;
    		}
    		else if(input[0]=='c')
    		{
    			a = 200;
    		}
    		else if(input[0]=='d')
    		{
    			a = 220;
    		}
    		else
    		{
    			a = 250;
    		}
    		LineData(data);
    		if(data[0]>data[1])
    		{
    			MotorSpeed(a,0);
    			BackLED(ON,OFF);
    		}
    		else if (data [0] < data [1] )
    		{
    			MotorSpeed(0,a);
    			BackLED(OFF,ON);
    		}
    		else
    		{
    			MotorSpeed(a,a);
    			BackLED(ON,ON);
    		}
    	}
    	return(0);
    }
    Allerdings kann ich es im Moment nicht testen. "if else" kennt C nicht, int i ist a und die Lib wird mit #include "asuro.h" eingebunden.

    Ich hoffe das hilft

    mic

    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
    25.02.2009
    Beiträge
    8
    Ach du grüne neune ist doch tatsächlich das falsche programm reingeschlichen. Hmm nun das hilft mir nicht gerade weiter.
    also noch einmal der richtige code. Bei mir klappt das compilieren mit diesem programm das neu steht. jedoch nicht so wie es zu wüscnschen währe.
    [code#include <asuro.h>

    int main(void)

    {
    unsigned int data[2];
    int i,a;
    char input[1];

    Init();
    FrontLED(ON);
    MotorDir(FWD,FWD);
    while(1)
    {

    SerRead(input,1,0);

    if(input[0]=='a')

    {
    a = 120;
    }

    if else(input[0]=='b')

    {
    a = 180;
    }

    if else(input[0]=='c')

    {
    a = 200;
    }

    if else(input[0]=='d')

    {
    a = 220;
    }

    else

    {
    a = 250
    }

    LineData(data);
    if(data[0]>data[1])
    {
    MotorSpeed(a,0);
    BackLED(ON,OFF);
    }
    else if (data [0] < data [1] )
    {
    MotorSpeed(0,a);
    BackLED(OFF,ON);
    }
    else
    {
    MotorSpeed(a,a);
    BackLED(ON,ON);
    }
    }
    return 0;
    }[/code]

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    02.01.2008
    Alter
    26
    Beiträge
    239
    hallo

    also ich kann mir nicht vorstellen, das dieser code ohne error compiliert wird, denn du schreibst schon wieder if else, wobei else if gehört!!!

    hast du vorm compilieren gespeichert??
    mfg hai1991

    P.S.: wer großbuchstaben oder rechtschreibfehler findet darf sie behalten

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    25.02.2009
    Beiträge
    8
    Hehe Ja ok es funktioniert schon so wie ihr sagt if else ese if verkehrt aber das ist nicht das problem

    nun habe unterdessen das programm ein wenig geändert. Jedoch immer noch nicht mit erfolg.hmm

    Code:
    #include "asuro.h" 
    
    int geschw_einlesen(void);
    
    int main(void) 
    
    
    { 
    	unsigned int data[2]; 
    	unsigned int b; 
      
    
    
    Init(); 
    	
    FrontLED(ON); 
    
    MotorDir(FWD,FWD); 
    
    while(1) 
    { 
    
    b = geschw_einlesen();
    
    LineData(data); 
    if(data[0]>data[1]) 
    { 
    PrintInt(data[0]);
    MotorSpeed(b,0); 
    BackLED(ON,OFF); 
    SerWrite("ok1",3);
    
    } 
    else if (data [0] < data [1] ) 
    { 
    
    MotorSpeed(0,b); 
    BackLED(OFF,ON); 
    SerWrite("ok2",3);
    } 
    else 
    { 
    MotorSpeed(b,b); 
    BackLED(ON,ON); 
    SerWrite("ok3",3);
    } 
    }
    }
    
    
    int geschw_einlesen( void )
    	{
    	unsigned int a; 
    	unsigned char input[] = "01"; 
    	
    	SerWrite("ein",3);
    	SerRead(input,1,0); 
    	a = 0;
    	
    	if(input[0]=='a') 	{
    		 a = 120;
    		 SerWrite("120",3);
    }	
    
    	else if (input[0]=='b') {
    		 a = 180;
    		 SerWrite("180",3);
    }
    
    	else if (input[0]=='c') {
    		 a = 200;
    		 SerWrite("200",3);
    }
    
    	else if (input[0]=='d') {
    		 a = 220;
    		 SerWrite("220",3);
    }
     
    return a; 
    }

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    25.02.2009
    Beiträge
    8
    kompilieren geht fehlerfrei. Doch mir scheint er liest die linienverfolgungs Sensoren nicht aus. also irgentwo muss was blockieren Und wenn ich schon dabei bin funtktioniert bei euch der Befehl PrintInt(Variabel);?? mir schickt der compiler folgenden fehler:

    test.c:28: warning: implicit declaration of function `PrintInt'
    C:\ASURO_src\FirstTry/test.c:28: undefined reference to `PrintInt'

    Ach ja und he danke jungs für eure interesse an meinem problem

  7. #7
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    55
    Beiträge
    5.789
    Blog-Einträge
    8
    Hallo

    PrintInt() kann Integerwerte zum Terminal senden und ist in der orginalen asuro-Library noch nicht enthalten. Auf die Schnelle ohne Installation einer aktuelleren Version kann man sich gut auch so behelfen:

    https://www.roboternetz.de/phpBB2/ze...=328202#328202

    btw fehlt in der orginalen Lib auch Msleep(), das kann man aber auch so ersetzen:

    void Msleep(unsigned int millisekunden)
    {
    while(millisekunden--) Sleep(72); // Sleep(72) dauert ca. 1 ms
    }

    Gruß

    mic

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

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    25.02.2009
    Beiträge
    8
    hehe ja ok alles klar doch woher krieg ich nun die neue lib?

  9. #9
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    55
    Beiträge
    5.789
    Blog-Einträge
    8
    Die verschiedenen Versionen gibts hier:

    http://sourceforge.net/projects/asuro

    oder hier:
    https://www.roboternetz.de/phpBB2/vi...=275614#275614

    Meiner Meinung nach kann man den asuro mit der orginalen oder einer etwas älteren Lib besser kennenlernen. Aber jeder kann das halten wie er will...

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

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    25.02.2009
    Beiträge
    8
    hehe danke habe gerade herausgefunden wis geht. so ganz ein frischer hase bin ich nicht, doch nach zwei jahren ausetzten ist man schon ganz schön aufgeschmissen

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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