- LiFePO4 Speicher Test         
Ergebnis 1 bis 8 von 8

Thema: ASURO-Programm funkt nicht

  1. #1

    ASURO-Programm funkt nicht

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,

    ich habe meinen Asuro erst seit einigen Tagen und bis jetzt funktioniert alles wunderbar. Ich habe nun ein ganz simples Programm für den Asuro geschrieben, das ihn geradeaus fahren lässt und bei einer Kollision den Rückwartsgang einlegt, sich dreht und dann weiter geradeaus fährt.

    Ich bekomme das Programm aber einfach nicht richtig zum Laufen.
    Würde mich mich über jede Hilfe freuen.

    Hier ist der Quellcode:

    #include "asuro.h"

    int main(void)

    {
    unsigned int zaehler;
    Init ();

    while(1)
    {
    MotorDir(FWD,FWD);
    MotorSpeed(150,150);

    while(PollSwitch==0)
    {}

    zaehler=0;

    while(zaehler<65000)
    {zaehler++;
    MotorDir(RWD,RWD);
    MotorSpeed(150,150);}

    zaehler=0;

    while(zaehler<30000)
    {zaehler++;
    MotorDir(FWD,RWD);
    MotorSpeed(150,150);}
    }

    return 0;
    }


    Danke schon im Vorraus!!

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Hallo Stefan88,

    so sollte es eigentlich funktionieren:
    Code:
    ...
    while(1)
    {
      MotorDir(FWD,FWD);
      MotorSpeed(150,150);
    
      if(PollSwitch() != 0)
      {
    
        zaehler=0;
    
        while(zaehler<65000)
        { 
          zaehler++;
          MotorDir(RWD,RWD);
          MotorSpeed(150,150);
        }
    
        zaehler=0;
    
        while(zaehler<30000)
        {
          zaehler++;
          MotorDir(FWD,RWD);
          MotorSpeed(150,150);
        }
      }
    } 
    ...

    Gruß Peter

  3. #3
    Hallo,

    habe ein kleines Problem.
    Und zwar:

    Mein Asuro soll einer Linie folgen und bei Kollision soll er ein Stück zurücksetzen und sich dann um 180° drehen.

    Nun macht er aber folgendes:
    Der Asuro folgt der Linie (soweit OK!), bei Kollision setzt er ein Stück zurück (auch OK!) und dann dreht er sich, und dreht, und dreht, und dreht...
    Und hört gar nicht mehr auf sich zu drehen...

    Kann mir vielleicht jemand bei dem Problem helfen?

    Hier noch mein derzeitiges Programm:
    Code:
    #include "asuro.h"					
    
    int main(void) {
    	unsigned int data[2]; 	
    	unsigned int zaehler; 
    	unsigned int p1; 
    	unsigned int p2; 
    	unsigned int p3; 
    	unsigned int p4; 
    	unsigned int p5; 
    	unsigned int p6; 
    	unsigned int p7; 
    	unsigned int p8; 
    	unsigned int p9; 
    	Init();
    	FrontLED(ON); 
    	MotorDir(FWD,FWD); 
    	while(1){ 
    		
    	LineData(data); 
    
    	if (data [0] > data [1] )
    		{MotorSpeed(200,150); BackLED(ON,OFF); StatusLED(GREEN);}
    		
    	else
    		{MotorSpeed(150,200); BackLED(OFF,ON); StatusLED(RED);} 
    		
    	
    	p1=PollSwitch();
    		p2=PollSwitch();
    			p3=PollSwitch();
    				p4=PollSwitch();
    					p5=PollSwitch();
    						p6=PollSwitch();
    							p7=PollSwitch();
    								p8=PollSwitch();
    									p9=PollSwitch();
    
    	
    	
    	  if(p9 != 0)
      {
    
        zaehler=0;
    
        while(zaehler<65000)
        {
          zaehler++;
          MotorDir(RWD,RWD);
          MotorSpeed(150,150);
        }
    
        zaehler=0;
    
        while(zaehler<10000)
        {
          zaehler++;
          MotorDir(FWD,RWD);
          MotorSpeed(150,150);
        }
      }
    	
    	}
    
    return 0;
    }
    Gruß
    InfoPC

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.05.2004
    Ort
    Bielefeld / Paderborn
    Beiträge
    1.253
    ich kann kein c *schäm* aber ich vermute mal dass dein zähler nicht korrekt auf null gesetzt wird.... dadurch könnte es in der while-schleife zu einer endlosschleife kommen, weil er wert initial schon über 10000 ist. versuch doch mal ne zweite zähler-variable für die drehung einzuführen. ansonsten..... muss du evtl zaehler:=0 schreiben??? *vermut*


    bitte entschuldigt die unqualifizierte antwort. hatte langeweile! =

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Hallo InfoPC

    Hinter dem if(p9 != 0) Block, fehlt noch ein else Zweig. (Wenn kenn Schalter gedrückt)
    dann soll der Bot wieder vorwärts fahren.
    Oder du fügst noch MotorDir(FWD,FWD), in beide Liniensensor Abfragen ein.

    Code:
    ...
        else 
        { 
          MotorDir(FWD,FWD);
        }
       
       }
    return 0;
    }
    Gruß m.a.r.v.i.n

  6. #6
    Hallo Goblin,
    danke für Deine Antwort, aber zaehler=0; steht ja schon drin...
    Trotzdem Danke!


    Hallo m.a.r.v.i.n,
    auch Dir danke ich für Deine Antwort!
    Jetzt läuft es, 180° Drehungund wieder vorwärts! - Danke!


    Gruß
    InfoPC

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.05.2004
    Ort
    Bielefeld / Paderborn
    Beiträge
    1.253
    ich meinte (in worten) zaehler doppelpunkt gleich null semikolon. es gibt nämlich durchaus sprachen, bei denen die syntax sowas verlangt! aber schön dass es jetzt funktioniert.

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    11.07.2006
    Beiträge
    157
    Hallo an alle,

    Den Quellcode muss man doch mim Tool make zusammen machen,oder ?
    Wenn ich nähmlich den Quellcode bei test.c verändere un dann mim tool make zusammen mache, steht dann immer wieder der Quellcode vom Anfang (den ich noch nicht geändert habe)da, ist das normal oder mach ich was falsch ?

    Gruß

Berechtigungen

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

Solar Speicher und Akkus Tests