- LiFePO4 Speicher Test         
Seite 6 von 6 ErsteErste ... 456
Ergebnis 51 bis 52 von 52

Thema: "Hindernisfahrt"

  1. #51
    Erfahrener Benutzer Roboter-Spezialist Avatar von -schumi-
    Registriert seit
    30.12.2009
    Ort
    Wasserburg am Inn / Bayern
    Alter
    31
    Beiträge
    449
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Zitat Zitat von timmy19 Beitrag anzeigen
    ZWEITENS: Er fuhr einmal kurz vor, dann wieder zurück, dann drehte er sich wieder paar mal nach links und fuhr dann ständig nur noch vor und zurück (wieder so nen Ruckeln)
    Irgendetwas kann einfach nicht stimmen. Im gesammten Programm gibt es keine einzige Anweisung, die den Roboter rückwärts fahren lässt (das kann man auch in der tmp_preprozessor.c sehen, kein robot.motors mit zwei negativen Zahlen). Wenn du das Programm fehlerfrei kopiert und auf den Roboter übertragen hast, kann ich in keinster Weise nachvollziehen woher das kommen soll. Bleibt nur noch irgendwelche Softwarespezialitäten von denen man als Außenstehender nichts ahnen kann oder ein Hardwaredefekt.

    Leider kann ich dir hier nicht mehr weiterhelfen

  2. #52
    Neuer Benutzer Öfters hier
    Registriert seit
    28.12.2013
    Beiträge
    25
    Hab zwischen drin auch schon an sowas gedacht, aber irgendwie kann das doch nicht sein.

    Wie könnte man denn in das vorherige Programm nen Infrarot reinbekommen?

    Code:
    #include "qfixMiniBoard.h"
    #include "qfixLCD.h"
    
    
    const    int SENSOR3 = 3;
            int SENSOR1 = 1;
            int SENSOR2 = 2;
            int SENSOR = 0;
    
    MiniBoard robot;
    LCD lcd;
    
    #define geradeaus        0
    #define linksDrehung    1
    #define rechtsDrehung    2
    
    #define hindernis        95
    #define freieSicht        120 // Wenn der Robo etwas nach links fährt, aber dann gegen das Hindernis, ist dieser Wert zu klein
    
    #define True            1
    #define False            0
    
    int main() 
    {
        unsigned char drehrichtung = geradeaus;    // unsigned char = 8bit integer von 0 bis 255, braucht weniger Platz im RAM
        unsigned char schonNachLinksAusgewichen = False;    
      
        while(1)
        {
            int abstand   = robot.analog(1);
    		//int infrarot  = robot.analog(3);
            if( drehrichtung == geradeaus)
            {
    		robot.motors(25,25); //geradeaus fahren
                if( abstand < hindernis)
                {
                    if(schonNachLinksAusgewichen == False)
                        drehrichtung = linksDrehung;
                    else
                        drehrichtung = rechtsDrehung;
                }
            }
            if( drehrichtung == linksDrehung )
            {
    			
    		    robot.motors(-255, 255); // nach links drehen
    			
                if( abstand >= freieSicht )
                {
                    robot.motors(125,125);
                    schonNachLinksAusgewichen = True;
    				//if( infrarot > 180){
    				//robot.motors(100,-100);
    				//msleep(500);
    				//}
    				
                }
            }
            if( drehrichtung == rechtsDrehung )
            {
                robot.motors(200, -200); // nach rechts drehen
                if( abstand >= freieSicht )
                {
                    robot.motors(100,100);
                    schonNachLinksAusgewichen = False; 
    				//msleep(500);
    				//if( infrarot > 180){
    				//robot.motors(-100,100);
    				//}
    	
    			// Er ist zwar schon mal nach links ausgewichen, aber inzwischen auch schon rechtsrum, also wieder von vorne
    			
    			
    			
    			
    			
    			}  
    		}		  
    	}
    }
    Im Prinzip müsste das Infrarot doch richtig sein oder nicht? Weil darauf reagiert er schlichtweg nicht...

    Edit: Auch da ist sowas seltsam: Wenn ich bei der geradeaus-Schleife die Motoren auf 0 stelle fährt der trotzdem...was ist da los?
    Und der dreht sich, egal was ich einstelle einfach nicht weit genug(der Abstandssensor reagiert nur bis 100, das FreieSicht geht nur bis 170). Was könnte ich da tun?

    Denn irgendein Programm brauch ich, auch wenn es nur halb geht.

Seite 6 von 6 ErsteErste ... 456

Ähnliche Themen

  1. Antworten: 10
    Letzter Beitrag: 01.11.2017, 12:53
  2. Antworten: 2
    Letzter Beitrag: 15.06.2011, 21:18
  3. LPC1114 (Cortex M0): "sei()" und "cli()"
    Von Jaecko im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 1
    Letzter Beitrag: 02.07.2010, 12:25
  4. "Soft-Reset?" und "Finger-Interrupt?"
    Von trapperjohn im Forum Asuro
    Antworten: 8
    Letzter Beitrag: 10.06.2008, 23:02
  5. ASM: was machen "swap" und "cbr" genau?
    Von RHS im Forum AVR Hardwarethemen
    Antworten: 3
    Letzter Beitrag: 18.08.2004, 17:16

Berechtigungen

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

Solar Speicher und Akkus Tests