• Erste Schritte
  • Hardware & GPIO
  • Projekte
  • Software
    • Webserver
  • Arduino & ESP8266
  • Hausautomatisierung
  • Sonstiges
    • News
Facebook Twitter YouTube
Tutorials for Raspberry Pi Tutorials for Raspberry Pi
  • Einstieg
    • Erste Schritte
      • Raspberry Pi 3 Einstieg - Starter KitWas brauche und wie starte ich? – Raspberry Pi Einstieg
    • Einrichtung
      • microsd_karte_menuRaspbian Betriebssystem auf eine SD Karte flashen – Einfach & Schnell
      • wlanbluetooth_menuWLAN und Bluetooth einrichten – Raspberry Pi 4
      • wifi_menuWLAN Stick installieren und einrichten – Alternative
      • bash_menuSSH Zugriff einrichten via Putty – Kommandozeilen Zugriff
      • rdp_menuRemotedesktop Verbindung aufbauen – Fernsteuerung
    • Einsteiger Projekte
      • Sinnvolles Raspberry Pi Zubehör
      • 15 Raspberry Pi Projekte für Anfänger
      • Ampelschaltung mit GPIOs
      • GPIOs mit Port Expander erweitern
      • Elektronischer Würfel
      • 13 tolle Projekte für Kinder und Jugendliche
      • Roboter selber bauen
      • In Visual Studio Code mit C++ programmieren
      • Wünsch dir ein Tutorial
    • Programmieren lernen
      • Teil 1: Einführung
      • Teil 2: GPIOs steuern
      • Teil 3: GUI erstellen
      • Teil 4: PWM
      • C# GUI Apps entwickeln
  • Hardware & GPIO
    • 50 der wichtigsten Raspberry Pi Sensoren und Module – Aufgelistet mit Links zu den TutorialsRaspberry Pi Sensoren
    • Beliebte Tutorials
      • Raspberry Pi Luftfeuchtigkeit/Temperatur SensorLuftfeuchtigkeit und Temperatur messen
      • Raspberry Pi WS2801B RGB LED Streifen anschließen und steuernWS2801 RGB LED Streifen anschließen und steuern
      • Raspberry Pi Funksteckdosen (433Mhz)Raspberry Pi Funksteckdosen (433Mhz)Funksteckdosen (433MHz) steuern
      • Raspberry Pi Relais ModulRaspberry Pi: Relais-Schalter per GPIO steuern
      • Raspberry Pi Servo MotorRaspberry Pi Servo Motor Steuerung
      • Amazon-Alexa-deutsch-auf-dem-Raspberry-Pi-installierenAmazon Alexa (Deutsch) auf dem installieren
      • Entfernung messen mit Ultraschallsensor HC-SR04 – Raspberry PiEntfernung messen mit Ultraschallsensor HC-SR04
      • 71-M-PU7vML.-S3L1500-Raspberry Pi’s über 433 MHz Funk kommunizieren
      • Raspberry Pi PIR Motion SensorBewegungsmelder PIR anschließen und steuern
      • Raspberry Pi USB Boot per Stick oder SSD Festplatte einrichtenUSB Boot per Stick oder SSD Festplatte
      • Analog
        • Raspberry Pi MCP3008 ADCMCP3008: Am Raspberry Pi analoge Signale auslesen
        • Raspberry Pi Gas Sensor MQ-2Raspberry Pi Gas Sensor (MQ-X) konfigurieren und auslesen
        • Raspberry Pi PulsmesserRaspberry Pi Pulsmesser: Herzfrequenz messen
        • Joystick am Raspberry Pi benutzen (mit MCP3008)Joystick am Raspberry Pi benutzen (mit MCP3008)
        • infrarot sharp distance senserInfrarot Abstandsmessung mit dem Raspberry Pi
        • Raspberry Pi Drehregler - Rotary EncoderKY040 Drehregler als Lautstärkeregler für den Raspberry Pi
        • Easpberry Pi Soil SensorBodenfeuchtigkeit mit dem Raspberry Pi messen
        • Raspberry Pi KeypadRaspberry Pi Keypad anschließen – Codeschloss
        • Raspberry Pi door sensorÜberwachung von Fenstern und Türen mit dem Raspberry Pi und Reed-Relais
        • Raspberry Pi Fotowiderstand HelligkeitssensorFotowiderstand (Helligkeitssensor) am Raspberry Pi
        • Raspberry Pi Waage selber bauen (mit Gewichtssensor HX711)Raspberry Pi Waage selber bauen (mit Gewichtssensor HX711)
      • Funk
        • 71-M-PU7vML.-S3L1500-Raspberry Pi’s über 433 MHz Funk kommunizieren lassen
        • Remote Control Raspberry Pi 433Mhz Radio TransmitterRaspberry Pi mit 433Mhz Funksender fernsteuern
        • Raspberry Pi Funksteckdosen (433Mhz)Raspberry Pi Funksteckdosen (433Mhz)Raspberry Pi Funksteckdosen (433MHz) steuern
        • Raspberry Pi MiFlora - Xiaomi Pflanzensensor in OpenHAB einbindenMiFlora – Xiaomi Pflanzensensor ins Smart Home einbinden
        • Raspberry Pi RFID RC522 TüröffnerRaspberry Pi RFID RC522 Tags auslesen (NFC)
        • Funkkommunikation zwischen Raspberry Pi's und Arduinos (2.4 GHz)Funkkommunikation (2.4 GHz): Arduino & Raspberry Pi
        • Raspberry Pi Radio ReceiverRaspberry Pi als Radioempfänger benutzen
        • Raspberry Pi Xbox 360 Wireless ControllerRaspberry Pi mittels Xbox 360 Controller steuern
        • Raspberry Pi GSM Modul - Huawei Internet SticksRaspberry Pi GSM Modul – Mobiles Internet
        • Raspberry Pi Bluetooth DatentransferRaspberry Pi Bluetooth Datentransfer zum Smartphone
      • Infrarot & Laser
        • Raspberry Pi Infrarot FernbedienungRaspberry Pi: Per IR Remote Befehle ausführen
        • infrarot sharp distance senserInfrarot Abstandsmessung mit dem Raspberry Pi
        • Raspberry Pi Laser Lichtschranke für weite DistanzenRaspberry Pi Laser Lichtschranke für weite Distanzen
        • Infrarot Raspberry Pi FernbedienungInfrarot Steuerung einrichten
        • Raspberry Pi Infrarot Lichtschranke bauen und Geschwindigkeit messenRaspberry Pi Infrarot Lichtschranke bauen
        • Raspberry Pi Fotowiderstand HelligkeitssensorFotowiderstand (Helligkeitssensor) am Raspberry Pi
      • Temperatur & Navigation
        • Raspberry Pi Luftfeuchtigkeit/Temperatur SensorRaspberry Pi: Luftfeuchtigkeit und Temperatur messen
        • Measuring Temperature with a Raspberry Pi Temperature Sensor (1-Wire)Raspberry Pi Temperatursensor (1-Wire): Temperatur messen
        • Raspberry Pi BMP180 SensorRaspberry Pi und I2C Luftdrucksensor BMP180
        • Raspberry Pi RTC Real Time ClockReal Time Clock Modul steuern
        • Rotation und Beschleunigung mit dem Raspberry Pi messenRotation und Beschleunigung mit dem Raspberry Pi messen
        • Raspberry Pi GPS ModulRaspberry Pi GPS Ortungs- / Navigationsgerät bauen
        • Raspberry Pi Kompass selber bauenRaspberry Pi Kompass selber bauen (HMC5883L)
        • Kontaktlosen Infrarot-Temperatursensor MLX90614 am Raspberry Pi auslesenMLX90614 – Kontaktlos Temperaturen messen
      • Displays
        • Raspberrry Pi HD44780 I2CHD44780 LCD Display per I2C ansteuern
        • Raspbery Pi LCD DisplayRaspberry Pi LCD Display: 16×2 Zeichen anzeigen
        • DisplayTipps & Tricks zum offiziellen 7″ Raspberry Pi Touchscreen
        • Raspberry Pi TouchscreenTestbericht zum 7″ Raspberry Pi Touchscreen Display
        • LCD Touch Display (3.2″) am Raspberry PiLCD Touch Display (3.2″) am Raspberry Pi
        • tft lcd touch displayRaspberry Pi LCD Touch Display Teil 2 – Anpassungen
        • Raspberry Pi LED MAX7219 Dot Matrix – ProjektübersichtRaspberry Pi LED Matrix – Projektübersicht
        • Raspberry Pi 7 Segment Anzeige Kathode mit MAX7219Raspberry Pi: 7 Segment Anzeigen mit MAX7219 steuern (Kathode)
        • 7 Segment Anzeige (Anode) mit MAX7219 MAX7221 und Raspberry Pi7 Segment Anzeige mit MAX7219 am Raspberry Pi (Anode)
        • Raspberry Pi Tablet Raspad TestberichtRaspberry Pi Tablet „Sunfounder RasPad“ Testbericht
      • Motoren & Sonstige
        • Raspberry Pi Stepper Motor Control with L293D / ULN2003ARaspberry Pi Schrittmotor ansteuern
        • Raspberry Pi Servo MotorRaspberry Pi Servo Motor Steuerung
        • Raspberry Pi PCA9685 mehrere Servos gleichzeitig steuernMehrere Servo Motoren per Raspberry Pi steuern
        • Raspberry Pi PIR Motion SensorBewegungsmelder PIR anschließen und steuern
        • How to use a Raspberry Pi Fingerprint Sensor for AuthenticationRaspberry Pi Fingerprint Sensor zur Authentifizierung nutzen
        • Raspberry Pi Akku AdapterRaspberry Pi mit Akkus/Batterien betreiben
        • Entfernung messen mit Ultraschallsensor HC-SR04 – Raspberry PiEntfernung messen mit Ultraschallsensor HC-SR04
        • Raspberry Pi WS2801B RGB LED Streifen anschließen und steuernWS2801 RGB LED Streifen anschließen und steuern
        • Raspberry Pi WS2812 RGB LED StripWS2812 RGB LED Streifen per Raspberry Pi steuern
        • Raspberry Pi Überwachungskamera LivestreamÜberwachungskamera Livestream einrichten
        • NoIRAufnahmen mit dem offiziellen Kamera Modul
        • Raspberry Pi Zero - establishing an Ethernet connection (ENC28J60)Raspberry Pi Zero – Ethernet Verbindung
  • Software
    • Webserver Installation
      • apache2_menu25Teil 1 – Apache2
      • php_menu25Teil 2 – PHP 5
      • mysql_menu25Teil 3 – MySQL
      • phpmyadmin_menu25Teil 4 – phpMyAdmin
      • ftp_menu25Teil 5 – FTP Server
      • dns_menu25Teil 6 – DNS Server via No-IP
      • home_menu25Homeverzeichnis ändern
      • share_25Samba Server: Dateien im Netzwerk teilen
      • nodejs_menu25Node.js Webserver installieren und GPIOs schalten
      • ssl_menu25SSL Zertifikat kostenlos mit Let’s Encrypt
      • wordpress_25Eigenen WordPress-Server einrichten
      • cloud-25Nextcloud auf dem Raspberry Pi installieren
    • Entertainment
      • led_menu25Raspberry Pi Ambilight für alle Geräte mit OSMC selber bauen
      • amazon_menu25Amazon Alexa (Deutsch) auf dem Raspberry Pi installieren
      • controller_25Raspberry Pi RetroPie – Spielekonsole selber bauen
      • kodi_menu25Mediencenter Raspbmc als SmartTV mit dem Raspberry Pi
      • android_25Android TV Box zum selber bauen
      • apple-2316234_640Raspberry Pi als AirPlay-Empfänger
      • jukebox_menu25Raspberry Pi als Jukebox (Spotify, Soundcloud, TuneIn, uvm.)
      • steam_25Steam Spiele streamen
      • minecraft_menu25Raspberry Pi Minecraft Server
      • youtube_25YouTube Live Streaming einrichten
      • qr-code-tutorials-raspberrypi.de_25Raspberry Pi QR / Barcode Scanner
    • Fernsteuerung
      • rdp_menuRaspberry Pi Remotedesktop Verbindung
      • ssh_menu25SSH Zugriff einrichten via Putty (Windows)
      • vnc_menu25Raspberry Pi mittels VNC fernsteuern
      • welcome_menu25SSH Terminal Begrüßung ändern
      • telegram1_menu25Telegram Messenger auf dem RaspberryPi
      • telegram2_menu25Mit Telegram Messenger Raspberry Pi steuern
      • bluet_menu25Raspberry Pi Bluetooth Datentransfer zum Smartphone
      • alexa_voice_25Eigenen Raspberry Pi Alexa Skill bauen
      • microphone_25Sprachsteuerung selber bauen
      • mqtt_25MQTT Broker/Client Funkkommunikation
      • mail_25Vom Raspberry Pi Emails senden
      • twitter_25Per Twitter Bot Nachrichten posten
    • Weitere
      • loggen_menu25Sensordaten mit ThingSpeak loggen und auswerten
      • mysql_datalogger25Per lokaler MySQL Datenbank zum Raspberry Pi Datenlogger
      • opencv_menu25OpenCV auf dem Raspberry Pi installieren
      • arduino_menu30tWiringPi installieren & Pinbelegung (Raspberry Pi)
      • radio_menu25Raspberry Pi als Radio Sendestation
      • win10_menu25Windows 10 IoT auf dem Raspberry Pi installieren
      • printer_25Drucker einrichten und per Knopfdruck Bilder drucken
      • gsm_menu25Raspberry Pi GSM Modul – Mobiles Internet (LTE, 3G, UMTS)
      • autostart_menu25Autostart: Programm automatisch starten lassen
      • machine-learning-25Raspberry Pi Machine Learning erlernen
  • Projekte
      • roboter_menu30tRoboter
        • Raspberry Pi Roboter ProjektRaspberry Pi Roboter Projektübersicht
        • Raspberry Pi Roboter Bausatz fertigTeil 1: Zusammenbau
        • Raspberry Pi Roboter - Linien folgenTeil 2: Linien folgen lassen
        • Raspberry Pi Roboter per Infrarot Fernbedienung steuernTeil 3: Per Infrarot Fernbedienung steuern
        • Raspberry Pi Roboter: Ultraschall AutopilotTeil 4: Automatisch Hindernissen ausweichen
        • Raspberry Pi Roboter der eigenen Stimme folgen lassenTeil 5: Der eigenen Stimme folgen lassen
        • Raspberry Pi Roboter mit Xbox 360 Controller fernsteuernTeil 6: Mit Xbox 360 Controller Roboter fernsteuern
        • Raspberry Pi Robot Arm 6DOF6-Gelenkigen Roboter Arm am Raspberry Pi betreiben (6 DOF)
      • led_menu30LED Matrix
        • Raspberry Pi LED MAX7219 Dot Matrix – ProjektübersichtMAX7219 LED Matrix – Projektübersicht
        • 8×8 LED Dot Matrix Parts8×8 LED Matrix – Zusammenbau und Installation
        • Raspberry Pi Bibliothek für mehrzeilige m x n MAX7219 LED MatrizenBibliothek für mehrzeilige m x n MAX7219 LED Matrizen
        • Graphiken auf mehrzeiligen Raspberry Pi LED Matrizen zeichnenGraphiken auf mehrzeiligen Raspberry Pi LED Matrizen zeichnen
        • Pong auf MAX7219 Matrizen spielen (mit Joystick) – Raspberry PiPong auf MAX7219 Matrizen spielen (mit Joystick)
        • Snake auf Raspberry Pi MAX7219 Matrizen spielenSnake auf Raspberry Pi MAX7219 Matrizen spielen
        • 7 Segment Anzeige (Anode) mit MAX7219 MAX7221 und Raspberry Pi7 Segment Anzeige (Anode) mit MAX7219/MAX7221
        • Raspberry Pi 7 Segment Anzeige Kathode mit MAX7219Raspberry Pi: 7 Segment Anzeigen mit MAX7219 steuern (Kathode)
      • wetterstation_menu30Wetterstation
        • Raspberry Pi Wetterstation mit OpenHAB 2 bauenEigene Raspberry Pi Wetterstation mit OpenHAB 2 bauen
        • Raspberry Pi Luftfeuchtigkeit/Temperatur SensorLuftfeuchtigkeit und Temperatur messen
        • raspberry_pi_thingspeak_daten_loggenSensordaten mit ThingSpeak loggen und auswerten
        • Raspberry Pi BMP180 SensorRaspberry Pi und I2C Luftdrucksensor BMP180
        • Measuring Temperature with a Raspberry Pi Temperature Sensor (1-Wire)Raspberry Pi Temperatursensor (1-Wire): Temperatur messen
        • ESP8266 NodeMCU Außenposten-Wetterstation für den Raspberry PiESP8266 Wetterstation Außenposten für den Raspberry Pi
        • Raspberry Pi Gas Sensor MQ-2Raspberry Pi Gas Sensor (MQ-X) konfigurieren und auslesen
      • arduino_menu30tArduino & ESP8266
        • ESP8266 Microcontroller BoardEinführung & Programmierung des ESP8266 NodeMCU Boards
        • Raspberry Pi + ESP8266 NodeMCU: Per WLAN Daten sendenRaspberry Pi + ESP8266 NodeMCU: Per WLAN Daten senden
        • ESP8266 NodeMCU Außenposten-Wetterstation für den Raspberry PiESP8266 Wetterstation Außenposten für den Raspberry Pi
        • Mit dem NodeMCU ESP8266 433MHz Funksteckdosen steuernMit dem NodeMCU ESP8266 433MHz Funksteckdosen steuern
        • ESP8266 NodeMCU HD44780 LCD Display per I2C steuernNodeMCU ESP8266: HD44780 LCD Display per I2C steuern
        • ESP8266 Grafikdisplay: Am SSD1306 OLED per I2C Bilder & Text anzeigen
        • ESP8266 Google Maps API RoutenplanerESP8266 Google Maps API Routenplaner auf LCD anzeigen
        • 2000px-Arduino_Logo.svgRaspberry Pi und Arduino – Einführung
        • arduino unoArduino und Raspberry Pi miteinander kommunizieren lassen
        • Funkkommunikation zwischen Raspberry Pi's und Arduinos (2.4 GHz)Funkkommunikation zwischen Raspberry Pi’s und Arduinos (2.4 GHz)
        • NodeMCU: ESP8266 mit Solarpanel und Akku mit Strom versorgenNodeMCU: ESP8266 mit Solarzelle und Akku mit Strom versorgen
        • ESP8266 Access Point: Günstigen Wlan Repeater selber bauenESP8266 Access Point: Günstigen Wlan Repeater selber bauen
      • Mini Projekte
        • Raspberry Pi Gewächshaus automatisch selber bauenAutomatisches Raspberry Pi Gewächshaus selber bauen
        • Eigene Raspberry Pi Gartenbewässerung mit Webseite bauenEigene Gartenbewässerung mit Webseite bauen
        • Raspberry Pi Radio StationRaspberry Pi als Radio Sendestation verwenden
        • Raspberry Pi Radio ReceiverRaspberry Pi als Radioempfänger benutzen (Autoradio, Car PC)
        • spotify-logo-primary-horizontal-dark-background-rgbRaspberry Pi als Jukebox (Spotify, Soundcloud, TuneIn, uvm.) – Online Radio
        • Raspberry Pi RetroPie Guide - SNES Classic Spielekonsole selber bauenRaspberry Pi RetroPie Guide – SNES Spielekonsole bauen
        • Android + Raspberry Pi: Funksteckdosen App BedienungRaspberry Pi + Android/iOS: Funksteckdosen per App schalten
        • Indirekte Deckenbeleuchtung selber bauen mit farbigem LED LichtIndirekte Deckenbeleuchtung selber bauen mit farbigem LED Licht
  • Sonstiges
    • Wünsch dir ein Tutorial
    • News
    • Reviews
      • Pi Cap – Kapazitives Raspberry Pi Erweiterungsboard
      • Raspberry Pi Tablet „Sunfounder RasPad“ – Testbericht & Einrichtung
      • Testbericht zum 7″ Raspberry Pi Touchscreen Display
      • CrowPi 2 Testbericht: Laptop & Lern-Kit für Kinder
      • Daten auf dem Wio Terminal LCD Screen anzeigen
    • Raspberry Pi Zero
      • Offizielles 5$ Raspberry Pi Zero Modul vorgestellt
      • Raspberry Pi Zero – Ethernet Verbindung herstellen (ENC28J60)
      • Raspberry Pi: WS2801 RGB LED Streifen anschließen und steuern
  • Hausautomation
    • OpenHAB
      • steckdose_25Sonoff S20 Wifi Steckdose steuern
      • wireless_25Funksteckdosen (433 MHz) schalten
      • schalter_25Relais steuern (Rollladen, Lichter, etc.)
      • wetterstation_menu30Wetterstation mit OpenHAB 2 bauen
      • ws28_25WS28xx RGB LED Streifen steuern
      • touchscreen_25Touchscreen Panel bei Näherung aktivieren
      • mqtt_25MQTT Datenabfrage: Raspberry Pi an ESP8266
      • spotify_25Remote Spotify Player im Smart Home
      • heizung_25eQ-3 Thermostat im Smart Home
    • Einführung
      • Raspberry Pi Smart Home OpenHAB installierenOpenHAB installieren & konfigurieren
      • Home Assistant auf dem Raspberry Pi – Erste Schritte
    • ESP8266 NodeMCU
      • esp8266_25Einführung & Programmierung
      • arduino_25ESP8266: Arduino IDE installieren
      • lcd_25NodeMCU HD44780 LCD
      • battery_25Batteriebetrieb via Deep-Sleep
      • wifi_menuPer WLAN Daten senden
      • wetterstation_menu30Wetterstation Außenposten
      • maps_25Google Maps Routenplaner
      • wireless_25NodeMCU Funksteckdosen steuern
      • mail_25Vom NodeMCU Emails versenden
      • rgb_25WS2812B LEDs am Smartphone steuern
      • solar_25ESP8266 Stromversorgung mit Solarzelle
    • Überwachung
      • Aufnahmen mit dem offiziellen Kamera Modul des Raspberry Pi
      • Raspberry Pi: Überwachungskamera Livestream einrichten
      • mailbox_25Briefkasten Sensor – Email Benachrichtigung bei neuer Post
      • Raspberry Pi Überwachungskamera mit Webcam betreiben
      • Überwachung von Fenstern und Türen mit dem Raspberry Pi und Reed-Relais
      • ESP32 Cam Livestream Tutorial für Kamera Modul
    • Raspberry Pi + Android: Benachrichtigungen von Bewegungsmelder
    • Raspberry Pi + Android/iOS: Funksteckdosen per App schalten
    • Raspberry Pi + Android: Schwenkbarer Kamera-Livestream
      • Smart Home
        • Amazon Alexa (Deutsch) auf dem Raspberry Pi installieren
        • Raspberry Pi Funksteckdosen (433MHz) steuern – Tutorial
        • Raspberry Pi Sprachsteuerung selber bauen (Hausautomatisierung)
