-
        

Ergebnis 1 bis 10 von 10

Thema: Figurenmalen - enlarged

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    09.02.2006
    Beiträge
    5

    Figurenmalen - enlarged

    Anzeige

    Grüßt euch!

    Seit ungefähr nem halben Jahr habe ich jetzt auch einen Asuro und bin bis jetzt recht gut damit zurande gekommen, allerdings bin ich jetzt irgendwo an meine Kapazitäten gestoßen.
    Ich habe vor den Asuro eine Figur (der Einfachheit halber mal einen 5-zackigen Stern - auch Pentagramm genannt O.o) malen zu lassen. Das hab ich auch schon hinbekommen (für Quelltext siehe unten). Jetzt soll er aber bei einem Hindernis, das er durch die Taster erkennt, eine bestimmte Strecke zurücksetzen und nochmal neu anfangen.
    Und da haperts auch schon... wie bekomm ich das am einfachsten hin? ^^

    Liebe Grüße, Michi

    Code:
    #include "asuro.h"
    #define fahr {go(80);}		// Define: Vorwärtsfahren
    #define dreh {turn(50);}	// Define: Drehen
    #define stop {MotorSpeed(0,0);}
    
    int trightspeed=150;	// Variable: Drehgeschwindigkeit rechter Motor (in Drehfunktion)
    int tleftspeed=150;		// Variable: Drehgeschwindigkeit linker Motor (in Drehfunktion
    int diff;				// Variable: Tickdifferenz zwischen links und rechts
    
    int main(void)	// Hauptfunktion
    	{	// Klammer - Hauptfunktion
    	Init();
    	Encoder_Init();	// Initialisierung der Odometrie
    
    	void turn(int ticks)	// Drehfunktion, Einführung der Variable "ticks"
    		{	// Klammer - Drehfunktion
    		Encoder_Set(0,0);	// Nullsetzen des Odometriezählers
    		MotorSpeed(tleftspeed,trightspeed);
    		MotorDir(RWD,RWD);
    		while(encoder[LEFT]<ticks) Msleep(1);
    		}	// Klammer - Drehfunktion
    
    	void go(int distance)	// Fahrfunktion, Einführung der Variable "distance"
    		{	// Klammer Fahrfunktion
    		Encoder_Set(0,0);	// Nullsetzen des Odometriezählers
    		MotorDir(RWD,FWD);
    		MotorSpeed(175,175);
    		diff=encoder[LEFT]-encoder[RIGHT];	// Regler: Bestimmung der Tickdifferenz zwischen links und rechts
    		MotorSpeed(175-diff,175+diff);	// Regler: Motorsteuerung
    		while(encoder[LEFT]<distance) Msleep(1);
    		}	// Klammer Fahrfunktion
    
    	fahr;
    	dreh;
    	fahr;
    	dreh;
    	fahr;
    	dreh;
    	fahr;
    	dreh;
    	fahr;
    	dreh;
    	stop;
    
    	while(1){}	// Endlosschleife
    	return 0;	// Rückgabewert 0, Programm ist noch nicht beendet
    	}	// Klammer Hauptfunktion
    PS: Da fällt mir ein: Vogons (ich glaube zumindest, dass ich's von ihm hab, man möge es mir verzeihen, wenn nicht ^^) Regler zum Geradeausfahren funktioniert bei mir nicht, beide Odometrieeinheiten geben aber Werte aus, das hab ich schon geprüft.

    /e: Wen es wundert, warum der linke Motor scheinbar verkehrt herum dreht... Ich hab den falschrum angeschlossen XD

  2. #2
    tach du

    bei mir im programmers notepad sgt es zu deinem programm das fehler dabei sind deshalb kann ich das programm nicht nutzen

    ich schaffs auch nicht diese fehler zu beheben

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    09.02.2006
    Beiträge
    5
    Hm... klingt fast so, als hättest du die erweiterte "asuro.h" von hier nicht mit eingebunden. Ich hab nämlich Befehle aus der Library verwendet, weil so das ganze Vorhaben etwas besser zu realisieren war. - Danke an dieser Stelle nochmal - Hier hast du nen Link: http://sourceforge.net/projects/asuro Musst du entpacken und in das Verzeichnis kopieren, in dem du den Quellcode für dein Programm, das du kompilieren willst, hast. Dann müssten keine Fehler mehr kommen.
    Vielleicht liegts auch an was anderem, teile uns doch mal die Fehlermeldungen mit, dann können wir dir besser helfen

    Viel Erfolg, Michi

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    01.11.2006
    Beiträge
    433
    du kannst doch einfach indie fahr und dreh funktion, eine interrupt gesteuerte rücksetzten funktion einbauen. (genaueres zu interrups steht im Buch mehr spaß mit asuro.
    dazu müstest du die asuro.h ein bischen modofizieren

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    09.02.2006
    Beiträge
    5
    @ EDH: Meine Anfrage an sich hat sich mittlerweile schon erledigt, mein Asuro hat seinen Zweck erfüllt
    Mit dem Interruptbetrieb hab ich mich schon etwas auseinandergesetzt, aber es nciht für lohnend erachtet den Ansatz weiter zu verfolgen.

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    23.12.2005
    Alter
    87
    Beiträge
    86
    kann mir vllcht jemand sagen wo, und wie ich die erweiterte asuro.h genau einfüge? ich hab genau das selber problem wie Forest.
    Encoder_*
    und Msleep
    funktionieren nicht!

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    21.03.2004
    Ort
    73061 Ebersbach
    Alter
    48
    Beiträge
    52
    ist nicht in der define bei dreh und fahr ein fehler?

    Code:
    #define fahr {go(80);}      // Define: Vorwärtsfahren 
    #define dreh {turn(50);}   // Define: Drehen 
    #define stop {MotorSpeed(0,0);}
    die Funktion Go hat 2 parameter, DISTANZ und SPEED
    ebenso die Funktion TURN

    zumindest in der asurolib 2.6

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    01.11.2006
    Beiträge
    433
    @m1ch15inner die asuro.h und die asuro.c in deinem programm ersetzt du einfach durch die neue asuro.h respektive asuro.c
    das war alles. mehr ist nicht nötig

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    23.12.2005
    Alter
    87
    Beiträge
    86
    danke....funktioniert aber immer noch nciht :´(

  10. #10
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.912
    Du lädst die datei runter, das müsste ein archiv (zip glaub ich) sein. die beiden dateien die da drin sind - asuro.c sowie asuro.h - entpackst du in das verzeichnis, in dem die datei mit dem quellcode deines geschreibenen programms ist. da in diesem verzeichnis schon eine asuro.c und eine asuro.h drin sind, wirst du gefragt ob du diese überschreiben willst. (Du wilst natürlich, sonst hätte sich das ja nich gelohnt. =)
    AM PROGRAMMCODE ÄNDERST DU NICHTS, der bleibt so wie sonst auch.
    dann kannst du entweder mit der "test-all.bat" oder (besser) mit der console im verzeichnis "make all" eingeben. das programm sollte kompiliert werden. immer noch fehler?
    kleinschreibung ist cool!

Berechtigungen

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