Danke für die Links, oberallgeier.

Ich habe mich jetzt dazu entschieden, den Sensor auf dem Servo immer auf 0 (100) zu stellen. Sobald der Sensor aber etwas "sieht", soll der Roboter stehen bleiben, auf beide seiten den Servo schwenken (50-150), zwei messerte nehmen, und beide vergleichen, bei dem der weniger hoch ist, soll der Roboter hinfahren. Also quazi soll der Roboter den "Besten Weg" finden. Ich weiss, die Sensoren sind nur auf 30cm ausgelegt, trotzdem soll es dem Roboter helfen, sich nicht in eine Ecke zu verfahren.

Ich habe das Programm geschriben . Jedoch funktioniert das mit dem Servo noch nicht so ganz. Es schlägt nur auf eine Seite aus.

Der Sensor ist bei der Servoposition "100" nach gerade aus gerichtet.

Könntest du mal bitte kruz drüber schauen? *Keks gib*

Code:
$regfile "m16def.dat"
$crystal = 16000000
$baud = 9600
$swstack = 16
$hwstack = 16
$framesize = 16

Dim A As Word
Dim B As Word
Dim C As Word
Dim X As Word
Dim Y As Word
Dim Z As Word

Config Portd.4 = Output
Config Portd.5 = Output
Config Porta.4 = Output
Config Porta.5 = Output
Config Porta.6 = Output
Config Portc.7 = Output
Config Portc.6 = Output
Config Portc.5 = Output
Config Portb.2 = Output

M1 Alias Porta.5
M2 Alias Porta.6
M3 Alias Portc.6
M4 Alias Portc.5

Config Servos = 1 , Servo1 = Portb.2 , Reload = 10
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1

Enable Interrupts

Servo(1) = 100
Wait 1

Do

Pwm1a = 64
Pwm1b = 64

A = Getadc(1)
B = Getadc(2)
C = Getadc(3)

If A > 250 Then
Gosub Brems
Waitms 500
Gosub Rueck
Waitms 200
Gosub Rueckr
Waitms 400
Else
Gosub Vor
End If

If B > 250 Then
Gosub Brems
Waitms 500
Gosub Way
Gosub Rueck
Waitms 200
Gosub Rueckl
Waitms 400
Else
Gosub Vor
End If


If C > 250 Then
Gosub Brems
Waitms 500
Gosub Rueck
Waitms 200
Gosub Rueckr
Waitms 400
Else
Gosub Vor
End If

Waitms 40


Vor:
M1 = 0
M2 = 1
M3 = 0
M4 = 1
Return

Rueck:
M1 = 1
M2 = 0
M3 = 1
M4 = 0
Return

Brems:
M1 = 1
M2 = 1
M3 = 1
M4 = 1
Return

Rueckr:
M1 = 1
M2 = 0
M3 = 0
M4 = 0
Return

Rueckl:
M1 = 0
M2 = 0
M3 = 1
M4 = 0
Return

Vorr:
M1 = 0
M2 = 1
M3 = 0
M4 = 0
Return

Vorl:
M1 = 0
M2 = 0
M3 = 0
M4 = 1
Return

Way:
Servo(1) = 100
Waitms 100
X = Getadc(2)
Waitms 100
Servo(1) = 150
Y = Getadc(2)
Waitms 100
Servo(1) = 50
Waitms 300
Z = Getadc(2)
Waitms 100

If Y > Z Then
Gosub Rueckr
Waitms 500
Gosub Brems
Waitms 300
Gosub Vor
End If

If Y < Z Then
Gosub Rueckl
Waitms 500
Gosub Brems
Waitms 300
Gosub Vor
End If

Loop


Mfg JeyBee