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 Double Dim Y As Double Dim Z As Double Dim W As Double Dim K As Double Dim M As Double Dim N As Double Dim Auflosung As Double Dim Xstart As Integer Dim Ystart As Integer Dim Zstart As Integer Dim Xziel As Double Dim Yziel As Double Dim Zziel As Double 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 Double Dim Bb As Double Dim Xzwischenziel As Double Dim Yzwischenziel As Double Dim Zzwischenziel As Double Dim Realposx As Integer Dim Realposy As Integer Dim Realposz As Integer Dim Stposx As Double Dim Stposy As Double Dim Stposz As Double Dim Motoraus As Double Dim Absx As Double Dim Absy As Double Dim Absz As Double Dim Pc1alt As Double Dim Pc0alt As Double 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 = 300 '10 umdreungen Yziel = 30 Porta = 255 Portc = 255 Stposx = 1 'Realposx Stposy = 1 'Realposy Stposz = 1 'Realposz For Aa = 0 To 2 Step 0.1 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 = 50.5 Motoraus = 0 X = Int(x) X = X - Realpos If X = 0 Then : Porta.0 = 0 : Else : Porta.0 = 1 : End If 'test ob x null ist 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 = 1000 'sicher gehen das der motor wirklich steht und keinen schwung mehr hat Next Aa Do Loop
das ist er gestern ging garnichts der test ob x null ist war positiv die led leuchtete jetzt gehts nur das der motor ein paar um drehungen mehr macht (schätze 10* soviele) noch was pinc0 bekommt die impulse der geberscheibe wenn der motor sich nach rechts dreht und pinc1 wenn er sich nach links dreht also die geber scheibe und die lichschranken haben auch noch eine logik die geht aber 100%ig
Lesezeichen