Hi Jungs,
ich hab die Variablentypen angeglichen und jetzt läufts. Nur leider erschien ein neues Problem:
Code:
$crystal = 8000000
$baud = 9600
Declare Sub Servo_move(byval Servo As Integer , Byval Servo_goto_pos As Integer)
$crystal = 8000000 'Quarzfrequenz
Dim Shoulder_curr_pos As Integer
Shoulder_curr_pos = 127
Dim Elbow_curr_pos As Integer
Elbow_curr_pos = 127
Hauptschleife:
Wait 2
Call Servo_move(1 , 255)
Wait 2
Call Servo_move(1 , 0)
Goto Hauptschleife
Sub Servo_move(byval Servo As Integer , Byval Servo_goto_pos As Integer)
Local Schritt As Integer
If Servo = 0 Then 'Schulter bewegen
If Shoulder_curr_pos < Servo_goto_pos Then
Schritt = 1
Elseif Shoulder_curr_pos > Servo_goto_pos Then
Schritt = -1
Elseif Shoulder_curr_pos = Servo_goto_pos Then
Exit Sub
End If
Open "comd.7:9600,8,n,1" For Output As #2
For Shoulder_curr_pos = Shoulder_curr_pos To Servo_goto_pos Step Schritt
Print #2 , "#s" ; Chr(1) ; Chr(shoulder_curr_pos)
Print #2 , "#s" ; Chr(2) ; Chr(shoulder_curr_pos)
Next Shoulder_curr_pos
Close #2
Shoulder_curr_pos = Servo_goto_pos
End If
If Servo = 1 Then 'Ellbogen bewegen
If Elbow_curr_pos < Servo_goto_pos Then
Schritt = 1
Elseif Elbow_curr_pos > Servo_goto_pos Then
Schritt = -1
Elseif Elbow_curr_pos = Servo_goto_pos Then
Exit Sub
End If
Open "comd.7:9600,8,n,1" For Output As #2
For Elbow_curr_pos = Elbow_curr_pos To Servo_goto_pos Step Schritt
Print #2 , "#s" ; Chr(3) ; Chr(elbow_curr_pos)
Print "CURR: " ; Elbow_curr_pos ; " GOTO: " ; Servo_goto_pos
Next Elbow_curr_pos
Close #2
Elbow_curr_pos = Servo_goto_pos
End If
End Sub
End
Der Code für Servo = 1 ist eigenlich 1:1 kopiert aus dem Servo=0-Teil aber er funktionert nicht. Ich hab per Terminal überprüft ob er wirklich in die For-Schleife rein geht und er tut es. Elbow_curr_pos wird vergrößert, definitiv. Anscheinend passiert dann bei
Print #2 , "#s" ; Chr(3) ; Chr(elbow_curr_pos)
gar nichts. Ich hab den Servo 100%ig am 3. Servoanschluss angeschlossen !!! Das komische ist, wenn ich das hier
Code:
Open "comd.7:9600,8,n,1" For Output As #2
For I = 127 To 255 Step 1
Print #2 , "#s" ; Chr(3) ; Chr(i)
Next I
Close #2
direkt in die Haupschleife einbaue, dann bewegt er sich wie er soll. Ich bin ratlos.
EDIT: "funktioniert nicht" bedeutet er bewegt sich keinen Millimeter.
mfg
jagdfalke [/shadow]
Lesezeichen