Ich verdeutliche das ganze nochmal mit meinem code:
Code:
$crystal = 6000000
Config Portb = Output
Config Portc = Input
Config Portd = Output
Config Portd.6 = Input
Config Portd.7 = Input
Config Adc = Single , Prescaler = Auto
Dim Xstandart As Integer
Dim Ystandart As Integer
Dim Xwert As Integer
Dim Ywert As Integer
Dim A As Integer
Dim B As Integer
Dim Minmove As Integer
Dim Xdirectionf As Integer
Dim Ydirectionf As Integer
Dim Xtime As Integer
Dim Ytime As Integer
Start Adc
Xstandart = Getadc(1)
Start Adc
Ystandart = Getadc(0)
Xtime = 0
Ytime = 0
Minmove = 21
A = 1
B = 1
Do
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Start Adc
Xwert = Getadc(1)
If Xwert < Xstandart Then
A = Xstandart - Xwert
A = 160 - A
A = A / 10
Xdirectionf = 1
If A < 1 Then
A = 1
End If
Elseif Xwert > Xstandart Then
A = Xwert - Xstandart
A = 250 - A
A = A / 10
Xdirectionf = 0
If A < 1 Then
A = 1
End If
End If
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
'YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
Start Adc
Ywert = Getadc(0)
If Ywert < Ystandart Then
B = Ystandart - Ywert
B = 140 - B
B = B / 10
Ydirectionf = 1
If B < 1 Then
B = 1
End If
Elseif Ywert > Ystandart Then
B = Ywert - Ystandart
B = 300 - B
B = B / 10
Ydirectionf = 0
If B < 1 Then
B = 1
End If
End If
'YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
'XXXXX --- MOVE --- XXXXXXXXXXXXXX
If A < Minmove Then
If Xdirectionf = 1 Then
Xtime = Xtime + 1
If Xtime = 5 Then
Xtime = 1
End If
If Xtime = 1 Then
Portb.0 = 1
Portb.1 = 0
Portb.2 = 1
Portb.3 = 0
Elseif Xtime = 2 Then
Portb.0 = 1
Portb.1 = 0
Portb.2 = 0
Portb.3 = 1
Elseif Xtime = 3 Then
Portb.0 = 0
Portb.1 = 1
Portb.2 = 0
Portb.3 = 1
Elseif Xtime = 4 Then
Portb.0 = 0
Portb.1 = 1
Portb.2 = 1
Portb.3 = 0
End If
Else
Xtime = Xtime + 1
If Xtime = 5 Then
Xtime = 1
End If
If Xtime = 1 Then
Portb.0 = 1
Portb.1 = 0
Portb.2 = 1
Portb.3 = 0
Elseif Xtime = 2 Then
Portb.0 = 0
Portb.1 = 1
Portb.2 = 1
Portb.3 = 0
Elseif Xtime = 3 Then
Portb.0 = 0
Portb.1 = 1
Portb.2 = 0
Portb.3 = 1
Elseif Xtime = 4 Then
Portb.0 = 1
Portb.1 = 0
Portb.2 = 0
Portb.3 = 1
End If
End If
Waitms A '<<<< PROBLEM! B + A vvv = Für beide Motoren die gleiche, zu lange wartezeit
End If
'XXXXX --- MOVE --- XXXXXXXXXXXXXX
'YYYYY --- MOVE --- YYYYYYYYYYYYYY
If B < Minmove Then
If Ydirectionf = 1 Then
Ytime = Ytime + 1
If Ytime = 5 Then
Ytime = 1
End If
If Ytime = 1 Then
Portd.0 = 1
Portd.1 = 0
Portd.2 = 1
Portd.3 = 0
Elseif Ytime = 2 Then
Portd.0 = 1
Portd.1 = 0
Portd.2 = 0
Portd.3 = 1
Elseif Ytime = 3 Then
Portd.0 = 0
Portd.1 = 1
Portd.2 = 0
Portd.3 = 1
Elseif Ytime = 4 Then
Portd.0 = 0
Portd.1 = 1
Portd.2 = 1
Portd.3 = 0
End If
Else
Ytime = Ytime + 1
If Ytime = 5 Then
Ytime = 1
End If
If Ytime = 1 Then
Portd.0 = 1
Portd.1 = 0
Portd.2 = 1
Portd.3 = 0
Elseif Ytime = 2 Then
Portd.0 = 0
Portd.1 = 1
Portd.2 = 1
Portd.3 = 0
Elseif Ytime = 3 Then
Portd.0 = 0
Portd.1 = 1
Portd.2 = 0
Portd.3 = 1
Elseif Ytime = 4 Then
Portd.0 = 1
Portd.1 = 0
Portd.2 = 0
Portd.3 = 1
End If
End If
Waitms B '<<<< PROBLEM! B + A^^^= Für beide Motoren die gleiche, zu lange wartezeit
End If
'YYYYY --- MOVE --- YYYYYYYYYYYYYY
Loop
Lesezeichen