-         

Ergebnis 1 bis 7 von 7

Thema: Brauche hilfe bei odometrie.

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.11.2007
    Beiträge
    152

    Brauche hilfe bei odometrie.

    Anzeige

    ICh möchte , dass der Asuro überprüft, ob sich die Raäder drehen. main Programm sieht bis jetzt so aus aber es funktioniert nicht. Dies hat mich zwar nicht überrascht, aber ich habe auch keine Ideen mehr wie ich es zum Laufen bekommen könte.
    Mein Programm:
    Code:
    #include <asuro.h>
    		  
    int main(void){
    Init();
    while (1){
    OdometrieData(Data);
    			if(Data[0]>511){
    					Sleep(255);
    					Sleep(105);
    					OdometrieData(Data);
    					if(Data[0]>511){
    							SerWrite("motor dreht sich  nicht",0,23)
    							}
    					}
    			
    		
    			OdometrieData(Data);
    			if(Data[1]>511){
    					Sleep(255);
    					Sleep(105);
    					OdometrieData(Data);
    					if(Data[0]>511){
    							SerWrite("Motor dreht sich nicht",0,23)
    							}
    					}
    			
    		
    	}
    
    }
    	return 0;
    }
    wie krige cih das Programm zum Laufen???
    [schild=14 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]Roboter sind cool[/schild]

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.169
    Was meinst du mit laufen? Kompilieren? Na dan, was sind die fehler meldungen die du vom Kompiler bekomst? Jedenfalls ist dah eine krumme hacke } zuviel.

    Oder meinst du laufen im Asuro(cpu)? Deine 'drehung messung' wird 'keine drehung' sagen wenn die geberscheibe gedreht sein konnen von etwa mittel dunkel (halb schwarz-weiss) bis mehr dunkel (ein höhere werte ist dunkler). Das ist schön eine drehung. Und die 'mittel dunkel'-wert ist nich immer 512. Vieleicht komt es nicht hoher dann 512 in deiner Asuro. Dan wird deine lösung nicht klappen, und nur im while schleife rund-'laufen'.

    Persönlich wurde ich jeder anderung von helligkeitwerte (grosser als eine gewissene rausch wert) als drehung bemerken. Aber damit hat man noch keine bestimmte drehrichtung. Dazu muss du die alte un neue helligkeit von einander trennen und auf negatief-sein beobachten.

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.11.2007
    Beiträge
    152
    Mit laufen meine ich, dass der asuro das macht was ich möchte. Dass ich die Fehlermeldungen lesen muss ist mir klar. nur das Programm ht einen Denkfehler meiner seits, das nicht durch das Kompelieren erkennt wird.
    Die geschweifte klammer muss ich selbstverständlich entferenen.
    Ich habe das Programm noch einmal +berarbeitet. Es siht jetzt so aus:
    Code:
    #include <asuro.h>
           
    int main(void){
    Init();
    unsigned int Data[2];
    while (1){
    OdometrieData(Data);
             if(Data[0]>511){
                   Sleep(255);
                   Sleep(105);
                   OdometrieData(Data);
                   if(Data[0]>511){
                         SerWrite("motor dreht sich nicht",22);
                         }
                   }
             
          
             OdometrieData(Data);
             if(Data[1]>511){
                   Sleep(255);
                   Sleep(105);
                   OdometrieData(Data);
                   if(Data[0]>511){
                         SerWrite("Motor dreht sich nicht",22);
                         }
                   }
             
          
       }
       return 0;
    }

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.169
    Ok,

    Ich habe meiner bericht mehrmahls geandert gleichzeitig mit deiner reaction. Hast du das schon aufgemerkt?

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.11.2007
    Beiträge
    152
    Ja habe ich schon bemerkt, aber gibt es diesen beitrag auch noch ohne tippfehler, denn ich werde daraus einfach nicht schlau.
    [schild=14 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]Roboter sind cool[/schild]

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.169
    Deutsch ist nicht meiner Muttersprache. Ich bin ein Niederlander, und die Deutsche sprache ist mir nicht leicht abgegangen im schule. Und ich habe auch keine richtiges 'deutches' klavier mit Umlaut und so, sondern ein UK-klavier. Ohne die richtige abbildungen auf die Tasten geht mich das sehr schwierig ab hier zu posten. Bitte meine verzeihung dafur.

    Vieleicht kan jemand anderes dabei helfen.

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.11.2007
    Beiträge
    152
    Ich habe mein Programm noch einmal völlig umgeschrieben.
    und rausgekommen ist das hier:
    Code:
    #include <asuro.h>
    
    
    int Drehen(char dl,char dr){
    		int za;
    		MotorDir(RWD,RWD);
    		MotorSpeed(120,120);
    		for(za=0;za<282;za++){
    			Sleep (225);
    		}
    		MotorDir(dl,dr);
    		MotorSpeed(120,120);
    		for(za=0;za<282;za++){
    			Sleep (225);
    		}
    		return 0;
    	}
    
    
    int Zeit(int Da,char Zei){
    		int Data[2];
    		int za;
    		OdometrieData(Data);
    		if(Data[Da]>750){
    			while(Data[Da]>750){
    				MotorSpeed(150,150);
    				Sleep(1);
    				OdometrieData(Data);
    			}
    			while(Data[Da]<550){
    				MotorSpeed(200,200);
    				Sleep(1);
    				Zei++;
    				OdometrieData(Data);
    			}
    		}
    		else if(Data[Da]<550){
    			while(Data[Da]<550){
    				MotorSpeed(150,150);
    				Sleep(1);
    				OdometrieData(Data);
    			}
    			while(Data[Da]>750){
    				MotorSpeed(200,200);
    				Sleep(1);
    				Zei++;
    				OdometrieData(Data);
    			}
    		}
    	MotorSpeed(0,0);
    	for(za=0;za<1000;za++){
    			Sleep (225);
    	}
    	return 0;
    }
    
    
    int Stehen(int Da,char Ze){
    		unsigned int Data[2];
    		MotorDir(FWD,FWD);
    		MotorSpeed(255,255);
    
    		OdometrieData(Data);
    
    		if(Data[Da]>750){
    			Sleep(Ze);
    			OdometrieData(Data);
    			if(Data[Da]>750){
    				Drehen(RWD,FWD);
    			}
    			else{
    				MotorDir(FWD,FWD);
    				MotorSpeed(255,255);
    			}
    		}
    		else if(Data[Da]<550){
    			Sleep(Ze);
    			OdometrieData(Data);
    			if(Data[Da]<550){
    				Drehen(RWD,FWD);
    			}
    			else{
    				MotorDir(FWD,FWD);
    				MotorSpeed(255,255);
    			}
    		}
    	return 0;
    }
    
    
    
    
    int main(void){
    	Init();
    		unsigned int zl;
    		unsigned int zr;
    	Zeit(0,zl);
    	Zeit(1,zr);
    	while(1){
    		Stehen(0,zl);
    		Stehen(1,zr);
    	}
    	return 0;
    }
    Doch statt geradeaus zu fahren bis sich ein rad nicht mehr dreht und dann zurückzustetzen und zu drehen
    tut er zweiteres ständig unabhängig von der Rad drehung. Woran liegt das?? Wo ist der fehler??
    [schild=14 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]Roboter sind cool[/schild]

Berechtigungen

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