Tutorials for Raspberry Pi Tutorials for Raspberry Pi
Home»Erste Schritte»Programmieren lernen am Raspberry Pi – Teil 4: LEDs mit PWM dimmen

Programmieren lernen am Raspberry Pi – Teil 4: LEDs mit PWM dimmen

Facebook Twitter LinkedIn Tumblr Email Reddit
Raspberry Pi GPIO PWM Programmieren Lernen Interrupt LED
Teilen
Facebook Twitter LinkedIn Email Tumblr Reddit Telegram WhatsApp

Im vierten Teil der Programmierreihe geht es darum die Raspberry Pi GPIO PWM Funktionalität näher kennen zu lernen. Wie wir generell die GPIOs nutzen um einfache Schaltungen zu erstellen, haben wir in vorherigen Teilen bereits gesehen. Allerdings können die GPIOs noch viel mehr als nur an- und ausgeschaltet werden bzw. die anliegende Spannung auslesen. Mit PWM können die GPIOs des Raspberry Pi’s nämlich auch dimmen und Servomotoren steuern.

Daher wird in diesem Artikel erklärt, was PWM eigentlich ist und wie man es mit den GPIOs des Raspberry Pi’s nutzen kann. Damit lassen sich zum Beispiel Servo Motoren oder mehrfarbige bunte RGB LEDs mit dem Raspberry Pi steuern.

 

