-         

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

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    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
    54
    Beiträge
    5.782
    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.

    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
    Jena
    Alter
    31
    Beiträge
    3.913
    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?
    kleinschreibung ist cool!

  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
    Jena
    Alter
    31
    Beiträge
    3.913
    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?
    kleinschreibung ist cool!

  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
    Jena
    Alter
    31
    Beiträge
    3.913
    das klingt sonnvoll... viel glück =)
    kleinschreibung ist cool!

Berechtigungen

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