Ja richtig, wenn ich den Joystick nach links drücke soll sich motor 1 nach links drehen - wenn ich den Js weit nach links drücke soll sich motor 1 schneller nach links drehen (das gleiche rechts)

wenn den joystick nach oben drücke soll sich motor 2 nach links drehen,
entsprechend weitwer nach oben drücken - schneller

einzelnt ( also nur eine achse vom joystick benutzen) funktioniert es mit dem code ^^^ schon

----

die wait ms benutze ich momentan folgend:

eine motor umdrehung besteht aus 4 schritten
zwischen jedem schritt wartet der motor kurz (A für Motor 1 B für Motor 2)

umsoweiter ich den joystick in eine richtung bewege -> umsokleiner wird die anzahl der sekunden der wartephase -> umsoschneller dreht der motor

Jeder motor ( x achse / y achse ) müsste in einem selbständigen loop, parallel zum anderen, laufen, damit nicht die wartezeit von motor 1 die wartezeit von motor 2 beinflusst


Momentan sieht es so aus:

Do

Motor x dreht sich
Wartet A sekunden (durch den potie der x achse vom joystick errechnet)

Motor y dreht sich
Wartet B sekunden ( durch den potie der y achse vom joystick errechnet)

Loop

das heißt, dass nach dem warten von motor x sich erst motor y dreht, dann die wartezeit von motor y kommt und sich erst dann wieder motor x dreht -> warte zeit x -> motory -> wartezeit y -> ....

Es muss aber so aussehen:

motor x dreht
wartet A
motor x dreht
wartet A
motor x dreht
wartet A
motor x dreht
wartet A


und NEBENHER

motor y dreht
wartet B
motor y dreht
wartet B
motor y dreht
wartet B
motor y dreht
wartet B
motor y dreht
wartet B
motor y dreht
wartet B

und während das passiert muss auch noch ständig die potiestellung des joysticks ausgelesen werden und dann aus den gewonnen werten die neu wartezeit A, B errechnet werden

^----------
hehe, also ich hoffe es ist jetzt klarer > besser kann ich es nicht erklären...

vielleicht ist mein ansatz auch schon total falsch!?

2 Schrittmotoren müssen sich in stufenlosen geschwindigkeiten in beide richtungen drehen lassen:

Der Joystick liefert in nullstellung folgende werte:
X-Achse: 560
Y-Achse: 560

Der erste Vollauschlag der Achse
X-Achse: 330
Y-Achse: 330

Der andere Vollausschlag der Achse
X-Achse: 1023
Y-Achse: 1023

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)                                       ' Der X-Achsen Wert des Joysticks wird ausgelesen (Die Nullstellungs Wert [sollte zwischen 500 und 600 liegen])
Start Adc
Ystandart = Getadc(0)                                       ' Der Y-Achsen ...^^


Xtime = 0                                                   ' (eine Umdrehung Des Motors Besteht Aus Vier Schritten - Variable Dient Dazu , Zu Wissen Welcher Schritt Gerade Dran Ist)
Ytime = 0                                                   ' ^^
Minmove =                                                   '21 Die Minimal Wert , Bei Dem Sich Der Motor Anfängt Zu Drehen(um Die Nullstellung Des Joysticks Zu Vergrössern)
A = 1
B = 1
Do
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Start Adc
Xwert = Getadc(1)                                           ' X Potie wird gelesen (je nach stellung 330 -> 1023)

If Xwert < Xstandart Then                                   'wenn der gelesene wert kleiner als die nullstellung ist (also der joystick nach links gedrückt wurde)
   A = Xstandart - Xwert
   A = 160 - A
   A = A / 10
   Xdirectionf = 1                                          'hier wird die drehrichtung festgelegt (da in A nur die wartezeit (nicht die richtung) geschrieben wird)
   If A < 1 Then                                            'damit die anzahl die milisekunden nicht unter 1 geht (der motor kann nicht schneller drehen als einen schritt pro ms)
      A = 1
   End If
Elseif Xwert > Xstandart Then                               'wenn der gelesene wert größer als die nullstellung ist (also nach rechts)
   A = Xwert - Xstandart
   A = 250 - A
   A = A / 10
   Xdirectionf = 0                                          ' ^^
   If A < 1 Then                                            'damit die anzahl die milisekunden nicht unter 1 geht (der motor kann nicht schneller drehen als einen schritt pro ms)
         A = 1
   End If
End If
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
'YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
Start Adc
Ywert = Getadc(0)

If Ywert < Ystandart Then                                   'wenn der gelesene wert kleiner als ns -> joystick nach oben
   B = Ystandart - Ywert
   B = 140 - B
   B = B / 10
   Ydirectionf = 1                                          '^^
   If B < 1 Then                                            'damit die anzahl die milisekunden nicht unter 1 geht (der motor kann nicht schneller drehen als einen schritt pro ms)
      B = 1
   End If
'#############################
'Durch Diese Rechnung ^ ^ ^ Wird Bei Allen Joystick Ausschlägen(potie 330 Bis 1023
'Eine Anzahl von milisekunden errechnet:
'bei joystick nullstellung ca 30 ms
'bei joystick vollausschlag 1 ms
'damit der motor sich in nullstellung nicht auch schon (auch wenn sehr langsam) dreht
'habe ich die minmove variable die weiter unten abgefragt wird
'#############################
Elseif Ywert > Ystandart Then                               'wenn der gelesene wert größer als ns --> joystick nach unten
   B = Ywert - Ystandart
   B = 300 - B
   B = B / 10
   Ydirectionf = 0                                          '^^
   If B < 1 Then                                            'damit die anzahl die milisekunden nicht unter 1 geht (der motor kann nicht schneller drehen als einen schritt pro ms)
         B = 1
   End If
End If
'YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
'XXXXX --- MOVE --- XXXXXXXXXXXXXX
If A < Minmove Then                                         'wenn der A wert kleiner ist als die minmove variable dann dreht sich der motor:

   If Xdirectionf = 1 Then                                  'wenn die richtung = 1 ist : folgen die ausgänge für den motor sich links zu drehen

      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                                                     'wenn die richtung = 0 ist : folgen die ausgänge für den motor sich rechts zu drehen

      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