Jump to content

Barkeeper

Members
  • Gesamte Inhalte

    1
  • Benutzer seit

  • Letzter Besuch

Barkeeper's Achievements

Newbie

Newbie (1/14)

0

Reputation in der Community

  1. Hallo, ich habe mich durch die Python-Beispiele gearbeitet und bin meinem Ziel schon recht nahe. Nun benötige ich aber eure Hilfe… Ziel: Servo 6: Position wird durch RotaryPoti eingestellt (OK) Servo 5: wechselt Position von -90 auf +90 bei Tasterdruck an IO4-Bricklet (OK) Servo 4: wechselt beim loslassen des Taster für Servo 5 von -90 zu +90 und zurück zu -90 (mein Problem) Hintergrund: Fernsteuerung eines mechanischen Verschlusses (Copal 0) einer Fotokamera. Servo 6 verstellt die Blende Servo 5 löst den Verschluss aus Servo 4 spannt den Verschluss erneut (Anleitung des Verschlusses: Copal No. 0 nur für den Hintergrund: http://www.schneiderkreuznach.com/pdf/zubehoer/copal_0.pdf) Mein bisheriges Skript: #!/usr/bin/env python # -*- coding: utf-8 -*- HOST = "localhost" PORT = 4223 UID_SERVO = "***" # Changed to the UID of my Servo Brick UID_POTI = "***" # Changed to the UID of my Rotary Poti Bricklet UID_IO4 = "***" # Changed to the UID of my IO4 Bricklet from tinkerforge.ip_connection import IPConnection from tinkerforge.brick_servo import Servo from tinkerforge.bricklet_rotary_poti import RotaryPoti from tinkerforge.bricklet_io4 import IO4 # Callback function for position callback (parameter has range -150 to 150) def cb_position(poti_position): servo_position = 9000*poti_position/150 # Poti-Position: -9000/9000 print('Set Position/Velocity: ' + str(poti_position) + '/' + str(servo_position)) servo.set_position(6, servo_position) # Callback function for interrupts def cb_interrupt(interrupt_mask, value_mask): print('Interrupt by: ' + str(bin(interrupt_mask))) print('Value: ' + str(bin(value_mask))) if value_mask & (1 << 0): servo.set_position(5, 9000) else: servo.set_position(5, -9000) if __name__ == "__main__": ipcon = IPConnection(HOST, PORT) # Create IP connection to brickd servo = Servo(UID_SERVO) # Create device object poti = RotaryPoti(UID_POTI) # Create rotary poti device object io = IO4(UID_IO4) # Create input output 4 object ipcon.add_device(servo) # Add device to IP connection ipcon.add_device(poti) # Add device to IP connection ipcon.add_device(io) # Add device to IP connection # Enable interrupt on pin 0 io.set_interrupt(1 << 0) # Register callback for interrupts io.register_callback(io.CALLBACK_INTERRUPT, cb_interrupt) poti.set_position_callback_period(50) # set callback period to 50ms poti.register_callback(poti.CALLBACK_POSITION, cb_position) servo.set_pulse_width(6, 1000, 2000) servo.set_period(6, 19500) servo.set_acceleration(6, 0xFFFF) # Full acceleration servo.set_velocity(6, 0xFFFF) # Full speed servo.enable(6) # enable Servo No. 6 servo.set_pulse_width(5, 1000, 2000) servo.set_period(5, 19500) servo.set_acceleration(6, 0xFFFF) # Full acceleration servo.set_velocity(5, 0xFFFF) # Full speed servo.enable(5) # enable Servo No. 5 raw_input('Press Enter to exit\n') # Use input() in Python 3 ipcon.destroy() Wie bekomme ich es hin, dass der Servo 4 diese "hin- und her"-Bewegung beim loslassen des Tasters macht? Vielen Dank im Voraus, Barkeeper
×
×
  • Neu erstellen...