- 12V Akku mit 280 Ah bauen         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: Servoposition herausfinden?

  1. #11
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Anzeige

    Powerstation Test
    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
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  2. #12
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    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

  3. #13
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Fein, wenn ich dir helfen konnte.
    ABER
    Man sollte keine Statements hinschreiben, bevor man den "help" -text dazu nicht auswendig singen kann.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  4. #14
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    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

  5. #15
    Benutzer Stammmitglied
    Registriert seit
    09.05.2005
    Beiträge
    35
    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

  6. #16
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    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.

Seite 2 von 2 ErsteErste 12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test