- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 4 von 4

Thema: Programmfehler

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    40
    Beiträge
    1.516
    Hallo,

    das ist ein genereller Denkfehler: bei der RP6Lib muss einiges "im Hintergrund" erledigt werden. Aber da hier kein Betriebssystem o.ä. läuft, muss dass explizit in der Hauptschleife aufgerufen werden.
    Das sind die task_ Funktionen.

    Die wichtigste:

    task_RP6System();
    muss INNERHALB von SCHLEIFEN die länger als ein paar Millisekunden laufen an einer Stelle aufgerufen werden.

    moveAtSpeed hingegen muss nur genau EINMAL aufgerufen werden um die neue Geschwindigkeit zu setzen.
    Das braucht nicht in die Schleife (darf, aber bringt nix).

    Fang besser mit einem einfacheren kürzeren Programm an in dem Du das separat testen kannst.


    MfG,
    SlyD

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    24.02.2013
    Beiträge
    9
    Danke für die Antwort.

    Ich habe einmal ein anderes, etwas einfacheres Programm zum folgen eines kleinen Parcours geschrieben, und würde dort gerne, dass der Roboter dieses Programm solange ausführt, bis beide Bumper durchgedrückt sind. Dies gelingt ja (meistens) mit der Schleife
    Code:
    while(!bumper_left && !bumper_right){...}
    Jedoch funktioniert dies bei mir nicht wie gewollt, und auch wenn ich mit Stopwatches als Schleifenbedingung arbeite gibt es keine Reaktion. Nur in einer Endlosschleife funktioniert das Programm, aber es soll wie schon gesagt auf die Bumper reagieren.

    Wo ist mein Denkfehler? und wie kann man dieses Problem umgehen?

    Ich wäre euch für Hilfe sehr dankbar.

    Grüße Arjen

    Das Programm:
    Code:
    #include "RP6RobotBaseLib.h"
    
    
    int main (void)
    {
    	initRobotBase();
    	board_init();
    	powerON();
    	setACSPwrLow();
    	setLEDs(0b111111);
    	mSleep(2500);
    	setLEDs(0b000000);
    	startStopwatch1();
    	while(!bumper_left && !bumper_right)
    	{
    	
    		changeDirection(FWD);
    		moveAtSpeed(50,50);
    		while(!obstacle_left && !obstacle_right)
    		{
    			task_RP6System();
    		}
    		
    		
    		if(obstacle_left)
    		{
    			setStopwatch1(0);
    			while(getStopwatch1() < 2000)
    			{
    				task_RP6System();
    			}
    			moveAtSpeed(0,0);
    			setLEDs(0b110000);
    			while(obstacle_left)
    			{
    				rotate(50, RIGHT, 10, true);
    			}
    			setLEDs(0b000000);
    		}
    		else if(obstacle_right)
    		{
    			setStopwatch1(0);
    			while(getStopwatch1() < 2000)
    			{
    				task_RP6System();
    			}
    			moveAtSpeed(0,0);
    			setLEDs(0b000110);
    			while(obstacle_right)
    			{
    				rotate(50, LEFT, 10, true);
    			}
    			setLEDs(0b000000);
    		}
    	
    	}
    	moveAtSpeed(0,0);
    	return 0;
    }
    Ps. Die Stopwatch1 verwende ich dafür, dass der Roboter nicht soweit vor dem Hindernis anhält, sondern noch enger ranfährt, um einen engeren Parcour zu durchqueren.

  3. #3
    shedepe
    Gast
    Dein Code wird je nach Bumperstatus zu beginn gar nicht ausgeführt und dann springt der Controller in den Reset. Ich würde dir dringend raten dich etwas mehr mit der Programmierung in C zu befassen und m besten auch das beim RP6 mitgelieferte C Tutorial mal komplett durchzuarbeiten.

Ähnliche Themen

  1. Unerklärliche Programmfehler
    Von damfino im Forum C - Programmierung (GCC u.a.)
    Antworten: 31
    Letzter Beitrag: 07.09.2010, 19:07
  2. Odometrie Programmfehler?
    Von Hansi41 im Forum Asuro
    Antworten: 17
    Letzter Beitrag: 09.09.2008, 06:38
  3. Programmfehler?
    Von D1K0 im Forum Asuro
    Antworten: 9
    Letzter Beitrag: 01.02.2008, 19:55
  4. Asuro Programmfehler ???
    Von kaitecxx2 im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 21.10.2007, 22:04
  5. Programmfehler
    Von asuro_freak2 im Forum Asuro
    Antworten: 1
    Letzter Beitrag: 10.12.2006, 08:37

Berechtigungen

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

Labornetzteil AliExpress