-         

Ergebnis 1 bis 7 von 7

Thema: kollision!

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    16.06.2008
    Beiträge
    14

    kollision!

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    hallo,
    wenn ich dieses programm schreibe:

    #include "asuro.h"

    int main(void)
    {
    Init();
    if (PollSwitch()==0)
    {MotorDir(FWD,FWD);
    MotorSpeed(150,150);
    StatusLED(GREEN);
    }
    else
    {MotorDir(FWD,FWD);
    MotorSpeed(0,0);
    StatusLED(RED);
    }

    while(1);
    return 0;
    }

    sagt mir das programm programmers notepad folgendes:

    test.c: In function `main':
    test.c:25: error: parse error at end of input
    make: *** [test.o] Error 1

    > Process Exit Code: 2

    was ist der fehler bei dem programm?
    danke schon mal für die hilfe

  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

    Auch mit deiner Formatierung wird dein Programm bei mir anstandslos übersetzt:

    Code:
    #include "asuro.h"
    
    int main(void)
    {
    	Init();
    	if (PollSwitch()==0)
    	{
    		MotorDir(FWD,FWD);
    		MotorSpeed(150,150);
    		StatusLED(GREEN);
    	}
    	else
    	{
    		MotorDir(FWD,FWD);
    		MotorSpeed(0,0);
    		StatusLED(RED);
    	}
    
    	while(1);
    	return 0;
    }
    Hast du nach der letzten Änderung nochmals gespeichert vor dem Kompilieren? Bei dir sind's übrigends von #include bis zur } nach return 0 nur 19 Zeilen! Der Error in Zeile 25 muss also irgendwo hinter dem Ende sein.

    Gruß

    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
    16.06.2008
    Beiträge
    14
    ja das klappt jetzt auch, abe rder roboter hält nicht an, wenn die taster vorne gedrückt werden! was soll ich machen?

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Das ist schon klar dass der nicht anhält. Die IF-Anweisung wird nur einmal ausgeführt. Wenn du ihn mit gedrückter Taste einschaltest sollte er rückwärts fahren. Besser wäre natürlich wenn die IF-Anweisung in der while-Schleife wäre:

    Code:
    #include "asuro.h" 
    
    int main(void) 
    { 
       Init();
     
       while(1) if (PollSwitch()==0) // kein ; nach while() !!!
       { 
          MotorDir(FWD,FWD); 
          MotorSpeed(150,150); 
          StatusLED(GREEN); 
       } 
       else 
       { 
          MotorDir(FWD,FWD); 
          MotorSpeed(0,0); 
          StatusLED(RED); 
       } 
    
       return 0; 
    }
    Das hatte ich doch glatt übersehen, sorry.

    mic

    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
    16.06.2008
    Beiträge
    14
    vielen dank für die hilfe!

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    16.06.2008
    Beiträge
    14
    nur eine frage noch: warum steht in der klammer nach while eine 1?

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.167
    while(0) ist gleich wie: while(FALSE)

    while(1) ist gleich wie: while(TRUE)

    aber while(2) oder while(-1) oder jede andere integer das "nicht gleich 0" ist auch gleich wie while(true). Wenn die while schleife IMMER ausgefuhrt werden mus ist ein "1" vollstandig. Das muss nicht unbedingt ein logik förmel rein.

Berechtigungen

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