{"id":4345,"date":"2026-02-19T08:50:42","date_gmt":"2026-02-19T07:50:42","guid":{"rendered":"https:\/\/staging.elv.eqxt.de\/?p=4345"},"modified":"2026-03-04T17:15:58","modified_gmt":"2026-03-04T16:15:58","slug":"einstieg-python-teil-2-gpios-steuern-die-welt","status":"publish","type":"post","link":"https:\/\/de.elv.com\/elvjournal\/einstieg-python-teil-2-gpios-steuern-die-welt\/","title":{"rendered":"Einstieg in Python (Teil 2): GPIOs steuern die Welt"},"content":{"rendered":"\n<p class=\"has-gray-light-color has-text-color has-link-color has-h-4-font-size wp-elements-a818302c11e9a011229bcf27bff0fd67\"><strong>Einstieg in Python, Teil 2<\/strong><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">GPIOs steuern die Welt<\/h1>\n\n\n\n<p><strong>Im ersten Beitrag zum Thema \u201ePython-Programmierung&#8220; wurde die Hardwaresteuerung \u00fcber die I\/O-Pins des Raspberry Pi erl\u00e4utert. Dabei wurden die Ports lediglich als Ausg\u00e4nge verwendet, um externe Verbraucher wie z. B. Leuchtdioden anzusteuern. Moderne Prozessoren erm\u00f6glichen es jedoch, einen Pin sowohl als Ein- als auch als Ausgang zu konfigurieren. Dadurch k\u00f6nnen einzelne Pins als universelle Schnittstellen f\u00fcr die gesamte Bandbreite der Elektronik genutzt werden. In diesem Beitrag soll deshalb die Funktion der Pins als Eing\u00e4nge genauer beschrieben werden. Dabei werden die folgenden Themen und Python-Programmstrukturen vorgestellt: GPIOs als Eing\u00e4nge; Steuern mit Tastendruck; offene Eing\u00e4nge und Tasterprellen; einfache Peripheriesteuerung mit \u201egpiozero&#8220;. Die gpiozero Library gestattet eine besonders einfache Ansteuerung und Nutzung der wichtigsten Eingabe\/Ausgabe-Funktionen der Raspberry Pi-Pins in Python.<\/strong><\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Beschalten von GPIOs<\/h2>\n\n\n\n<p>Neben der M\u00f6glichkeit, GPIOs als Ein- und Ausg\u00e4nge zu nutzen, gibt es noch zahlreiche Zusatzfunktionen, die ebenfalls von der Hardware des Raspberry Pi unterst\u00fctzt werden. Insbesondere Bussysteme wie<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>SPI (Serial Peripheral Interface),<\/li>\n\n\n\n<li>I2C (Inter-Integrated Circuit Bus),<\/li>\n\n\n\n<li>UART (Universal Asynchronous Receiver\/Transmitter),<\/li>\n\n\n\n<li>PWM (Pulsweitenmodulation) und PCM (Pulse Code Modulation)<\/li>\n<\/ul>\n\n\n\n<p>bieten eine F\u00fclle von M\u00f6glichkeiten zum Anschluss sogenannter peripherer Bausteine.<\/p>\n\n\n\n<p>Die Konfiguration eines I\/Os kann entweder beim Starten oder w\u00e4hrend der Laufzeit eines Programms festgesetzt werden. Die Parallelfunktionen sind gesondert zu aktivieren. Diese erfordern zudem h\u00e4ufig das Laden spezieller Software-Module.<\/p>\n\n\n\n<p>Die I\/Os weisen bestimmte Strom- und Spannungsgrenzen auf. Beim Beschalten sollten diese Grenzwerte jederzeit genauestens beachtet werden, da ansonsten nicht nur ein einzelner I\/O-Kanal, sondern der gesamte Raspberry Pi besch\u00e4digt werden kann. Die exakte maximale Strombelastung der Pins auf einem Raspberry Pi h\u00e4ngt von verschiedenen Faktoren ab, einschlie\u00dflich des spezifischen Raspberry-Pi-Modells und des verwendeten I\/O-Pins. Die GPIO-Pins des Raspberry Pi sind jedoch generell f\u00fcr eine Strombelastung von maximal 16 mA pro Pin ausgelegt. Die gesamte Strombelastung f\u00fcr alle Pins zusammen sollte 50 mA nicht \u00fcberschreiten.<\/p>\n\n\n\n<p>Die Spannungspegel f\u00fcr GPIO-Ein und -Ausg\u00e4nge liegen beim Raspberry Pi bei:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>+3,3 V f\u00fcr den \u201eHigh&#8220;-Level (Logisch \u201e1&#8243;)<\/li>\n\n\n\n<li>O V f\u00fcr den \u201eLow&#8220;-Level (Logisch \u201e0&#8243;)<\/li>\n<\/ul>\n\n\n\n<p>Genau genommen sind diese Zust\u00e4nde allerdings als Bereiche festgelegt. Deshalb sind hier gewisse Abweichungen zul\u00e4ssig. Je nach Last kann der Pegel an einem GPIO-Ausgang auch von seinen nominalen Werten von 0 V und +3,3 V abweichen.<\/p>\n\n\n\n<p>In der Regel werden GPIO-Eing\u00e4nge mit Widerst\u00e4nden beschaltet, um sie auf einen definierten Pegel zu setzen (+VCC oder GND) oder um den Strom zu begrenzen. Die Pegel bzw. Spannungswerte unterliegen einer gewissen Toleranz. Ein GPIO-Eingang erkennt Spannungen unter 0,8 V als \u201eLow&#8220; und Spannungen \u00fcber 1,3 V als \u201eHigh&#8220;. Dazwischen wird kein definierter Pegel erkannt. In dieser \u201eL\u00fccke&#8220; neigen die Eing\u00e4nge zu unerw\u00fcnschten Schwingungen. Das hei\u00dft, sie nehmen wechselweise den Zustand \u201eHigh&#8220; oder \u201eLow&#8220; an. Das passiert zum Beispiel dann, wenn der GPIO-Eingang unbeschaltet ist. Dieser Zustand sollte in der Praxis stets vermieden werden. \u00dcber sogenannte Pull-up- bzw. Pull-down-Widerst\u00e4nde kann man Einfluss darauf nehmen, welchen Grundzustand ein GPIO-Eingang haben soll.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">GPIO als Eingang (Input)<\/h3>\n\n\n\n<p>Ist ein GPIO als Eingang definiert, nimmt er Schaltzust\u00e4nde externer Schaltungsteile an. Das kann im einfachsten Fall ein Taster oder Schalter sein. In jedem Fall muss ein Potential bzw. Pegel (Spannung) anliegen, damit der GPIO-Eingang den anliegenden Zustand auswerten kann. Diese Zust\u00e4nde bezeichnet man als \u201eHigh&#8220; und \u201eLow\u201c oder \u201e1\u201c und \u201e0&#8243;. Damit dr\u00fcckt man den anliegenden Pegel bzw. die Spannung aus, die nominell +3,3 V bzw 0 V betragen m\u00fcssen.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-columns has-gray-lightest-100-background-color has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p><strong>Wichtig:<\/strong> An einem GPIO-Eingang d\u00fcrfen niemals mehr als +3,3 V anliegen, da dies den Eingang zerst\u00f6ren w\u00fcrde. Die beiden 5-V-Pins des Raspberry Pi d\u00fcrfen daher niemals, auch nicht kurzzeitig, mit einem anderen Pin des Raspberry Pi elektrisch verbunden werden. Falls die beiden 5-V-Pins nicht explizit ben\u00f6tigt werden, sollte man sie daher vorsichtshalber isolieren<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\"> (Bild 1)<\/mark>.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:35%\">\n<figure class=\"wp-block-image size-full is-style-bordered\"><img loading=\"lazy\" decoding=\"async\" width=\"1306\" height=\"872\" src=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild1_Python2.jpg\" alt=\"Isolieren der 5-V-Anschl\u00fcsse am Raspberry Pi\" class=\"wp-image-6459\" srcset=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild1_Python2.jpg 1306w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild1_Python2-300x200.jpg 300w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild1_Python2-768x513.jpg 768w\" sizes=\"auto, (max-width: 1306px) 100vw, 1306px\" \/><figcaption class=\"wp-element-caption\">Bild 1: Isolieren der 5-V-Anschl\u00fcsse am Raspberry Pi<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p>Das folgende Programm (open_input.py) demonstriert, wie sich ein offener Eingang auswirkt:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>import RPi.GPIO as GPIO\nimport time\n\nGPIO.setmode(GPIO.BCM)\nGPIO.setup(3, GPIO.OUT)\nGPIO.setup(4, GPIO.IN) # pull up down=GPIO.PUD_UP)\n\nfor i in range(2):\n    GPIO.output(3, GPIO.HIGH)\n    time.sleep(0.5)\n    GPIO.output(3, GPIO.LOW)\n    time.sleep(0.5)\n\nwhile True:\n    if GPIO.input(4) == 0:\n        GPIO.output(3, GPIO.LOW)\n        print(GPIO.input(4))\n    else:\n        GPIO.output(3, GPIO.HIGH)\n        print(GPIO.input(4))<\/code><\/pre>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Bleibt der verwendete Eingang unbeschaltet (\u201eoffen&#8220;), wird in der Konsole eine wilde Folge von Nullen und Einsen ausgegeben. Wenn zus\u00e4tzlich die Plotterfunktion aktiviert wird, zeigt sich auch hier der rasche, undefinierte Pegelwechsel <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">(Bild\u00a02)<\/mark>. Wird an Port 3 das Level-Modul angeschlossen, blinken die rote und gr\u00fcne LED des gew\u00e4hlten Kanals in unregelm\u00e4\u00dfiger Folge. Dieses Verhalten kommt zustande, da die offenen Eing\u00e4nge die immer vorhandenen St\u00f6rungen aus dem Lichtnetz (50 Hz) oder von Rundfunksendern, WLAN, Bluetooth-Signalen und anderen Hochfrequenzquellen einfangen.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-style-bordered\" style=\"margin-top:0;margin-bottom:0\"><img loading=\"lazy\" decoding=\"async\" width=\"2093\" height=\"468\" src=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild2_Python2.jpg\" alt=\"Undefinierter Pegel an einem offenen Eingang\" class=\"wp-image-6460\" srcset=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild2_Python2.jpg 2093w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild2_Python2-300x67.jpg 300w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild2_Python2-1600x358.jpg 1600w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild2_Python2-768x172.jpg 768w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild2_Python2-1536x343.jpg 1536w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild2_Python2-2048x458.jpg 2048w\" sizes=\"auto, (max-width: 2093px) 100vw, 2093px\" \/><figcaption class=\"wp-element-caption\">Bild 2: Undefinierter Pegel an einem offenen Eingang<\/figcaption><\/figure>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Pull-up- und pull-down-Widerst\u00e4nde<\/h2>\n\n\n\n<p>Um einen definierten Eingangspegel zu erhalten, muss man sogenannte Pull-up- oder Pull-down-Widerst\u00e4nde einsetzen. Hierf\u00fcr k\u00f6nnen externe Komponenten verwendet werden. Aber auch die Verwendung integrierter Pull-ups\/Pull-downs ist m\u00f6glich. Der ab dem Raspberry Pi 4 verwendete BCM2711-Chipsatz verf\u00fcgt \u00fcber interne Pull-up\/ Pull-down-Widerst\u00e4nde. Diese haben einen Wert von ca. 50 k\u03a9. Mit dem folgenden Programm (pull_up_down.py) wird der interne Pull-up an Port 4 ein- beziehungsweise ausgeschaltet:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>import RPi.GPIO as GPIO\nimport time\n\nGPIO.setmode(GPIO.BCM)\n\nwhile True:\n    GPIO.setup(4, GPIO.IN, pull_up_down=GPIO.PUD_UP)\n    time.sleep(1)\n    GPIO.setup(4, GPIO.IN)\n    time.sleep(1)<\/code><\/pre>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p>Nach dem Start des Programms kann man den Eingang (Port 4) mit einem 47-k0-Widerstand mit Masse verbinden <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">(Bild&nbsp;3)<\/mark>.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full is-style-bordered\" style=\"margin-top:0;margin-bottom:0\"><img loading=\"lazy\" decoding=\"async\" width=\"1149\" height=\"1237\" src=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild3_Python2.jpg\" alt=\"47-k\u03a9-Widerstand verbindet Port 4 mit Masse\" class=\"wp-image-6461\" style=\"object-fit:cover\" srcset=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild3_Python2.jpg 1149w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild3_Python2-279x300.jpg 279w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild3_Python2-768x827.jpg 768w\" sizes=\"auto, (max-width: 1149px) 100vw, 1149px\" \/><figcaption class=\"wp-element-caption\">Bild 3: Ein 47-k\u03a9-Widerstand verbindet Port 4 mit Masse<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p>Mithilfe eines Oszilloskops kann der folgende Spannungsverlauf direkt am Pin aufgezeichnet werden <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">(Bild&nbsp;4)<\/mark>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-bordered\" style=\"margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"419\" src=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild4_Python2-1600x419.jpg\" alt=\"Spannung an einem Eingangskanal\" class=\"wp-image-6462\" srcset=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild4_Python2-1600x419.jpg 1600w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild4_Python2-300x79.jpg 300w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild4_Python2-768x201.jpg 768w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild4_Python2-1536x402.jpg 1536w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild4_Python2.jpg 2000w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-element-caption\">Bild 4: Spannung an einem Eingangskanal<\/figcaption><\/figure>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Aus dem Oszillogramm kann man ablesen, dass der Eingang ohne aktivierten Pull-up-Widerstand auf GND-Potential liegt. Wird der Pull-up aktiviert, geht der Eingang ohne den externen Widerstand erwartungsgem\u00e4\u00df auf High Potential (+3,3 V). Wenn ein externer 47-\u039a\u03a9-Widerstand eingeschleift wird, sinkt die Spannung auf etwa 1,6 V (ca. 50 % von + 3,3 V) ab. Daraus ergibt sich, dass der interne Pull-up-Widerstand ebenfalls einen Wert von etwa 40 bis 50 k\u03a9 hat.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p>\u00dcber Pull-up- bzw. Pull-down-Widerst\u00e4nde kann man also Einfluss auf den Grundzustand eines GPIO-Eingangs nehmen. Um den Eingang dann extern umzuschalten, muss man einen Widerstand von deutlich weniger als 50 k\u03a9 verwenden. Ein typisches Vorgehen ist, den internen Pull-up zu aktivieren und dann den Eingang direkt oder \u00fcber einen 1-\u039a\u03a9-Widerstand mit einem Schalter oder Taster auf Masse (GND &#8211; Ground) zu schalten<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\"> (Bild&nbsp;5)<\/mark>.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full is-style-bordered\" style=\"margin-top:0;margin-bottom:0\"><img loading=\"lazy\" decoding=\"async\" width=\"1225\" height=\"1144\" src=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild5_Python2.jpg\" alt=\"Schalten eines Eingangspins \u00fcber einen Taster\" class=\"wp-image-6463\" style=\"object-fit:cover\" srcset=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild5_Python2.jpg 1225w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild5_Python2-300x280.jpg 300w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild5_Python2-768x717.jpg 768w\" sizes=\"auto, (max-width: 1225px) 100vw, 1225px\" \/><figcaption class=\"wp-element-caption\">Bild 5: Schalten eines Eingangspins \u00fcber einen Taster<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Tastenprellen<\/h2>\n\n\n\n<p>Dass aber auch mit Pull-up-\/Pull-down-Widerst\u00e4nden nicht immer eindeutige Ergebnisse erzielt werden, zeigt das folgende Programm (bouncing.py):<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>import RPi.GPIO as GPIO\nimport time\n\nn=0\n\nGPIO.setmode(GPIO.BCM)\nGPIO.setup(3, GPIO.OUT)\nGPIO.setup(4, GPIO.IN, pull_up_down=GPIO.PUD_UP)\n\nfor i in range(2):\n    GPIO.output(3, GPIO.HIGH)\n    time.sleep(0.5)\n    GPIO.output(3, GPIO.LOW)\n    time.sleep(0.5)\n\nwhile True:\n    if GPIO.input(4) == 0:\n        GPIO.output(3, GPIO.LOW)\n        n=n+1\n        while GPIO.input(4) == 0:\n            pass\n        GPIO.output(3, GPIO.HIGH)\n        print(n)<\/code><\/pre>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Das Programm verwendet die RPi.GPIO-Bibliothek, um zwei GPIO-Pins zu steuern. Zun\u00e4chst werden die notwendigen Bibliotheken &#8211; RPi.GPIO f\u00fcr die GPIO-Steuerung und time f\u00fcr Zeitverz\u00f6gerungen &#8211; importiert. Dann wird die Variable \u201en&#8220; initialisiert und auf den Wert 0 gesetzt. Diese Variable dient sp\u00e4ter zum Z\u00e4hlen der Schaltvorg\u00e4nge<\/p>\n\n\n\n<p>Anschlie\u00dfend werden die GPIO-Pins des Raspberry Pi konfiguriert. Pin 3 wird als Ausgang (GPIO.OUT) und Pin 4 als Eingang (GPIO.IN) definiert, wobei ein Pull-up-Widerstand aktiviert wird:<br>pull_up_down=GPIO.PUD_UP<\/p>\n\n\n\n<p><strong>Eine for-Schleife, die zweimal durchlaufen wird, dient als Bereitschaftsanzeige:<\/strong> Pin 3 wird auf High (+3,3 V) gesetzt, dadurch wird die an diesem Port angeschlossene LED aktiviert. Dann wartet das Programm 0,5 Sekunden. Pin 3 wird auf Low (0 V) gesetzt, und die LED erlischt. Das Programm wartet erneut 0,5 Sekunden. Die LED blinkt also genau 2x auf und zeigt so die Bereitschaft der Schaltung an.<\/p>\n\n\n\n<p><strong>Es folgt eine Endlosschleife (while True), die auf \u00c4nderungen am Zustand von Pin 4 wartet:<\/strong> Wenn Pin 4 auf Low (0V) gesetzt wird, was durch das Dr\u00fccken des Tasters geschieht, wird die LED an Pin 3 auf Low gesetzt, um sie zu deaktivieren. Danach wird die Variable \u201en&#8220; um 1 erh\u00f6ht. Das Programm wartet dann, bis der Taster losgelassen wird, indem es eine Schleife durchl\u00e4uft, solange Pin 4 auf Low bleibt. Sobald der Taster losgelassen wird und Pin 4 wieder auf High-Potential liegt, wird die LED wieder eingeschaltet und der aktuelle Wert von \u201en&#8220; auf der Konsole ausgegeben.<\/p>\n\n\n\n<p>Das Programm erm\u00f6glicht es also, Tastenbet\u00e4tigungen zu z\u00e4hlen und die Anzahl auf der Konsole auszugeben, w\u00e4hrend eine LED jedes Mal aktiviert wird, wenn die Taste gedr\u00fcckt wird. Es kann somit verwendet werden, um einfache Schalter- oder Tasteninteraktionen zu z\u00e4hlen. W\u00fcrde man den Taster mit einer Schranke kombinieren, k\u00f6nnte man damit z. B. automatisch die Anzahl von Fahrzeugen oder Personen z\u00e4hlen, die die Schranke passieren.<\/p>\n\n\n\n<p>Die Variable \u201en&#8220; sollte bei jedem Bet\u00e4tigen des Tasters um genau den Wert 1 erh\u00f6ht werden. Beim Testen des Programms f\u00e4llt jedoch auf, dass \u201en&#8220; oft um den Wert 2, 3 oder sogar mehr \u201espringt&#8220;. Ursache ist das sogenannte \u201ePrellen&#8220; des Tasters. Aufgrund mechanischer Effekte schlie\u00dft dieser nicht immer sofort und eindeutig bei seiner Bet\u00e4tigung. Vielmehr wird zun\u00e4chst der Kontakt geschlossen, dann durch interne Federeffekte wieder kurz ge\u00f6ffnet und anschlie\u00dfend erneut geschlossen, bis sich der endg\u00fcltige Zustand einstellt. Jedes \u00d6ffnen und Schlie\u00dfen wird jedoch vom Raspberry Pi einzeln erfasst.<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\"> Bild&nbsp;6 <\/mark>zeigt diesen Vorgang als Oszillogramm.<\/p>\n\n\n\n<p>Um das unerw\u00fcnschte Prellen zu unterdr\u00fccken, kann man einen Kondensator (z. B. 100 nF,<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\"> siehe Bild 5<\/mark>)<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\"> <\/mark>parallel zum Schalter schalten. Der so entstehende Tiefpass unterdr\u00fcckt die einzelnen Schaltimpulse.<\/p>\n\n\n\n<p>Alternativ k\u00f6nnen auch softwareseitig Vorkehrungen getroffen werden, um ein klares Schaltsignal zu erhalten. Eine Methode ist, den Schaltzustand erst nach einer gewissen Wartezeit auszuwerten, d. h., so lange zu warten, bis das endg\u00fcltige Spannungspotential erreicht wurde. Weitere Details hierzu werden in sp\u00e4teren Artikeln erl\u00e4utert.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-bordered\" style=\"margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"364\" src=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild6_Python2-1600x364.jpg\" alt=\"Tasterprellen\" class=\"wp-image-6464\" srcset=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild6_Python2-1600x364.jpg 1600w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild6_Python2-300x68.jpg 300w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild6_Python2-768x175.jpg 768w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild6_Python2-1536x349.jpg 1536w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild6_Python2-2048x466.jpg 2048w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-element-caption\">Bild 6: Tasterprellen<\/figcaption><\/figure>\n\n\n\n<div class=\"wp-block-group is-style-without-space has-gray-lightest-100-background-color has-background is-layout-constrained wp-container-core-group-is-layout-c9b5e92c wp-block-group-is-layout-constrained\" style=\"margin-top:var(--wp--preset--spacing--30);margin-bottom:var(--wp--preset--spacing--30);padding-top:var(--wp--preset--spacing--30);padding-right:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--30)\">\n<h3 class=\"wp-block-heading\">\u00dcbungen und Erweiterungen<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Wie verhalten sich verschiedene Tastertypen hinsichtlich des Prellens?<\/li>\n\n\n\n<li>Welcher Kondensatorwert liefert die besten Schaltsignale?<\/li>\n<\/ul>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"margin-bottom:0\">Die gpiozero Library<\/h2>\n\n\n\n<p>\u201egpiozero&#8220; ist eine Python-Bibliothek, die eine einfache Schnittstelle f\u00fcr GPIO-Ports bietet. Die Bibliothek erm\u00f6glicht es, schnell und unkompliziert mit der Programmierung von elektronischen Komponenten zu beginnen. Sie bietet eine abstrakte und benutzerfreundliche Oberfl\u00e4che, die es Entwicklern erm\u00f6glicht, Bauelemente wie Taster, LEDs, Motoren und Sensoren anzusteuern.<\/p>\n\n\n\n<p>Die Library bietet eine F\u00fclle an M\u00f6glichkeiten:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>GPIO-Pins ein- und ausschalten<\/li>\n\n\n\n<li>Ereignisse \u00fcberwachen<\/li>\n\n\n\n<li>auf Tastendr\u00fccke reagieren<\/li>\n\n\n\n<li>PWM (Pulse Width Modulation = Pulsweitenmodulation) f\u00fcr die Steuerung von LEDs und Motoren verwenden<\/li>\n\n\n\n<li>und vieles mehr<\/li>\n<\/ul>\n\n\n\n<p>Die Bibliothek vereinfacht die Komplexit\u00e4t der GPIO-Programmierung und abstrahiert viele Details, sodass Entwickler sich auf die eigentliche Funktionalit\u00e4t ihrer Projekte konzentrieren k\u00f6nnen. Die gpiozero ist in der Python-Standardbibliothek enthalten. Das bedeutet, dass sie nicht separat installiert werden muss. Sie kann direkt in Python-Projekten verwendet werden, indem sie \u00fcber<strong> import gpiozero<\/strong> am Anfang des Codes eingef\u00fcgt wird.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Einfaches Ansteuern von Komponenten<\/h2>\n\n\n\n<p>Um beispielsweise die Button-Schnittstelle von gpiozero zu verwenden, muss diese lediglich importiert werden: <strong>from gpiozero import Button<\/strong><\/p>\n\n\n\n<p>Mit diesem Import ist dann die Button-Klasse in jedem Skript verwendbar. Die Button-Klasse stellt eine einfache Schnittstelle zum Lesen von Tasten bereit. Eine Instanz der Button-Klasse wird via <strong>button = Button(4)<\/strong> erstellt. Die Methode \u201eis_pressed\u201d erlaubt es nun, den Status eines Tasters abzurufen. Auch Ereignisse wie \u201ewhen_pressed&#8220; oder \u201ewhen_released&#8220; stehen nun zur Verf\u00fcgung, um auf Tastendr\u00fccke zu reagieren.<br>Alternativ kann die gesamte gpiozero-Bibliothek importiert werden: <strong>import gpiozero<\/strong><\/p>\n\n\n\n<p>In diesem Fall m\u00fcssen alle Verweise auf Elemente innerhalb von gpiozero mit einem Pr\u00e4fix versehen werden: <strong>button = gpiozero.Button(2)<\/strong><br>Das aus dem ersten Beitrag bekannte Programm zum periodischen Schalten einer LED kann ebenfalls mit gpiozero vereinfacht werden:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>from gpiozero import LED\nfrom time import sleep\n\nred = LED(17)\n\nwhile True:\n    red.on()\n    sleep(1)\n    red.off()\n    sleep(1)<\/code><\/pre>\n\n\n\n<p>Es geht sogar noch einfacher:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>from gpiozero import LED\nfrom signal import pause\n\nred = LED(17)\nred.blink()\npause()<\/code><\/pre>\n\n\n\n<p>Dabei kann die blink()-Anweisung \u00fcber zwei Parameter gesteuert werden: <strong>blink(onTime, off Time)<\/strong> wobei die Ein- bzw. Ausschaltzeit in Sekunden angegeben werden muss. Mit <strong>blink(1, 2)<\/strong> wird die LED also 1 Sekunde lang ein und 2 Sekunden lang ausgeschaltet. Werden keine Parameter angegeben, kommen die default-Werte:<\/p>\n\n\n\n<p>onTime = 1<br>offTime = 1<\/p>\n\n\n\n<p>zur Anwendung. Bei Verwendung einer Python-Shell (Thonny, IPython oder IDLE) kann die Anweisung pause() entfallen. Wird das Skript jedoch als Python-Datei gespeichert und ausgef\u00fchrt, w\u00fcrde die LED nur kurz aufblinken, das Skript w\u00fcrde enden und die LED w\u00fcrde sich ausschalten. Bei Verwendung der pause()-Anweisung wird das Skript dagegen permanent ausgef\u00fchrt, bis es manuell beendet wird (z. B. durch Dr\u00fccken von Strg+C). Auch die Helligkeit einer LED kann so gesteuert werden:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>from gpiozero import PWMLED\nfrom time import sleep\n\nled = PWMLED(17)\n\nwhile True:\n    led.value = 0 # off\n    sleep(1)\n    led.value = 0.5 # half brightness\n    sleep(1)\n    led.value = 1 # full brightness\n    sleep(1)<\/code><\/pre>\n\n\n\n<p>Sogar flie\u00dfende \u00dcberg\u00e4nge sind m\u00f6glich:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>from gpiozero import PWMLED\nfrom signal import pause\n\nled = PWMLED(17)\nled.pulse()\npause()<\/code><\/pre>\n\n\n\n<p>Analog zu blink() kann auch pulse \u00fcber zwei Parameterwerte gesteuert werden: <strong>Pulse(rampUp, RampDown)<\/strong><br><br>Wobei die rampUp die Zeit zum Hellerwerden, rampDown entsprechend f\u00fcr das Abdunkeln angibt.<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\"> Bild\u00a07<\/mark> zeigt, wie das original PWM-Signal direkt an der LED sowie das Tiefpass-gefilterte Quasi-Analogsignal aussieht.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized is-style-bordered\" style=\"margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)\"><img loading=\"lazy\" decoding=\"async\" width=\"926\" height=\"518\" src=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild7_Python2.jpg\" alt=\"PWM-Signal mit led.pulse(5,1)\" class=\"wp-image-6465\" style=\"width:550px\" srcset=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild7_Python2.jpg 926w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild7_Python2-300x168.jpg 300w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild7_Python2-768x430.jpg 768w\" sizes=\"auto, (max-width: 926px) 100vw, 926px\" \/><figcaption class=\"wp-element-caption\">Bild 7: PWM-Signal mit led.pulse(5,1)<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Multicolor-LED als Stimmungslicht<\/h2>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p>Besonders beeindruckend sind flie\u00dfende \u00dcberg\u00e4nge, wenn eine Mulicolor-Leuchtdiode verwendet wird. Diese Bauelemente werden auch als RGB-LEDs bezeichnet, da sie jeweils eine rote (R) eine gr\u00fcne (G) und eine blaue (B) LED integriert haben. <br><br>Das folgende Programm (PWM_LED.py) erzeugt ein buntes Farbenspiel <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">(Bild&nbsp;8)<\/mark>:<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full is-style-bordered\"><img loading=\"lazy\" decoding=\"async\" width=\"1358\" height=\"1064\" src=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild8_Python2.jpg\" alt=\"PWM-gesteuerte Dreifarben-LED\" class=\"wp-image-6458\" srcset=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild8_Python2.jpg 1358w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild8_Python2-300x235.jpg 300w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild8_Python2-768x602.jpg 768w\" sizes=\"auto, (max-width: 1358px) 100vw, 1358px\" \/><figcaption class=\"wp-element-caption\">Bild 8: PWM-gesteuerte Dreifarben-LED<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>from gpiozero import PWMLED\nfrom signal import pause\n\nled_red = PWMLED(17)\nled_red.pulse(2)\n\nled_green = PWMLED(27)\nled_green.pulse(4)\n\nled_blue = PWMLED(22)\nled_blue.pulse(8)\npause()<\/code><\/pre>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Fazit und Ausblick<\/h2>\n\n\n\n<p>Im zweiten Teil des Python-Grundkurses wurde das Ansteuern von Ports mithilfe von Python erl\u00e4utert. Mit der gpiozero-Bibliothek k\u00f6nnen diese Aufgaben auf sehr einfache Weise bew\u00e4ltigt werden. Python wird dadurch noch benutzerfreundlicher, und der Anschluss externer Komponenten wie LEDs, Tastern und \u00c4hnlichem wird zum Kinderspiel. <br>Im n\u00e4chsten Beitrag werden die logischen Funktionen von Python genauer untersucht. Diese bilden die Grundlage f\u00fcr alle komplexeren Aufgaben im Bereich von Abfragen und Entscheidungen usw. Dabei wird nicht nur die Software-Seite betrachtet, sondern es werden auch Hardware-Komponenten eingesetzt, die den Anwendungsbereich des Raspberry Pi und seiner Standard-Programmiersprache Python wesentlich erweitern.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Material<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Raspberry Pi mit Netzteil<\/li>\n<\/ul>\n\n\n<div class=\"alignnone wp-block-dhsv-product-teaser\">\n    <div data-component=\"ProductTeaser\" data-props=\"{&quot;productIds&quot;:&quot;153753,154712&quot;,&quot;view&quot;:&quot;list&quot;,&quot;slider&quot;:true,&quot;sliderMobile&quot;:true,&quot;align&quot;:&quot;none&quot;}\"><\/div>\n<\/div>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-gray-lightest-100-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><strong>\u00dcber den Autor<br><\/strong>Dr. G\u00fcnter Spanner ist als Autor zu den Themen Elektronik, Sensortechnik und Mikrocontroller einem weiten Fachpublikum bekannt. Schwerpunkt seiner hauptberuflichen T\u00e4tigkeit f\u00fcr verschiedene Gro\u00dfkonzerne wie Siemens und ABB ist die Projektleitung im Bereich Entwicklung und Technologie-Management. Der Dozent fu\u0308r Physik und Elektrotechnik hat zudem zahlreiche Fachartikel und Bu\u0308cher vero\u0308ffentlicht sowie Kurse und Lernpakete erstellt.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>GPIO-Pins sicher als Eing\u00e4nge nutzen: Sie erfahren, wie Pull-up\/-down-Widerst\u00e4nde definierte Pegel setzen, warum Taster prellen und wie Sie das entprellen (Hardware\/Software). Mit gpiozero lesen Sie Buttons, blinken und dimmen LEDs (PWM, RGB) \u2013 inklusive Code, Grenzwerten und Praxis-Tipps am Raspberry Pi.<\/p>\n","protected":false},"author":30,"featured_media":864,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[34],"tags":[1035,1029,1030,1028,1027,1032,1036,654,1033,1031,1034],"post-author":[137],"class_list":["post-4345","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python-micropython","tag-3v","tag-eingangsschutz-3","tag-gpio-stromgrenzen","tag-gpiozero-button-led-pwm","tag-pull-up-pull-down-widerstand","tag-pwmled-raspberry-pi","tag-python-hardwaresteuerung","tag-raspberry-pi-gpio","tag-rgb-led-steuern","tag-tasterprellen-entprellen","tag-thonny-python-beispiele","post-author-dr-guenter-spanner"],"acf":[],"info":{"thumbnail":{"url":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/header_phyton_teil11.jpg","alt":""},"teaserImage":{"ID":4826,"id":4826,"title":"liste-beitrag_python_t2_neu","filename":"Liste-Beitrag_python_t2_neu.jpg","filesize":97088,"url":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_t2_neu.jpg","link":"https:\/\/de.elv.com\/elvjournal\/einstieg-python-teil-2-gpios-steuern-die-welt\/liste-beitrag_python_t2_neu\/","alt":"","author":"5","description":"","caption":"","name":"liste-beitrag_python_t2_neu","status":"inherit","uploaded_to":4345,"date":"2025-09-29 12:19:01","modified":"2025-09-29 12:20:38","menu_order":0,"mime_type":"image\/jpeg","type":"image","subtype":"jpeg","icon":"https:\/\/elvjournal.elv.com\/wp-includes\/images\/media\/default.png","width":433,"height":274,"sizes":{"thumbnail":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_t2_neu-250x250.jpg","thumbnail-width":250,"thumbnail-height":250,"medium":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_t2_neu-300x190.jpg","medium-width":300,"medium-height":190,"medium_large":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_t2_neu.jpg","medium_large-width":433,"medium_large-height":274,"large":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_t2_neu.jpg","large-width":433,"large-height":274,"1536x1536":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_t2_neu.jpg","1536x1536-width":433,"1536x1536-height":274,"2048x2048":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_t2_neu.jpg","2048x2048-width":433,"2048x2048-height":274,"gform-image-choice-sm":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_t2_neu.jpg","gform-image-choice-sm-width":300,"gform-image-choice-sm-height":190,"gform-image-choice-md":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_t2_neu.jpg","gform-image-choice-md-width":400,"gform-image-choice-md-height":253,"gform-image-choice-lg":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_t2_neu.jpg","gform-image-choice-lg-width":433,"gform-image-choice-lg-height":274}},"categories":[{"id":34,"name":"Python &amp; MicroPython","slug":"python-micropython"}],"authors":[{"id":137,"name":"Dr. G\u00fcnter Spanner","slug":"dr-guenter-spanner"}],"document":false,"epaper":"","date":"19. Februar 2026","excerpt":"GPIO-Pins sicher als Eing\u00e4nge nutzen: Sie erfahren, wie Pull-up\/-down-Widerst\u00e4nde definierte Pegel setzen, warum Taster prellen und wie Sie das entprellen (Hardware\/Software). Mit gpiozero lesen Sie Buttons, blinken und dimmen LEDs (PWM, RGB) \u2013 inklusive Code, Grenzwerten und Praxis-Tipps am Raspberry Pi."},"_links":{"self":[{"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/posts\/4345","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/users\/30"}],"replies":[{"embeddable":true,"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/comments?post=4345"}],"version-history":[{"count":9,"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/posts\/4345\/revisions"}],"predecessor-version":[{"id":11500,"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/posts\/4345\/revisions\/11500"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/media\/864"}],"wp:attachment":[{"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/media?parent=4345"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/categories?post=4345"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/tags?post=4345"},{"taxonomy":"post-author","embeddable":true,"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/post-author?post=4345"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}