Jump to content

[Gelöst]Servo Brick: Brickv-Test läuft, Examples nicht


Recommended Posts

Geschrieben

Liebe Leute,

 

ich komme nicht weiter mit meinem Servo Brick. Wenn ich meinen Servo mit dem Brickviewer teste, bewegt er sich einwandfrei. Aber weder das Callback- noch das Configuration-Example von Tinkerforge rufen irgendeine Reaktion hervor. Ebenso meine Programmierversuche.

Die Beispiel-Programme selbst laufen ohne Fehlermeldung durch.  Der Servo ist auf Position (0) am Brick eingesteckt, und ich habe die UID in den Beispielen durch die im Brickviewer für den Servo angegebene ersetzt.

 

Muss ich sonst noch etwas machen bzw. habe ich etwas übersehen?

 

Bin für jeden Hinweis dankbar.

Patric

Geschrieben

Danke für die schnelle Antwort!

 

Falsch herum eingesteckt oder Probleme mit der Stromversorgung kann ich mir eigentlich nicht vorstellen. Der Test mit dem Brickviewer funktioniert ja wie gesagt einwandfrei. Der Servo dreht sich genau wie angezeigt.

 

Zum Code: Bei mir funktionieren selbst die von Tinkerforge bereitgestellten Code-Beispiele example_callback und example_configuration nicht. Das example_configuration sieht aus wie unten. Ich habe dort nur die UID geändert und "raw input" auf "input", da ich Python 3.4 nutze. Das Programm läuft ohne Fehlermeldung.Servo ist auf Position 0 eingesteckt.

 

############

 

#!/usr/bin/env python

# -*- coding: utf-8 -*- 

 

HOST = "localhost"

PORT = 4223

UID = "5VF7gc" # Change to your UID

 

from tinkerforge.ip_connection import IPConnection

from tinkerforge.brick_servo import Servo

 

if __name__ == "__main__":

    ipcon = IPConnection() # Create IP connection

    servo = Servo(UID, ipcon) # Create device object

 

    ipcon.connect(HOST, PORT) # Connect to brickd

    # Don't use device before ipcon is connected

 

    # Configure two servos with voltage 5.5V

    # Servo 1: Connected to port 0, period of 19.5ms, pulse width of 1 to 2ms

    #          and operating angle -100 to 100°

    #

    # Servo 2: Connected to port 5, period of 20ms, pulse width of 0.95

    #          to 1.95ms and operating angle -90 to 90°

    servo.set_output_voltage(5500)

 

    servo.set_degree(0, -10000, 10000)

    servo.set_pulse_width(0, 1000, 2000)

    servo.set_period(0, 19500)

    servo.set_acceleration(0, 1000) # Slow acceleration

    servo.set_velocity(0, 0xFFFF) # Full speed

 

    servo.set_degree(5, -9000, 9000)

    servo.set_pulse_width(5, 950, 1950)

    servo.set_period(5, 20000)

    servo.set_acceleration(5, 0xFFFF) # Full acceleration

    servo.set_velocity(5, 0xFFFF) # Full speed

 

    servo.set_position(0, 10000) # Set to most right position

    servo.enable(0)

 

    servo.set_position(5, -9000) # Set to most left position

    servo.enable(5)

 

    input('Press key to exit\n') # Use input() in Python 3

    ipcon.disconnect()

 

##############

 

Patric

 

 

 

Geschrieben

Wenn es im Brick Viewer geht, dann kann es kein elektrisches Problem sein.

 

Es muss also im Beispiel stecken. Das Beispiel tätigt viele Einstellungen die nicht unbedingt nötig sind.

 

Daher jetzt mal ein einfacheres Beispiel, das den Servo nur ein paar mal hin und her bewegen lässt. Bevor du dieses Beispiel testest solltest du einmal den Servo Brick resetten, damit alle Einstellungen zurückgesetzt werden auf Standard.

 

#!/usr/bin/env python
# -*- coding: utf-8 -*-  

HOST = "localhost"
PORT = 4223
UID = "5VF7gc" # Change to your UID

from tinkerforge.ip_connection import IPConnection
from tinkerforge.brick_servo import Servo
import time

if __name__ == "__main__":
    ipcon = IPConnection() # Create IP connection
    servo = Servo(UID, ipcon) # Create device object

    ipcon.connect(HOST, PORT) # Connect to brickd
    # Don't use device before ipcon is connected
    
    if servo.get_identity().device_identifier != Servo.DEVICE_IDENTIFIER:
        print("This is not a Servo Brick")
    else:
        servo.set_position(0, 9000)
        servo.enable(0)
        
        time.sleep(2)
        servo.set_position(0, -9000)

        time.sleep(2)
        servo.set_position(0, 9000)
        
        time.sleep(2)
        servo.set_position(0, -9000)

    input('Press key to exit\n') # Use input() in Python 3
    ipcon.disconnect()

Geschrieben

Photron,

 

vielen Dank, mit dieser Datei funktioniert es (mit den Beispielen leider immer noch nicht, aber macht nichts).

 

Ich baue jetzt den Code in eine kleine Steuerung ein. Bin mal gespannt.

 

Viele Grüße

Patric

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...