Raspberry Pi GPIO PWM Zubehör

Für dieses Tutorial nutzen die folgenden Teile:

  • Raspberry Pi
  • LEDs (mindestens eine)
  • Vorwiderstände
  • Breadboard
  • Jumper Kabel

Übrigens: Mit diesem Tutorial ist es auch möglich RGB LEDs zu steuern und somit mit einer LED jede beliebige Farbe nachzustellen.

All diese Komponenten sind auch in einem Raspberry Pi Starter Kit vorhanden.

Ebenfalls kannst du mit PWM einen Servomotor (oder gleich mehrere?) steuern und so z.B. deinen eigenen Roboterarm fernsteuern. Dazu ist es hilfreich PWM im Allgemeinen zu verstehen.

 

Was ist PWM?

PWM Signal mit Tastgrad von 25% (t1/T). Quelle: Wikipedia

PWM steht für Pulsweitenmodulation (Englisch: Pulse-width modulation) und beschreibt den Vorgang, bei dem ein Signal zwischen zwei Spannungen wechselt. In digitalen Schaltungen gibt es meist nur zwei Pegel – die Raspberry Pi GPIOs können bspw. nur entweder 3.3V oder 0V anliegen haben. Somit ist es bspw. nicht möglich ohne weiteres eine Spannung dazwischen zu generieren.

