-         

Ergebnis 1 bis 2 von 2

Thema: 5 Achs Joystick Servos Steuern

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.02.2010
    Ort
    Osdorf
    Alter
    22
    Beiträge
    127

    5 Achs Joystick Servos Steuern

    Anzeige

    Hallo ich habe grad das Programm in SD so weit fertig das es mir alle Achsen ausgibt. Jetzt muss ich mein Atmega "nur" noch dazu bringen die Position der Achsen als Servosignal auszugeben (1000-2000). Ich hab es im SD Code so gemacht das der niedrigste Wert 1000 ist und der höchste 2000. Die Servo Funktion in Bascom geht aber nur von 0-255. Wie schaffe ich es jetzt das mein Atmega die Werte 1000-2000 ausgibt. Oder macht er das schon nur unter Bascom wird es anders angegeben ? Ich hab irgendwo gelesen das der Reload wert der Multiplikator für den Servo wert is den man angibt. Aber wenn der Multiplikator auf 10 steht sind das bei Null Null und bei 255 2500. Im Moment sieht es bei mir so aus Ich habe den Reload wert auf 1 = Multiplikator 1 des Servowertes. Die Werte werden direkt vom Joystick übernommen. Jetzt zappeln die Servos aber nur hin und her und reagieren garnicht. Das gleiche habe ich auch wenn ich den Reload Wert auf 10 setzte und SD die Werte 0-255 ausgibt. Was mach ich falsch
    Gruß Tjark
    Code:
    $regfile = "m32def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    $crystal = 16000000
    $baud = 9600
    
    
    Config Servos = 4 , Servo1 = Porta.2 , Servo2 = Porta.3 , Servo3 = Porta.4 , Servo4 = Porta.5 , Reload = 1
    Config Porta.2 = Output
    Config Porta.3 = Output
    Config Porta.4 = Output
    Config Porta.5 = Output
    Enable Interrupts
    
    
    
    
    'Config Serialin = Buffered , Size = 20     ' Je nachdem wie komplex der Rest eures Programms ist
    'Enable Interrupts                          ' kann es nötig sein einen Buffer einzurichten.
    
    
    Dim Inputstring As String * 5
    Dim Data_available As Byte
    '----X-----------------------------------
    Dim Joystick_x_wert_string As String * 5
    Dim Joystick_x_wert_integer As Integer
    Dim X_empfangen As Byte
    '----Y-----------------------------------
    Dim Joystick_y_wert_string As String * 5
    Dim Joystick_y_wert_integer As Integer
    Dim Y_empfangen As Byte
    '----Z-----------------------------------
    Dim Joystick_z_wert_string As String * 5
    Dim Joystick_z_wert_integer As Integer
    Dim Z_empfangen As Byte
    '----Z-Rotation--------------------------
    Dim Joystick_rz_wert_string As String * 5
    Dim Joystick_rz_wert_integer As Integer
    Dim Rz_empfangen As Byte
    
    
    Do
      Data_available = Ischarwaiting()
      If Data_available > 0 Then                                'wenn Daten da sind, dann...
        Input "" , Inputstring
        X_empfangen = Instr(inputstring , "X")                  'Gibt die Position des Substrings "X" aus oder null wenn nicht gefunden
        Y_empfangen = Instr(inputstring , "Y")                  'Gibt die Position des Substrings "Y" aus oder null wenn nicht gefunden
        Z_empfangen = Instr(inputstring , "Z")                  'Gibt die Position des Substrings "Z" aus oder null wenn nicht gefunden
       Rz_empfangen = Instr(inputstring , "Rz")                 'Gibt die Position des Substrings "Z-Rotation" aus oder null wenn nicht gefunden
    
    
    '----X-----------------------------------
        If X_empfangen = 1 Then
           Joystick_x_wert_string = Mid(inputstring , 2)        'die erste Stelle des Strings (das "X") abscheiden
           Joystick_x_wert_integer = Val(joystick_x_wert_string)       'string in integer konvertieren
        End If
    
    
    '----Y-----------------------------------
        If Y_empfangen = 1 Then
           Joystick_y_wert_string = Mid(inputstring , 2)        'die erste Stelle des Strings (das "Y") abscheiden
           Joystick_y_wert_integer = Val(joystick_y_wert_string)       'string in integer konvertieren
        End If
    
    
    '----Z-----------------------------------
         If Z_empfangen = 1 Then
           Joystick_z_wert_string = Mid(inputstring , 2)        'die erste Stelle des Strings (das "Z") abscheiden
           Joystick_z_wert_integer = Val(joystick_y_wert_string)       'string in integer konvertieren
        End If
    
    
    '----Z-Rotation--------------------------
        If Rz_empfangen = 1 Then
           Joystick_rz_wert_string = Mid(inputstring , 2)       'die erste Stelle des Strings (das "Rz") abscheiden
           Joystick_rz_wert_integer = Val(joystick_y_wert_string)       'string in integer konvertieren
        End If
      End If
    
    
    Servo(1) = Joystick_x_wert_string
    Servo(2) = Joystick_y_wert_string
    Servo(3) = Joystick_z_wert_string
    Servo(4) = Joystick_rz_wert_string
    Loop

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.02.2010
    Ort
    Osdorf
    Alter
    22
    Beiträge
    127
    So habs jetz soweit das ich einen Servo ansteuern kann anstatt
    Code:
    Servo(1) = Joystick_x_wert_string
    musste ich
    Code:
    Servo(1) = Joystick_x_wert_integer
    nehmen Ich habe in SD den Min. Achsenwert mit 35 festgelegt und den Max. Wert mit 175. Das wird direkt in der Servo Funktion von Bascom als wert genommen. Das Problem ist nur das wenn er nichts empfängt den Wert auf 0 setzt und somit der Servo unkontrolliert ausschlägt weil er mal ein Signal bekommt zb. 120 und denn wieder 0 Wie kann ich das im Programm ändern ? Hier der Teil:
    Gruß Tjark
    Code:
    Do
      Data_available = Ischarwaiting()
      If Data_available > 0 Then                                'wenn Daten da sind, dann...
        Input "" , Inputstring
        X_empfangen = Instr(inputstring , "X")                  'Gibt die Position des Substrings "X" aus oder null wenn nicht gefunden
        Y_empfangen = Instr(inputstring , "Y")                  'Gibt die Position des Substrings "Y" aus oder null wenn nicht gefunden
        Z_empfangen = Instr(inputstring , "Z")                  'Gibt die Position des Substrings "Z" aus oder null wenn nicht gefunden
       Rz_empfangen = Instr(inputstring , "Rz")                 'Gibt die Position des Substrings "Z-Rotation" aus oder null wenn nicht gefunden
    
    
    '----X-----------------------------------
        If X_empfangen = 1 Then
           Joystick_x_wert_string = Mid(inputstring , 2)        'die erste Stelle des Strings (das "X") abscheiden
           Joystick_x_wert_integer = Val(joystick_x_wert_string)       'string in integer konvertieren
        End If
    
    
    '----Y-----------------------------------
        If Y_empfangen = 1 Then
           Joystick_y_wert_string = Mid(inputstring , 2)        'die erste Stelle des Strings (das "Y") abscheiden
           Joystick_y_wert_integer = Val(joystick_y_wert_string)       'string in integer konvertieren
        End If
    
    
    '----Z-----------------------------------
         If Z_empfangen = 1 Then
           Joystick_z_wert_string = Mid(inputstring , 2)        'die erste Stelle des Strings (das "Z") abscheiden
           Joystick_z_wert_integer = Val(joystick_y_wert_string)       'string in integer konvertieren
        End If
    
    
    '----Z-Rotation--------------------------
        If Rz_empfangen = 1 Then
           Joystick_rz_wert_string = Mid(inputstring , 2)       'die erste Stelle des Strings (das "Rz") abscheiden
           Joystick_rz_wert_integer = Val(joystick_y_wert_string)       'string in integer konvertieren
        End If
      End If

Ähnliche Themen

  1. Getriebemotor mit analogen Joystick steuern.
    Von jppix im Forum Elektronik
    Antworten: 31
    Letzter Beitrag: 23.01.2012, 20:45
  2. Joystick auswerten um Motoren zu steuern
    Von Coleone im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 30.10.2010, 08:34
  3. Roboterarm mit Joystick steuern
    Von Filfnar im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 11
    Letzter Beitrag: 10.09.2010, 20:39
  4. 9-Achs Roboter-/Greifarm (mit Joystick-Funksteuerung)
    Von Pr0gm4n im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 12
    Letzter Beitrag: 30.11.2008, 13:05
  5. software um steuerungen mit joystick zu steuern
    Von Niberium im Forum C-Control II
    Antworten: 6
    Letzter Beitrag: 29.08.2007, 17:08

Berechtigungen

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