Raspbian Wheezy: GPIO-Pin in Python als PWM-Ausgang programmieren
Die GPIO-Pins des Raspberry Pi's können als einfache Eingänge und Ausgänge genutzt werden. Des Weiteren kann man mit Python auf den GPIO-Pins auch ein PWM-Signal ausgeben. Bei der hier verwendeten PWM-Funktionalität wird das PWM-Signal durch die Software erzeugt. Dazu wird für jedes PWM-Signal ein eigener Thread gestartet, welcher das gewünschte Signal generiert und auf dem GPIO-Pin ausgibt.
Nachdem das folgende Python-Skript aufgerufen wurde, wird der festgelegte GPIO-Pin als Ausgang definiert. Mittels GPIO.PWM wird ein neues Objekt für die PWM-Generierung erzeugt. Dabei wird neben dem GPIO-Pin auch gleich die Frequenz des PWM-Signals angegeben. Mit der Methode start kann man das Pulsbreitenverhältnis festlegen und die Signalgenerierung starten. In diesem Beispiel wird nach dem Start des Python-Skripts für 10 Sekunden ein Rechtecksignal mit 1 Hz und einerm Duty Cycle von 50% erzeugt. Danach wird der Duty Cycle mit der Methode ChangeDutyCycle auf 10% geändert und das neue Signal ebenfalls für 10 Sekungen ausgegeben. Zum Schluss wird für 10 Sekunden die Frequenz des PWM-Signals auf 10 Hz erhöht. Bevor das Programm beendet wird, wird über stop die Signalgenerierung beendet. Die Ausführung des Skripts können Sie jederzeit mit der Tastenkombination Strg+C beenden. Dadurch werden auch die Einstellungen für den GPIO-Pin wieder zurückgesetzt.
Für das folgende Python-Skript erstellen Sie mit einem Editor die Datei pwm_output.py.
pi@raspberrypi ~ $ vi pwm_output.py
Fügen Sie in diese Datei den folgenden Python-Code ein und speichern die Datei ab.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Creation: 27.08.2013
# Last Update: 07.04.2015
#
# Copyright (c) 2013-2015 by Georg Kainzbauer <http://www.gtkdb.de>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# import required modules
import RPi.GPIO as GPIO
import time
# define GPIO pin for PWM
GPIOPin = 25
# main function
def main():
try:
# use GPIO pin numbering convention
GPIO.setmode(GPIO.BCM)
# set up GPIO pin for output
GPIO.setup(GPIOPin, GPIO.OUT)
# create object for PWM at 1 Hz
p = GPIO.PWM(GPIOPin, 1.0)
# start PWM with 50% duty cycle
p.start(50.0)
# wait 10000ms
time.sleep(10.0)
# change duty cycle to 10%
p.ChangeDutyCycle(10.0)
# wait 10000ms
time.sleep(10.0)
# change frequency to 10 Hz
p.ChangeFrequency(10.0)
# wait 10000ms
time.sleep(10.0)
# stop PWM output
p.stop()
# reset GPIO settings
GPIO.cleanup()
# reset GPIO settings if user pressed Ctrl+C
except KeyboardInterrupt:
print("Execution stopped by user")
GPIO.cleanup()
if __name__ == '__main__':
main()
# -*- coding: utf-8 -*-
#
# Creation: 27.08.2013
# Last Update: 07.04.2015
#
# Copyright (c) 2013-2015 by Georg Kainzbauer <http://www.gtkdb.de>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# import required modules
import RPi.GPIO as GPIO
import time
# define GPIO pin for PWM
GPIOPin = 25
# main function
def main():
try:
# use GPIO pin numbering convention
GPIO.setmode(GPIO.BCM)
# set up GPIO pin for output
GPIO.setup(GPIOPin, GPIO.OUT)
# create object for PWM at 1 Hz
p = GPIO.PWM(GPIOPin, 1.0)
# start PWM with 50% duty cycle
p.start(50.0)
# wait 10000ms
time.sleep(10.0)
# change duty cycle to 10%
p.ChangeDutyCycle(10.0)
# wait 10000ms
time.sleep(10.0)
# change frequency to 10 Hz
p.ChangeFrequency(10.0)
# wait 10000ms
time.sleep(10.0)
# stop PWM output
p.stop()
# reset GPIO settings
GPIO.cleanup()
# reset GPIO settings if user pressed Ctrl+C
except KeyboardInterrupt:
print("Execution stopped by user")
GPIO.cleanup()
if __name__ == '__main__':
main()
Nachdem Sie Das Python-Skript erstellt haben, ändern Sie die Rechte der Datei.
pi@raspberrypi ~ $ chmod 0755 pwm_output.py
Jetzt können Sie das Python-Skript wie folgt ausführen.
pi@raspberrypi ~ $ sudo ./pwm_output.py
Weiterführende Artikel
Raspbian Wheezy: GPIO-Pin in Python als Eingang programmieren
Raspbian Wheezy: GPIO-Pin in Python als Ausgang programmieren
Dieser Eintrag wurde am 27.08.2013 erstellt und zuletzt am 25.09.2016 bearbeitet.
Direkter Link zu dieser Seite: http://www.gtkdb.de/index_31_2307.html
[ Zur Startseite ] [ Zur Kategorie ]
© 2004-2021 by Georg Kainzbauer