Nutzt man PWM hat man jedoch eine Alternative: Es gibt nämlich hierbei zwei Parameter: Zum einen die Periodendauer (im Bild ist dies T) und die Impulsdauer (im Bild t1). Teilt man t1 durch T erhält man den sogenannten Tastgrad (englisch: duty cycle). Ein Tastgrad von 1 bzw. 100% wäre somit das selbe, wie wenn man die ganze Zeit die obere Spannung (bspw. 3.3V) anliegen hätte, ebenso würden 0% heißen, dass die ganze Zeit keine Spannung anliegt.

Ist die Periode kurz genug, kann man so auch analoge Spannungen quasi nachstellen, da die Reaktionszeit nicht all zu schnell ist. Normalerweise befindet sich die Periodendauer im Bereich von ~100ms, abhängig vom zu verwendeten Modul. Wichtig ist also der Durchschnitt. Ist in 25% der Zeit die Spannung auf 3.3V und 75% auf 0V, so ergibt sich eine durchschnittliche Spannung von 0,825V.

Bei Servomotoren und dessen Treiberboards wird die Angabe der Periode und des Tastgrads meist im Datenblatt gemacht. Im Beispiel eines MG996R haben wir folgendes vorliegen: Die Periode ist 20ms lang. Außerdem wird ein Tasgrad von zwischen 5% und 10% der Periode erwartet. Somit die die Impulsdauer zwischen 1ms und 2ms. Üblicherweise können Servos zwischen 0 und 180° rotieren. Daher müssen wir die Impulslänge dazwischen anpassen. Eine Länge von 1,5ms (7,5%) ergibt somit einen Winkel von 90°. Und das ganze eben 50x pro Sekunde (50Hz).

 

