- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 7 von 7

Thema: Hindernis ausweichen Problem

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    30.12.2006
    Beiträge
    19

    Hindernis ausweichen Problem

    Anzeige

    Powerstation Test
    Ich seh den Wald vor lauter Bäumen nicht mehr. Ich sitze jetzt seit Zwei Tagen an dem Programm und es kommt nix gescheites raus.

    Was soll passieren: Asuro fährt, knallt gegen die Wand, stoppt, fährt zurück, dreht sich, abhängig von Tasterkontakt und fährt weiter... Standardablauf

    Was passiert: er fährt dauernd Rückwärts.

    Das Programm lautet:
    Code:
    #include "asuro.h"
    
    
    
    int main(void)
    
    {
    
    	Init();
    	EncoderInit();
    
    	PollSwitch();
    	
    	while (1)
    	{
    		StartSwitch();
    		switched = FALSE;
    		while (!switched)
    		{
    			Go(10,120);
    		}
    
    		if (PollSwitch() < 7)
    		{
    			Go(-50,120);
    			Turn(-30,100);
    		}
    		else
    		{
    			Go(-50,120);
    			Turn(30,100);
    		}
    	}		
    	return 0;
    }
    Wo liegt mein Denkfehler?

  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
    Wo liegt mein Denkfehler?
    In der Annahme, PollSwitch() liefert immer korrekte Werte. Deine
    Code:
    while (!switched)
    -Schleife wird bei der geringsten Fehllesung der Taster beendet! Zur Fehlersuche kannst du ja mal den Wert speichern (und zum Terminal senden) der zum Abbruch der Schleife führte. Abhilfe schafft vielleicht eine Mehrfachabfrage und Prüfung auf Gleichheit mehrerer PollSwitch()-Werte.
    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
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.063
    hmm bis jetzt war die interrupt-funktion immer sehr zuverlässig.
    startswitch() würde ich evtl aus der while-schleife rausnehmen, auch wenn das denke ich keine störung hervoruft. in welche richtung fährt er denn rückwärts? so dass pollswitch größer oder kleiner als 7 ist?
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    30.12.2006
    Beiträge
    19
    Die Tasten alleine und die Go-Funktion laufen zuverlässig, das habe ich in separaten Programmen getestet.

    Mir scheints eher, dass sich irgendwie die Interrupts in die Quere kommen.

    Er fährt andauernd zurück (kein Turn). Er nimmt das if, also PollSwitch < 7.

  5. #5
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.063
    das ist ja eigenartig. wenn er nur zurückfährt, dann stimmt was grundlegendes nicht. ich könnte mir evtl einen überlauf der encodervariable vorstellen. setz doch die beiden mal zurück (war das nicht Encoder_Ser(0,0) oder so?) bevor du die go-und turn funktionen nutzt. oder passiert das bereits in deisen funktionen?
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    30.12.2006
    Beiträge
    19
    Ach, ich Hirni, ich glaub ich habs. Ich hab in dem Programm noch was mit den BackLEDs rumgemacht, das habe ich der Übersicht halber hier nicht gepostet. Da aber Odometrie und BackLEDs zusammenhängen, kann das ganze gar nichtmehr sinnvoll funktionieren. Ich geh jetzt pennen und probiere morgen weiter, hoffentlich klappts dann.

  7. #7
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.063
    das klingt sonnvoll... viel glück =)
    Read... or die.
    ff.mud.de:7600
    Bild hier  

Berechtigungen

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

12V Akku bauen