es geht hab zwar immer noch meine schwierig keiten mit den datentypen aber es geht hier der code der ist jetzt so gemacht das ich in der einen for next schleicf nicht merh +0.1 mach sondern nur noch ganzahlige wert sodas alles keine gleit kommas mehr brauch wer noch paar optimierungs vorschläge machen kann und will die mir nicht das ganze programm auf den kopfstelle.
Code:
$regfile = "m16def.dat"
$crystal = 7372800
Dim A As Double
Dim B As Double
Dim C As Double
Dim Comfeld(12) As Byte
Dim X As Long
Dim Y As Long
Dim Z As Double
Dim W As Double
Dim K As Double
Dim M As Double
Dim N As Double
Dim Auflosung As Long
Dim Xstart As Long
Dim Ystart As Long
Dim Zstart As Long
Dim Xziel As Long
Dim Yziel As Long
Dim Zziel As Long
Dim Zwischenwert1 As Long
Dim Zwischenwert2 As Long
Dim Zwischenwert3 As Long
Dim Zwischenwert4 As Long
Dim Zwischenwert5 As Long
Dim Zwischenwert6 As Long
Dim Aa As Long
Dim Bb As Long
Dim Xzwischenziel As Double
Dim Yzwischenziel As Double
Dim Zzwischenziel As Double
Dim Realposx As Long
Dim Realposy As Long
Dim Realposz As Long
Dim Stposx As Long
Dim Stposy As Long
Dim Stposz As Long
Dim Motoraus As Long
Dim Absx As Long
Dim Absy As Long
Dim Absz As Long
Dim Pc1alt As Long
Dim Pc0alt As Long
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 = 120 '10 umdreungen
Yziel = 30
Porta = 255
Portc = 255
Stposx = 1 'Realposx
Stposy = 1 'Realposy
Stposz = 1 'Realposz
For Aa = 0 To 20 Step 5
Bb = Aa - 20
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 = X / 10
Y = Y / 10
'X = 50.5
Motoraus = 0
'X = Int(x)
X = X - Realposx
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 = X '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 = 1000 'sicher gehen das der motor wirklich steht und keinen schwung mehr hat
Next Aa
Do
Loop
Lesezeichen