Code:
$regfile = "m16def.dat"
$crystal = 7372800
Dim A As Byte
Dim B As Byte
Dim C As Byte
Dim Comfeld(12) As Byte
Dim X As Double
Dim Y As Integer
Dim Z As Integer
Dim W As Byte
Dim K As Byte
Dim M As Double
Dim N As Double
Dim Auflosung As Integer
Dim Xstart As Integer
Dim Ystart As Integer
Dim Zstart As Integer
Dim Xziel As Integer
Dim Yziel As Integer
Dim Zziel As Integer
Dim Zwischenwert1 As Double
Dim Zwischenwert2 As Double
Dim Zwischenwert3 As Double
Dim Zwischenwert4 As Double
Dim Zwischenwert5 As Double
Dim Zwischenwert6 As Double
Dim Aa As Single
Dim Bb As Single
Dim Xzwischenziel As Integer
Dim Yzwischenziel As Integer
Dim Zzwischenziel As Integer
Dim Realposx As Integer
Dim Realposy As Integer
Dim Realposz As Integer
Dim Stposx As Integer
Dim Stposy As Integer
Dim Stposz As Integer
Dim Motoraus As Long
Dim Absx As Integer
Dim Absy As Integer
Dim Absz As Integer
Dim Pc1alt As Byte
Dim Pc0alt As Byte
Dim F0 As Bit
Dim F1 As Bit : Dim F2 As Bit : Dim F3 As Bit : Dim F4 As Bit
Dim F5 As Bit : Dim F6 As Bit : Dim F7 As Bit : Dim F8 As Bit
Auflosung = 2
Config Porta = Output
Config Portd = Input
'Config Portd.6 = Output
Config Portc = Input
Config Portb.1 = Input
Config Portb.0 = Output
Realposx = 1
Realposy = 1
Realposz = 1
'Enable
Xziel = 500
Yziel = 50
Porta = 255
Portc = 255
Stposx = 1 'Realposx
Stposy = 1 'Realposy
Stposz = 1 'Realposz
For Aa = 0 To 1 Step 0.2
Bb = Aa - 2
Zwischenwert1 = Stposx * Bb
Zwischenwert2 = Xziel * Aa
Zwischenwert3 = Stposy * Bb
Zwischenwert4 = Yziel * Aa
Zwischenwert5 = Zwischenwert2 - Zwischenwert1 'zwischen punkt erechnungs zeug
Zwischenwert6 = zwischenwert4 - Zwischenwert3
X = Zwischenwert5 / 2 'realpos damit ich immer vom wirklichen wert ausgehe und der fehler nicht größer wird
Y = Zwischenwert6 / 2
' x= realpos-x
'X = 50.5
Motoraus = 0
If X = 0 Then : Porta.0 = 0 : Else : Porta.0 = 1 : End If
Do
If Pinc.0 = 0 Then Pc0alt = 1
If Pinc.0 = 1 And Pc0alt = 1 Then : Pc0alt = 0 : X = X + 1 : Realposx = Realposx + 1 : End If 'pos holen
If Pinc.1 = 0 Then Pc1alt = 1
If Pinc.1 = 1 And Pc1alt = 1 Then : Pc1alt = 0 : X = X - 1 : Realposx = Realposx -1 : End If 'pos holen
If X = 0 Then : Porta.1 = 0 : Else : Porta.1 = 1 : End If
Absx = Abs(x)
If X > 0 Then : Porta.4 = 0 : Porta.5 = 1 : Waitus 50 : End If 'Pos anfahren
If X < 0 Then : Porta.4 = 1 : Porta.5 = 0 : Waitus 50 : End If 'pos anfahre
If Absx < 15 Then : Porta.4 = 0 : Porta.5 = 0 : End If
If X = 0 Then Motoraus = Motoraus + 1
Loop 'Until Motoraus = 9000
Next Aa
Do
Loop
If X = 0 Then : Porta.0 = 0 : Else : Porta.0 = 1 : End If
Daran sehe ich das x=0 ist nagut noch bissel zur funktion es wird mal ne steuerung für ne fräsmaschiene die xzielund yziel .. wird über RS232 gesendet und dann soll die pos angefahren es werden normale lego motoren verwendet und die zwischen punkt erechnung funktioniert halt nich nur in vb
Lesezeichen