Wie kann man Raspberry Pi PWM über GPIOs nutzen?

Raspberry Pi GPIO Pin Belegung
Raspberry Pi GPIO Pin Belegung

Nachdem wir nun wissen was die Pulsweitenmodulation / PWM ist, wollen wir diese auch nutzen. Dafür schalten wir in diesem Tutorial zunächst eine LED. Allerdings soll diese nicht wie zuvor einfach nur an- und wieder ausgeschaltet werden, sondern gedimmt werden. Dazu soll sie sich von „Dunkel“ langsam zu komplett „Hell“ ändern.

Starten wir also mit der Verkabelung. Die LED hat zwei unterschiedlich lange Seiten. Das längere Ende kommt an die positive Spannungsquelle (in dem Fall den GPIO) und das kürzere Ende GND (Eselsbrücke: Plus hat zwei Striche -> längeres Ende). Damit die LED geschont wird nehmen wir einen 100Ω Vorwiderstand. Hast du gerade keinen zur Hand, kannst du ggf. auch die Spannung per PWM niedriger regeln. Du kannst jeden beliebigen, programmierbaren GPIO nehmen, der frei ist. Falls du von meinem Aufbau abweichst, musst du das kommende Skript allerdings auch umschreiben. Ich nutze GPIO 23:

Raspberry Pi GPIO PWM - LEDs dimmen

 

