-
        

Ergebnis 1 bis 3 von 3

Thema: Hindernissen Ausweichen -> Fehlfunktion

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    10.02.2007
    Ort
    Brig-Glis
    Alter
    24
    Beiträge
    277

    Hindernissen Ausweichen -> Fehlfunktion

    Anzeige

    Hallo Leute,

    Ich habe soeben meinen ersten Roboter zusammen gebastelt. Ich möchte als erstes nur schauen, dass der Roboter nirgens hinein fährt. Dazu habe ich drei Sharp Infrarot Sensoren an der Fron befestig. Einer gerade aus und je einer links und recht in einem 30° Winkel (schätzungsweise).

    Ich habe das Programm im Anhang, welches ich geschriben habe. Ich habe es geflash und gleich ausprobiert. Ich freute mich tierisch, als ich merkte, dass es direkt funktionierte. Jedoch hielt die Freude nicht lange. Sobal der Roboter zwei bis drei Hindernissen ausgewichen ist, spielt er komplett verrückt. er denkt, dass es nur noch Hindernisse gibt und fährt rückwärts Kurven. Wenn ich den Bot resete, geht das Spiel wieder von Vorne los.

    Als Info: M1-M4 sind die Ausgänge für die zwei Motoren, ich verwende das L293D IC.
    A-C sind die drei Sensoren (A rechts, B mitte, C links)

    Ich hoffe ihr könnt mir helfen, ich konnte den Fehler bisslang nicht finden.

    Hier das Programm:

    Code:
    $regfile "m16def.dat"
    $crystal = 16000000
    
    Dim A As Word
    Dim B As Word
    Dim C As Word
    
    Config Porta.4 = Output
    Config Porta.5 = Output
    Config Porta.6 = Output
    Config Portc.7 = Output
    Config Portc.6 = Output
    Config Portc.5 = Output
    
    M1 Alias Porta.5
    M2 Alias Porta.6
    M3 Alias Portc.6
    M4 Alias Portc.5
    
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    Start Adc
    
    Do
    
    Porta.4 = 1
    Portc.7 = 1
    
    A = Getadc(1)
    B = Getadc(2)
    C = Getadc(3)
    
    
    If A > 150 Then
    M1 = 1
    M2 = 1
    M3 = 1
    M4 = 1
    Waitms 500
    M1 = 0
    M2 = 1
    M3 = 0
    M4 = 0
    Wait 1
    Else
    M1 = 0
    M2 = 1
    M3 = 0
    M4 = 1
    End If
    
    If B > 200 Then
    M1 = 1
    M2 = 1
    M3 = 1
    M4 = 1
    Waitms 500
    M1 = 1
    M2 = 0
    M3 = 0
    M4 = 0
    Wait 1
    Else
    M1 = 0
    M2 = 1
    M3 = 0
    M4 = 1
    End If
    
    If C > 200 Then
    M1 = 1
    M2 = 1
    M3 = 1
    M4 = 1
    Waitms 500
    M1 = 0
    M2 = 0
    M3 = 1
    M4 = 0
    Wait 1
    Else
    M1 = 0
    M2 = 1
    M3 = 0
    M4 = 1
    End If
    
    Loop

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    07.11.2008
    Alter
    22
    Beiträge
    47
    In welcher Sprache ist denn das Programm geschrieben????? Die kenn ich gar nich. Und was für einen Roboter hast du denn?

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.08.2008
    Ort
    DE
    Beiträge
    523
    Hallo,
    ich weiß jetzt nicht genau wie deine Leitungen am L293 angeschlossen sind, wodurch die Fahrtrichtung nicht genau zu bestimmen ist. Aber versuch mal am Anfang der Do-Schleife M1,M2,... wieder auf Vorwärts zu setzen.

    mfg

Berechtigungen

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