Geht das nur darüber?
Weil die Ausführung eines "normalen" Programms kannst du ja z.B. mit Strg + C beenden
Steht doch in der ReadMe
pwm.stop()
Gruß
Andreas
Geht das nur darüber?
Weil die Ausführung eines "normalen" Programms kannst du ja z.B. mit Strg + C beenden
Schaut ruhig mal auf meiner Homepage vorbei :
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Das ist kein Beenden, das ist ein Unterbrechen wenn man es ganz genau nimmt
Ein "ordentliches" Beenden wäre z.B. os._exit(1) das über eine Benutzereingabe ausgeführt wird.
Ich baue mir z.B. immer ein Menü:
Code:while(True): user_input = raw_input('Bitte treffen Sie Ihre Wahl: ') if user_input == "m": menu() ... elif user_input == "q": os._exit(1)
Gruß
Andreas
Haarspalterei :P
Aber gut danke für die Info
Schaut ruhig mal auf meiner Homepage vorbei :
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Hallo,
Ich habe mir nun folgendes Programm erstellt:
PWM Frequenz 19048 Hz, 50%
Das Programm läuft zwar ab, der Bot zittert aber wie wild.Code:import RPi.GPIO as GPIO import time import signal from pizypwm import * def endProcess(signalnum = None, handler = None): first.stop() second.stop() third.stop() fourth.stop() GPIO.cleanup() exit(0) signal.signal(signal.SIGTERM, endProcess) signal.signal(signal.SIGINT, endProcess) first = PiZyPwm(19048, 19, GPIO.BOARD) second = PiZyPwm(19048, 21, GPIO.BOARD) third = PiZyPwm(19048, 23, GPIO.BOARD) fourth = PiZyPwm(19048, 24, GPIO.BOARD) first.start(50) second.start(50) third.start(50) fourth.start(50) def ControlAPairOfPins(FirstPin,FirstState,SecondPin,SecondState): if FirstState == "1": GPIO.output(int(FirstPin),True) else: GPIO.output(int(FirstPin),False) if SecondState == "1": GPIO.output(int(SecondPin),True) else: GPIO.output(int(SecondPin),False) return GPIO.setwarnings(False) GPIO.setmode(GPIO.BOARD) GPIO.setup(19,GPIO.OUT) GPIO.setup(21,GPIO.OUT) GPIO.setup(23,GPIO.OUT) GPIO.setup(24,GPIO.OUT) while True: ControlAPairOfPins("19","1","21","0") ControlAPairOfPins("23","1","24","0") print "Drehung nach rechts" time.sleep(1) ControlAPairOfPins("19","0","21","0") ControlAPairOfPins("23","0","24","0") print "Stop" time.sleep(1) ControlAPairOfPins("19","0","21","1") ControlAPairOfPins("23","0","24","1") print "Drehung nach Links" time.sleep(1) ControlAPairOfPins("19","0","21","0") ControlAPairOfPins("23","0","24","0") print "Stop" time.sleep(1) ControlAPairOfPins("19","1","21","0") ControlAPairOfPins("23","0","24","1") print "Geradeaus vorwaerts" time.sleep(1) ControlAPairOfPins("19","0","21","0") ControlAPairOfPins("23","0","24","0") print "Stop" time.sleep(1) ControlAPairOfPins("19","0","21","1") ControlAPairOfPins("23","1","24","0") print "Geradeaus rueckwaerts" time.sleep(1) ControlAPairOfPins("19","0","21","0") ControlAPairOfPins("23","0","24","0") print "Stop" time.sleep(1)
Ist das Programm so in Ordnung?
Kannst du das bitte überprüfen?
Naja, oben startest Du direkt die PWM auf allen Pins
Wenn ich das richtig interpretiere wollen Deine Motoren nun gleichzeitig nach vorne und nach hinten drehen => geht nicht => Zittern.Code:first.start(50)second.start(50) third.start(50) fourth.start(50)
Und unten in der while Schleife sagst Du den Motoren das sie voll aufdrehen sollen, oder? Das führt zu noch heftigerem Zittern weil es die PWM beeinträchtigt.
Gruß
Andreas
Vielen herzlichen Dank, tucow - nun habe ich es:
Damit drehen die Motoren nur mit 50% Leistung, dank Software - PWMCode:import RPi.GPIO as GPIO import time import signal from pizypwm import * def endProcess(signalnum = None, handler = None): first.stop() second.stop() third.stop() fourth.stop() GPIO.cleanup() exit(0) signal.signal(signal.SIGTERM, endProcess) signal.signal(signal.SIGINT, endProcess) first = PiZyPwm(20000, 19, GPIO.BOARD) second = PiZyPwm(20000, 21, GPIO.BOARD) third = PiZyPwm(20000, 23, GPIO.BOARD) fourth = PiZyPwm(20000, 24, GPIO.BOARD) GPIO.setwarnings(False) GPIO.setmode(GPIO.BOARD) GPIO.setup(19,GPIO.OUT) GPIO.setup(21,GPIO.OUT) GPIO.setup(23,GPIO.OUT) GPIO.setup(24,GPIO.OUT) while True: first.start(50) second.start(0) third.start(50) fourth.start(0) print "Drehung nach rechts" time.sleep(1) first.start(0) second.start(0) third.start(0) fourth.start(0) print "Stop" time.sleep(1) first.start(0) second.start(50) third.start(0) fourth.start(50) print "Drehung nach Links" time.sleep(1) first.start(0) second.start(0) third.start(0) fourth.start(0) print "Stop" time.sleep(1) first.start(50) second.start(0) third.start(0) fourth.start(50) print "Geradeaus vorwaerts" time.sleep(1) first.start(0) second.start(0) third.start(0) fourth.start(0) print "Stop" time.sleep(1) first.start(0) second.start(50) third.start(50) fourth.start(0) print "Geradeaus rueckwaerts" time.sleep(1) first.start(0) second.start(0) third.start(0) fourth.start(0) print "Stop" time.sleep(1)
Geändert von pinsel120866 (09.02.2013 um 16:18 Uhr)
Ah, sehr schön!
Kannst Du davon mal ein Video machen? Mich würde interessieren wie gut die Software PWM in Python funktioniert
Gruß
Andreas
Video ist online: http://youtu.be/DBvoxG8FZBo
Im 1. Durchgang 50% PWM, im 2. Durchgang 100% PWM
Sieht (wiedermal) klasse aus
Ich warte noch immer auf meinen Motortreiber für meinen Bot.
Hoffe der kommt bald, da ich jetzt Semesterferien habe und nächste Woche die Klausur geschrieben ist, wollte ich endlich mal bisl anfangen selber einen Bot zusammen zu bauen.
Die USB Kabel für mein mobiles Ladegerät habe ich schon gefunden (totaler Krampf USB Kabel mit Mini-USB und einer normalen USB-Buchse zu finden -.-)
Schaut ruhig mal auf meiner Homepage vorbei :
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Lesezeichen