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