PWM Programmierung der GPIOs

Öffne nun deine Python Konsole oder erstelle ein Skript, welches wir ausführen mit folgendem Inhalt:

sudo nano gpio_pwm_test.py

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.OUT)
 
p = GPIO.PWM(23, 50)  # frequency=50Hz
p.start(0)
try:
    while 1:
        for dc in range(0, 101, 5):
            p.ChangeDutyCycle(dc)
            time.sleep(0.1)
        for dc in range(100, -1, -5):
            p.ChangeDutyCycle(dc)
            time.sleep(0.1)
except KeyboardInterrupt:
    pass
    p.stop()
    GPIO.cleanup()

Nach dem Speichern (STRG+O, STRG+X), führe es hiermit aus:

sudo python gpio_pwm_test.py

Um das Skript abzubrechen, kannst du einfach STRG+C drücken.

Vielleicht fragst du dich, wie man nun bunte RGB LEDs damit einstellt: Diese haben vier Anschlüsse, wobei an drei davon jeweils ein GPIO kommt. Der vierte Pin ist GND / Masse und kommt ebenfalls an GND. Die drei Pins stehen für Rot, Grün, Blau. Sobald man die Intensität der drei Kanäle variiert, ändert sich auch die Farbe (weitere Infos).

 

Weitere Raspberry Pi PWM Möglichkeiten

Wie schon erwähnt ist mit PWM noch viel mehr anzustellen, als nur einfache LEDs zu steuern. Eine davon ist eben Servos zu steuern. Damit lassen sich dann Projekte wie der Roboter Arm mit mehreren Servos umsetzen (mit dem PCA9685). Außerdem können Servos auch mit Controllern gesteuert werden, wie ich in dem Video gezeigt habe:

 

Zum Schluss noch die Frage: Welches Thema soll in der „Programmieren für Anfänger“ Reihe im Bezug auf den Raspberry Pi als nächstes behandelt werden?

Einsteiger LED led display Programmieren lernen Programmierung Pulsweitenmodulation PWM raspberry pi einstieg servo servomotor
Teilen Facebook Twitter Pinterest LinkedIn Tumblr Email
Vorheriger BeitragWelches Raspberry Pi 4 Zubehör ist sinnvoll zu kaufen?
Nächster Beitrag Use C# and .NET to develop your own GUI apps for the Raspberry Pi

