-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 19

Thema: Servo

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2004
    Ort
    Aschbach
    Alter
    29
    Beiträge
    223

    Servo

    Anzeige

    Ich habe diese Programm geschrieben, und daran drei verschiedene Conrad 5 Euro Servos angeschlossen, jedoch drehen alle drei Servos nach rechts und machen dann gar nichts mehr . Könnt ihr mir helfen hab keine Ahnung was sein könnte.


    Mfg
    Sven
    Code:
    Config Servos = 1 , Servo1 = Portb.0 , Reload = 10
    Config Portb = Output
    Servo(1) = 10                                               
    
    Do
    Loop
    
    Dim I As Byte
     Print "Mittelstellung"
     Servo(1) = 48
     Wait 1
    
     Servo(1) = 48                                              'servo nach ganz links fahren
    
     Wait 1
    
    
     Print "Rechtsdrehung"
    
     For I = 48 To 172 Step 10
     Servo(1) = I
     Waitms 10
    
    
     Next
     Wait 1
    
     Print "linksdrehung"
     For I = 172 To 48 Step -10
     Servo(1) = I
     Waitms 10
     Next
    
     Wait 1
     Print "mittelstellung"
     Servo(1) = 108
    + Codetags (PicNick)

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Du hast "I" als Byte definiert, da gibt's kein Vorzeichen. deshalb geht wohl die For schleife zum runterzählen nicht. (Step -10)
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2004
    Ort
    Aschbach
    Alter
    29
    Beiträge
    223
    Hi PicNick,

    was würdest du sagen was am besten für I ist zum definieren, dass sich die Servos wieder drehen:

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    DIM i as integer
    das sollte eigentlich klappen
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    25.02.2005
    Beiträge
    175
    Hi,

    das Bascom-Beispiel für die Servos verwendet auch ein Byte in den Zählschleifen, und warum sollte man von einem Byte nicht subtrahieren können?

    Könnte das Verhalten möglicherweise etwas damit zu tun haben, dass Startwert, Endwert und Step nicht zusammenpassen und somit die Abbruchbedingung der For-Next-Schleife nicht erreicht wird?

    48 + (n*10) wird nämlich niemals 172 und 172 - (n*10) nicht 48... [-X

    Versuchs doch mal mit Step 1 bzw. Step-1 oder gleiche Start-, Step- und Endwert so aufeinander ab, dass die Sache genau aufgeht.

    Viele Grüße

    Torsten

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2004
    Ort
    Aschbach
    Alter
    29
    Beiträge
    223
    HI Leute,
    danke für eure Hilfe, ich hab das Byte auf Integer geändert und als step 1 genommen, jedoch drehen die Servos, die ich an Portb.0 angeschlossen hab immer noch nach rechts und geht nicht weiter wieder nach links oder in die Mittelsatellung.
    Habt ihr noch andere Ideen an was es liegen könnte.


    Mfg
    Sven

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    25.02.2005
    Beiträge
    175
    Hi,

    laufen denn die ganzen Schleifen abwechselnd durch oder hängt das Programm irgendwo?

    Kommen die ganzen Print-Befehle raus?

    Programmier doch mal ein "Print I" in jede Schleife und erhöhe waitms auf 500, damit es im Terminal nicht rast wie dolle.
    Oder alternativ, toggle einen Port mit LED, damit Du weisst, ob die Schleife hängt oder nicht.

    Du kannst Dir auch ein einfaches Testrogramm schreiben:

    Code:
    Do
    
    Servo(1) = 108
    
    wait 2
    
    Servo(1) = 172
    
    wait 2
    
    Servo(1) = 108
    
    wait 2
    
    Servo(1)= 48
    
    wait 2
    
    
    loop

    Und schließ doch erstmal nur EIN Servo an B.0 an, nicht gleich alle drei.

    Grüße

    Torsten

    Edit:

    Och nööö... ist ja nicht wahr, grade gesehen in Deinem geposteten Code:
    ...
    Config Servos = 1 , Servo1 = Portb.0 , Reload = 10
    Config Portb = Output


    Servo(1) = 10

    Do
    Loop


    Dim I As Byte
    Print "Mittelstellung"
    Servo(1) = 48
    Wait 1
    ...

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2004
    Ort
    Aschbach
    Alter
    29
    Beiträge
    223
    HI Torsten,
    ich hab immer nur einen an Portb.0 hab nur als getauscht ob vielleicht einer kaputt ist. Ich bekommen kein Printbefehl an´gezeigt, der servo dreht sich von links nach rechts und dann macht er nix mehr..

  9. #9

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2004
    Ort
    Aschbach
    Alter
    29
    Beiträge
    223
    Vielen Dank Leute,

    nachdem ich do und loop entfernt hab funktioniert das Ganze jetzt.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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