- LiFePO4 Speicher Test         
Ergebnis 1 bis 9 von 9

Thema: Asuro Labyrinth

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Dein Glück, dass ich gerade Langeweile hatte... da kam mir dein Problem gerade recht

    Also, ich würde dir 3 Sachen raten:
    1. Quelltext kommentieren.
    Entgegen der landläufigen Meinung, man kommentiere nur für andere, ist es sehr hilfreich sich mit Kommentaren Notizen in den Quelltext zu schreiben. Wozu dient die Quellcodepassage? Erläuterungen etc...
    2. In Funktionen denken
    Programmteile, die wiederholt vorkommen, in Funktionen packen.
    3. Sprechende Variablen
    Variablen- und Funktionsnamen möglichst nach ihrer konkreten Anwendung benennen.

    Das mag erstmal komisch klingen als Antwort auf dein konkretes Problem. Aber durch diese simplen 'Regeln' wird dein Quellcode sehr viel lesbarer und die Probleme werden sehr viel leichter erkennbar.

    Ich hab deinen Code mal umgeschrieben, um am Beispiel zu zeigen, was ich meine:

    Code:
    #include "asuro.h"
    
    // Ausgabe einer Integer-Variablen
    void printInt(int wert) {  	
    	char text[6] = {0};
    	itoa(wert, text, 10);
    	SerWrite(text, strlen(text));	 
    }
    
    // Tastenabfrage mit Entprellung
    // fragt Hindernistaster ab
    unsigned char isHindernis() {
    	return PollSwitch() || PollSwitch() || PollSwitch();
    }
    
    // Richtungen definieren
    enum Richtung {LINKS, RECHTS};
    
    // Drehung um 90 Grad
    void drehen(char richtung) {
    	if (richtung == LINKS) {
    		MotorDir(RWD, FWD);
    	}
    	else {
    		MotorDir(FWD, RWD);
    	}
    	MotorSpeed(120, 120);
    	for (i = 1; i < 120; i++) {Sleep(255);}
    }
    
    // kurzes Stück rückwärts fahren
    void zuruecksetzen() {
    	MotorDir(RWD, RWD);
    	MotorSpeed(120, 120);
    	for (i = 1; i < 80; i++) {Sleep(255);}
    }
    void geradeausfahren() {
    	MotorDir(FWD, FWD);
    	MotorSpeed(150, 150);
    }
    int main(void)
    {
    	Init();
    
    	int gefahreneStrecke;
    	int i;
    
    	// Endlosschleife (loop)
    	while(1)
    	{
    		// Los gehts!
    		geradeausfahren();
    
    		// solange fahren, bis Hindernis detektiert
    		while (!isHindernis() )  { }
    
    		// Aha, ein Hindernis!
    		zuruecksetzen();
    		drehen(RECHTS);
    		geradeausfahren();
    
    		// solange fahren, bis Hindernis detektiert oder Mindestentfernung zurückgelegt
    		gefahreneStrecke = 0;
    		while (!isHindernis() && gefahreneStrecke <= 30)  { gefahreneStrecke++; }
    
    		// Mindestentfernung zurückgelegt?
    		if (gefahreneStrecke > 30)
    		{
    			// loop neu starten 
    			continue;
    		}
    
    		// Aha, rechts ist eine Wand!
    		zuruecksetzen();
    		drehen(LINKS);	// 90° drehen
    		drehen(LINKS);	// 90° drehen -> 180° gedreht
    		geradeausfahren();
    
    		// solange fahren, bis Hindernis detektiert oder Mindestentfernung zurückgelegt
    		gefahreneStrecke = 0;
    		while (!isHindernis() && gefahreneStrecke <= 30)  { gefahreneStrecke++; }
    
    		// Mindestentfernung zurückgelegt?
    		if (gefahreneStrecke > 30)
    		{
    			// loop neu starten 
    			continue;
    		}
    		// Aha, links ist auch eine Wand!
    		// Also Sackgasse gefunden
    		zuruecksetzen();
    
    		// drehen Richtung Ursprung
    		drehen(LINKS);
    
    	}
    	return 0;
    }
    Da ich kein Asuro besitze, kann ich den Code nicht testen, aber ich bin sicher, falls ich Fehler gemacht habe, wirst du sie leicht finden.
    Geändert von Sisor (17.08.2014 um 12:48 Uhr) Grund: isHindernis() korrigiert

Ähnliche Themen

  1. Asuro Programmierung Brauche Hilfe Labyrinth !!!!!!!!!!!!!!!
    Von marcel_asuro im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 3
    Letzter Beitrag: 07.01.2010, 19:05
  2. Labyrinth
    Von asuro11 im Forum Sensoren / Sensorik
    Antworten: 14
    Letzter Beitrag: 10.05.2009, 12:02
  3. HILFE! Asuro Fährt durch ein "Labyrinth"
    Von Alorom im Forum Open Source Software Projekte
    Antworten: 2
    Letzter Beitrag: 06.04.2009, 14:49
  4. ASURO im Labyrinth, der Film
    Von stochri im Forum Asuro
    Antworten: 1
    Letzter Beitrag: 03.02.2007, 13:13
  5. Antworten: 4
    Letzter Beitrag: 03.05.2005, 18:37

Stichworte

Berechtigungen

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

Labornetzteil AliExpress