-
Diese Rechnungen in der Klammer chr(curr_pos - servo_counter) mag er nicht. das mußt du vorher in einer Variablen ausrechnen.
ABER
mach es nicht so kompliziert:
Code:
dim curr_pos as byte
curr_pos = 127 ' mittelposition am anfang
hauptschleife
...
Sub Rnb_servo(byval Servonummer As Byte , Byval Go_to_pos As Byte)
local schritt as integer
if curr_pos < go_to_pos then
schritt = 1
else
schritt = -1
end if
For curr_pos = Curr_pos To Go_to_pos step schritt
Print "#s" ; Chr(servonummer) ; Chr(curr_pos)
Waitms 10
Next
Je nachdem schritt + oder - ist, geht's rauf oder runter
-
ahhhh !! cool !
Ich hab mich schon gewundert, dass man die for schleife nicht rückwärts zählen lassen kann. anscheinend ist er automatisch auf STEP 1 gestellt. lol
naja danke jedenfalls
-
Fein, wenn ich dir helfen konnte.
ABER
Man sollte keine Statements hinschreiben, bevor man den "help" -text dazu nicht auswendig singen kann. :D
-
Hi hab scho wieder a Problem mit dem Code:
Code:
Sub Rnb_servo(byval Servonummer As Byte , Byval Go_to_pos As Byte)
Local Schritt As Integer
Local Repeat_counter As Integer
If Curr_pos < Go_to_pos Then
Schritt = 1
Else
Schritt = -1
End If
For Curr_pos = Curr_pos To Go_to_pos Step Schritt
Open "comd.7:9600,8,n,1" For Output As #2
Print #2 , "#s" ; Chr(servonummer) ; Chr(curr_pos)
Close #2
Print Curr_pos
Waitms 10
Next
End Sub
Ich kann für die Variable Go_to_pos nur werte zwischen 1 und 254 eingeben. Is da irgendwo a Denkfehler drin, den ich net find? Man, ich auch gar nix richtig :(
-
Hallo,
ja da ist ein Denkfehler drin:
du hast deine Variable Go_to_pos als Byte definiert, ein Byte hat nur 8 bit, also kann es 2^8=256 verschiedene Zahlen darstellen. Schau mal in der Bascom Hilfe unter "Language Fundamentals", dort steht wie groß die einzelnen Variablen sind.
Gruß
Florian
-
Was? Go_to_pos soll doch auch nur von 0 bis 255 gehen. Sie gibt die gewünschte Position des Servos an und die kann ja auch nur zwischen 0 und 255 sein. Kapier ich net.