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

Thema: Asuro: Odometrieproblem (anfänger)

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    Asuro: Odometrieproblem (anfänger)

    Hallo

    Ich habe jetzt seit gestern meinen Asuro fertig und damit fangen meine Probleme schon an.
    Nachdem ich mich ein bisschen mit der asurolib v26 auseinander gesetzt hab, kam folgendes stück code zustande, was den Roboter eigendlich nur geradeaus fahren lassen soll und sobald er an eine Tischkannte kommt, (im dunklen Raum und heller Platte) anhalten, zurücksetzen und wenden soll.

    Das 1. Problem ist das nach kurzem im Kreis fahren (anstatt geradeaus) die beiden Motoren stillstehen. Das 2. Problem ist das Ab beginn der if Abfrage die Variablen encoder[RIGHT] und encoder[LEFT] immer gleich 0 sind.

    Code:
    #include "asuro.h"  // bitte die neue Datei benutzen 
                        // asuro.h und asuro.c vom 31.03.05 oder neuer
    
    int main(void)
    {	
    	unsigned int ldon[2];
    	unsigned int ldoff[2];
    	int fahr=0;
    	int diff=0;
    	int ldiff=0;
    	Init();
    	Encoder_Init();
    	Encoder_Start();
    	StartSwitch();
    	MotorDir(FWD,FWD);
    	MotorSpeed(175,175);
    	while (!switched && fahr==0) {
    		SerWrite("going\n\r",9);
    		MotorDir(FWD,FWD);
    		diff=encoder[RIGHT]-encoder[LEFT];
    		MotorSpeed(175+diff,175-diff);
    		FrontLED(OFF);
    		LineData(ldoff);
    		FrontLED(ON);
    		LineData(ldon);
    		ldiff=ldon[0]-ldoff[0];
    		SerWrite("\nLinks:",8);
    		PrintInt(encoder[LEFT]);
    		SerWrite("\nRechts:",9);
    		PrintInt(encoder[RIGHT]);
    		if (ldiff<100) 
    		{	
    			SerWrite("stopped!\n\r",12);
    			MotorSpeed(0,0);
    			MotorDir(RWD,RWD);
    			MotorSpeed(175,175);
    			SerWrite("Moveing back\n\r",16);
    			Encoder_Set(0,0);
    			Encoder_Start();			
    			while (encoder[RIGHT] < 24)
    			{	
    				diff=encoder[RIGHT]-encoder[LEFT];
    				MotorSpeed(175+diff,175-diff);
    				PrintInt(encoder[RIGHT]);
    			}
    			MotorDir(BREAK,RWD);
    			SerWrite("Turning\n\r",11);
    			Encoder_Set(0,0);
    			Encoder_Start();
    			while (encoder[RIGHT] < 50)
    			{
    				diff=encoder[RIGHT]-encoder[LEFT];
    				MotorSpeed(175+diff,175-diff);
    				PrintInt(encoder[RIGHT]);
    			}
    		}
    	}
    	MotorSpeed(0,0);
    	while(1);
    	return 0;
    }
    Angehängte Dateien Angehängte Dateien

Berechtigungen

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

Labornetzteil AliExpress