UPDATE: Einen Teilerfolg habe ich bereits erziehlt: Ich habe es geschafft, einen Servo mittels XBOX Controller zu steuern:
http://youtu.be/qnCina1r5Rk
Hilfe dazu habe ich hier gefunden.
Werbung
UPDATE: Einen Teilerfolg habe ich bereits erziehlt: Ich habe es geschafft, einen Servo mittels XBOX Controller zu steuern:
http://youtu.be/qnCina1r5Rk
Hilfe dazu habe ich hier gefunden.
Nun brauche ich Hilfe beim Programmieren:
Ich möchte, dass der Bot beim Drücken der Taste "Y1" des XBOX Controllers nach vor läuft. Mit dem geposteten Code funktioniert das nur teilweise.Code:#!/usr/bin/python from Adafruit_PWM_Servo_Driver import PWM import xbox_read import time # =========================================================================== # Example Code # =========================================================================== # Initialise the PWM device using the default address pwm = PWM(0x40) pwm2 =PWM(0x41) # Note if you'd like more debug output you can instead run: #pwm = PWM(0x40, debug=True) servoMin = 200 # Min pulse length out of 4096 servoMid = 375 servoWidth = 200 steer = servoMin servoMax = 550 # Max pulse length out of 4096 def setServoPulse(channel, pulse): pulseLength = 1000000 # 1,000,000 us per second pulseLength /= 60 # 60 Hz print "%d us per period" % pulseLength pulseLength /= 4096 # 12 bits of resolution print "%d us per bit" % pulseLength pulse *= 1000 pulse /= pulseLength pwm.setPWM(channel, 0, pulse) pwm.setPWMFreq(60) # Set frequency to 60 Hz for event in xbox_read.event_stream(deadzone=12000): # Nach vor laufen if event.key=='Y1': # Linker Joystick nach vor # time.sleep(1) pwm.setPWM(10, 0, 350) pwm.setPWM(9, 0, 550) pwm.setPWM(8, 0, 500) # time.sleep(1) pwm.setPWM(10, 0, 350) pwm.setPWM(9, 0, 300) pwm.setPWM(8, 0, 250)
Im Grunde will ich eine Schleife einbauen, die die Servos zwischen 2 Stellungen hin und her bewegt, solange die Taste gedrückt wird.
Wie mache ich das richtig?
Bitte um Hilfe, danke.
Geändert von pinsel120866 (28.12.2014 um 10:21 Uhr)
ich bin einen Schritt weiter:
Ich weiss nur nicht, wie ich aus der while-Schleife rausspringen kann.Code:for event in xbox_read.event_stream(deadzone=12000): while event.key=='X': pwm.setPWM(10, 0, 350) pwm.setPWM(9, 0, 550) pwm.setPWM(8, 0, 500) time.sleep(1) pwm.setPWM(10, 0, 350) pwm.setPWM(9, 0, 300) pwm.setPWM(8, 0, 250) time.sleep(1) pwm.setPWM(10, 0, 350) pwm.setPWM(9, 0, 550) pwm.setPWM(8, 0, 500) time.sleep(1)
Möglichweise kann mir ja hier jemand helfen?
Nun habe ich das Projekt soweit fertig. Die ersten Schritte sind noch etwas wackelig, aber das liegt am "weichen" Chassis.
http://youtu.be/NsqLgpKzViY
Gesteuert wird mir einem XBOX Controller.
Hallo Pinsel,
ein sehr schönes Projekt hast Du da bisher umgesetzt =D>
Mich würde interessieren "wie schnell das Programm" in dieser Ausbaustufe im Endeffekt auf dem Pi läuft - Kannst Du die Zeit messen?
Viele Grüße
Jörg
Geändert von HeXPloreR (25.01.2015 um 09:15 Uhr)
Hallo,
messe ich gerne, wenn du mir sagst wie...
Hallo pinsel,
ich dachte an ein Oszilloskop und dann am besten einen Schleifen Durchlauf per extra high/low Pin abstecken.
Vermutlich wird es sowieso nicht wiederholbar genau werden - aber ein ungefähr Wert würde mir hier schon reichen.
Aber bitte, falls vorhanden, keine "Waits" mit messen.
Sollte doch gehen, oder?
Hast Du inverse Kinematik drin?
Viele Grüße
Jörg
Lesezeichen