Ähnliche Beiträge

Raspberry Pi: Java 11 mit Spring Boot installieren und GPIOs steuern

So installierst du Google Chromium auf dem Raspberry Pi

10.1″ Raspberry Pi 4 Tablet – Review des RasPad 3

Smart Home per Drag & Drop: Node-RED am Raspberry Pi nutzen

23 Kommentare

  1. Max am 7. Januar 2018 10:58

    Hey Felix.
    Erstmal, wie immer ein tolles Tutorial.
    Zweitens verstehe ich nicht nicht wo dies „sudo nano gpio_pwm_test.py“ zum einsatz kommt, wenn ich das in die Python Konsole eintrage kommt das danei herraus:
    >>> sudo nano gpio_pwm_test.py
    File „“, line 1
    sudo nano gpio_pwm_test.py
    ^
    SyntaxError: invalid syntax
    >>>

    Ich weiß nich tob das so richtig ist.
    Außerdem schreibe ich gerade meine Facharbeit in Informatik und habe mir dazu das Theama deiner Tutorials zum Roboter bau und Programmierung rausgesucht und da verstehe ich auch nicht wie und wo beispielweise das:
    sudo mkdir RaspberryPi-Robot
    cd RaspberryPi-Robot
    sudo nano l293d.py

    zum einsatz kommt (das ist aus dem ersten Teil des Tutorials), deswegen würde ich mich sehr freuen wenn du mir da helfen könntest.

    Liebe Grüße
    Max

    Antworten
    • björn am 7. Januar 2018 11:45

      mojn max
      um dir ma etwas zu helfen :

      mkdir = make dir .. bedeutet soviel wie erstelle einen Ordner dahinter steht der name des Orners, in diesem fall RaspberryPi-Robot

      cd = change directory … wechel in den ordner …. dahinter den Namen oder Pfad zum Ordner

      nano = text editor …. damit rufst du einen reinen texteditor auf in dem du dein Code oder sonstiges schreiben kannst

      ich sag ma einfa linux kenntnisse sollten da schon reichen da ein bischen einlesen denn ist das selbst erklärend.
      zu dem oberen fehler kann ich dir leider nichst sagen da du eigentlich nur den editor aufrufst vondaher weiss ich nicht wirklich woher der fehler stammen könnte
      das sieht meiner seits ehr so aus als ab du da gerade nano mit python verwechselt hast und wenn es doch python ist liegt da ein syntaxfehler in zeile 1 vor.
      lg

      Antworten
    • Nico am 7. Januar 2018 12:45

      Hallo, dieses Sudo band muss du im Terminal eingeben, darin kannst du dann den Videos der datei von der Website schreiben

      Antworten
    • Felix am 7. Januar 2018 13:24

      Du musst das ganze in der normalen Konsole / Terminal eingeben, nicht in der Python Konsole (daher der Fehler) 🙂

      Antworten
    • Renne am 20. Januar 2018 11:37

      Hallo Felix, tolles Tutorial. Ich möchte eine Led Lampe mit 24 v und 4 A dimmen (Apuarium) Was für einen Hardware Treiber würdest Du empfehlen und gibt es da Beispiele ? Vielen Dank.

      Liebe Grüße
      Renne

      Antworten
      • Felix am 20. Januar 2018 17:50

        Du könntest so etwas mit Sonoff Wifi Devices machen. Dazu sind bereits Tutorials geplant. Wie hoch muss der PWM Pegel denn sein? Bei 5V Motoren reicht nämlich auch ein 3.3V Signal (und 5V Spannung).

  2. Max am 7. Januar 2018 13:33

    Danke an euch drei und mit normalen Konsole ist die Windows cmd Zeile gemeint oder ?

    Antworten
    • Felix am 7. Januar 2018 13:38

      Nein, die Konsole auf dem Raspberry Pi (z.B. per SSH) Im ersten Teil ist das noch genauer beschrieben.

      Antworten
  3. Max am 7. Januar 2018 13:43

    Ist mir gerade auch augefallen das das mit Windows garnicht geht.
    Muss ich mir erst dran gewöhnen mit zwei systemen zu Arbeiten.

    Trotzdem nochmal vielen Dank björn, Nico und Felix
    Und ich hoffe du machst weiterhin so interessante Tutorials
    LG Max

    Antworten
  4. Skipper am 8. Januar 2018 1:12

    Hallo Felix…
    Ich meine ein Servo dreht um 360grad (da Kreisbewegung) nicht 180, hat sich da ein Fehler eingeschlichen?
    Oder verwendest du besondere Bauformen?

    Gruß Skipper

    Antworten
    • Felix am 8. Januar 2018 20:47

      Welchen Servo nutzt du? Die üblichen sind für 180° ausgelegt.

      Antworten
  5. Max am 10. Januar 2018 16:25

    Hey Felix ich bin nochmal,
    wie würdest du den Aufbau des Raspberrys beschreiben den du benutzt (ich bräuchte da mal ein paar anregungen für meine Facharbeit), ich würde mich sehr freuen wenn du mir ein paar Ideen zukommenlassen würdest. Natürlich dann wenn du Zeit und Lust hast.
    LG Max

    Antworten
    • Felix am 10. Januar 2018 22:22

      Was meinst du mit dem Aufbau des Raspberry Pis? Irgendeinen bestimmten Aufbau in einem Tutorial?

      Antworten
      • Max am 11. Januar 2018 17:01

        Ja das auch aber dazu später was, ich meine aus welchen komponenten er besteht, ich ahbe dazu zwar schon ein bisschen was wäre aber trotzdem sehr nett von dir wenn du mir da helfen könntest.
        Und dann noch was in diesem Tutorial:
        raspberry-pi-roboter-bausatz-zusammenbau Teil 1, da blick ich auch noch nicht ganz so mit der verkabelung durch, ich bin da noch ziemlich noobig was das verkabeln angeht.
        Deswegen würde ich mich sehr freuen wenn du mir auch da helfen würdest und es tut mir leid falls ich in letzter zeit durch meine viele fragerei deine Nerven strapaziere.
        LG Max

      • Felix am 11. Januar 2018 17:15

        Aus was der Raspberry Pi besteht? CPU+GPU, Arbeitsspeicher, Widerstände, Transistorem, Kondensatoren, Anschlüssen, etc. nur eben alles auf einer Platine verbaut.
        Die Verkabelung im Roboter Tutorial ist doch schematisch gezeigt, am besteh du beschreibst dein Problem im dortigen Tutorial etwas genauer.

  6. Max am 11. Januar 2018 19:07

    Ok mache ich.
    Danke für deine Hilfe

    Antworten
  7. klausi am 12. Juli 2018 18:11

    Endgeile Tutorials hier, aber du solltest nicht so mit den „SUDO’s“ um dich schmeißen.
    Weiter so

    Antworten
  8. André am 12. September 2018 14:41

    Hi,

    ich habe eine Frage. Was bedeuten die Zahlen in der Klammer in dem Befehl: “ for dc in range(0, 101, 5): „.
    Das habe ich nicht ganz verstanden.

    Danke & Gruß,
    André

    Antworten
  9. Katrin am 7. Dezember 2018 10:45

    Hallo,
    beim Aufruf aus dem Terminal bekomme ich den Fehler, dass er rpi nicht finden kann. In der Auflistung der Module sehe ich es aber. Auch eine Nachinstallation sagt, dass es schon vorhanden ist.
    Viele Grüße
    Katrin

    Antworten
  10. Yasin am 28. Dezember 2019 16:16

    Hallo,
    ich weiß das dieses Tutorial etwas älter ist , daher mache ich mir nicht so große Hoffnung, dass jemand mir antwortet. Es würde mich jedoch freuen, denn ich brauche dringend Hilfe. Ich versuche gerade mit Hilfe von PWM mehrer Leds anzusteuern, jedoch leuchtet immer nur eine und nicht wie geplant 8.
    Ich verstehe den Code dafür nicht, kann ich einfach den selben Code wie oben unten einfügen nur mit anderen GPIO Werten?

    Viele Grüße
    Yasin

    Antworten
    • Felix am 28. Dezember 2019 16:37

      Ja, das geht. Ansonsten kannst du auch ein PWM Board nutzen, falls du mehrere steuern willst.

      Antworten
  11. Yannik am 28. April 2020 15:20

    Moin Felix,
    leider findet man auch in den englischsprachigen Weiten des Internets nicht wirklich, was man braucht: bis zu welcher PWM-Frequenz funktioniert das in deinem Artikel beschriebene Verfahren denn?
    Ich möchte 12V PWM Lüfter steuern (laut der Intel PWM Spezifikation reichen die 3.3VDC des Raspberry definitiv aus (Logic LOW < 0.8VDC; I max. ist < 5mA). Die Spezifikation sieht 25 kHz als PWM Frequenz vor. Kann der Raspi das?

    VG – stay safe
    Yannik

    Antworten
  12. Zeller am 3. Juni 2023 17:46

    Gibt es einen Adapterfür den IObroker um ein GPIO als PWM zu nutzen. Tasmota hat für den ESP so was. Damit konnte ich ein blocky im IObroker erzeugen und die Einstellung dort vornehmen bzw. Durch einen ESP der am Zähler sitzt Steuer.

    Gruß
    Freddy

    Antworten

Hinterlasse einen Kommentar Antwort abbrechen

Rotation und Beschleunigung mit dem Raspberry Pi messen

Welches Raspberry Pi 4 Zubehör ist sinnvoll zu kaufen?

Farberkennung in Bildern am Raspberry Pi mittels OpenCV

Raspberry Pi GPIO Erklärung für Beginner + Programmierung (Teil 2)

Neues Raspberry Pi 2 Model B vorgestellt (+Windows 10)

Raspberry Pi Roboter: Automatisch Hindernissen ausweichen (Teil 4)

Blog abonnieren

Abboniere Raspberry Pi Tutorials, um kein Tutorial mehr zu verpassen!

Tutorials for Raspberry Pi
Facebook Twitter YouTube
  • Kontakt & Impressum
  • Unterstützen
  • Datenschutz

Tippe den Suchbegriff oben ein und drücke Enter, um danach zu suchen. Drücke Esc, um abzubrechen.