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







Zitieren

Lesezeichen