{"id":5591,"date":"2026-01-19T13:29:13","date_gmt":"2026-01-19T12:29:13","guid":{"rendered":"https:\/\/de.elv.com\/elvjournal\/?p=5591"},"modified":"2026-03-05T13:51:37","modified_gmt":"2026-03-05T12:51:37","slug":"sieben-segment-anzeigen-mit-python-ansteuern","status":"publish","type":"post","link":"https:\/\/de.elv.com\/elvjournal\/sieben-segment-anzeigen-mit-python-ansteuern\/","title":{"rendered":"Einstieg in Python (Teil 12): Sieben-Segment-Anzeigen mit Python ansteuern"},"content":{"rendered":"\n<p class=\"has-gray-light-color has-text-color has-link-color has-h-5-font-size wp-elements-e5d931e240e62cfd37b6f7f8c9f82e0f\"><strong>Einstieg in Python, Teil 12<\/strong><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Sieben-Segment-Anzeigen mit Python ansteuern<\/h1>\n\n\n\n<p><strong>Im Zeitalter virtueller Instrumente und grafischer Benutzeroberfl\u00e4chen k\u00f6nnte man meinen, dass klassische Sieben-Segment-Anzeigen l\u00e4ngst \u00fcberholt sind. Doch gerade im Ger\u00e4tebau haben sie nach wie vor klare Vorteile: Sie sind kompakt, kosteng\u00fcnstig, robust und lassen sich schnell und zuverl\u00e4ssig ablesen. Damit eignen sich Sieben-Segment-Anzeigen besonders gut f\u00fcr Projekte, bei denen es auf eine stromsparende und unkomplizierte Visualisierung ankommt.<\/strong><\/p>\n\n\n\n<p>In diesem Beitrag wird gezeigt, wie sich solche Anzeigen mit Python ansteuern lassen. Dabei verbindet sich die klassische Welt der Hardware mit der Flexibilit\u00e4t einer modernen Programmiersprache. So entsteht ein praxisnaher Einstieg in die direkte Ansteuerung von Elektronikbausteinen \u2013 ein idealer Lernschritt f\u00fcr alle, die ihre Python-Kenntnisse auf die Hardware-Ebene erweitern m\u00f6chten.<\/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\">Ansteuerung der vierstelligen Siebensegment-Anzeige mit dem Raspberry Pi<\/h2>\n\n\n\n<p>Neben dem Raspberry Pi selbst sind oftmals nur noch wenige zus\u00e4tzliche Bauelemente erforderlich, um ein vollst\u00e4ndiges Ger\u00e4t aufzubauen. Wird der Controller beispielsweise mit einer Sieben-Segment-LED-Anzeige kombiniert, so entsteht eine sehr universell nutzbare Plattform, auf der sich viele interessante Projekte realisieren lassen. <br><br>Ziffern k\u00f6nnen mit Sieben-Segment-Anzeigen einfach und effizient dargestellt werden. Derartige Anzeigen bestehen h\u00e4ufig aus acht LED-Elementen (sieben Segmente plus Dezimalpunkt), sie werden aber dennoch als Sieben-Segment-Displays bezeichnet. Die LED-Segmente sind in der Form einer Acht (\u201e8\u201c) angeordnet. Durch entsprechende Aktivierung bestimmter Elemente k\u00f6nnen so die Ziffern von 0 bis 9 in gut lesbarer Form dargestellt werden. <br>Dar\u00fcber hinaus lassen sich auch noch einige Gro\u00dfbuchstaben anzeigen (z. B. A, C, E, F etc.). M\u00f6chte man weitere Buchstaben anzeigen, m\u00fcsste man Sechzehn-Segmentanzeigen einsetzen. Diese sind aber vergleichsweise wenig verbreitet und daher teuer. Eine andere M\u00f6glichkeit, um Buchstaben und einfache Grafiken anzuzeigen, bieten die sogenannten Punktmatrix-Displays. Diese kommen aber ebenfalls verh\u00e4ltnism\u00e4\u00dfig wenig zum Einsatz.<\/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\">Vierstellige Sieben-Segment-Anzeigen<\/h2>\n\n\n\n<p>Sieben-Segment-Anzeigen werden in den verschiedensten Formen, Farben und Anschlussbelegungen hergestellt. Ein weit verbreiteter Typ ist in <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">Bild&nbsp;1 <\/mark>dargestellt. Die einzelnen Segmente werden \u00fcblicherweise mit den Buchstaben a bis g bezeichnet. Die anderen Anschl\u00fcsse sind entweder die gemeinsame Anode (Common Anode: CA) oder die gemeinsame Kathode (Common Cathode, CC) der Segmente, je nach Displaytyp<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\"> (s. Bild&nbsp;2)<\/mark>.<\/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<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"458\" src=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/01_Siebensegmentanzeige.jpg\" alt=\"Sieben-Segmentanzeige\" class=\"wp-image-6010\" srcset=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/01_Siebensegmentanzeige.jpg 800w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/01_Siebensegmentanzeige-300x172.jpg 300w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/01_Siebensegmentanzeige-768x440.jpg 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><figcaption class=\"wp-element-caption\">Bild 1: Einzelne vierstellige Sieben-Segment-Anzeige<\/figcaption><\/figure>\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-large is-style-bordered\" style=\"margin-top:var(--wp--preset--spacing--40);margin-bottom:var(--wp--preset--spacing--40)\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"765\" src=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/02_Anschlussbelegung_eines_4_x_7_Segment_LED_Displays-1600x765.png\" alt=\"Anschlussbelegung 4x7-Segmentdisplay\" class=\"wp-image-6011\" srcset=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/02_Anschlussbelegung_eines_4_x_7_Segment_LED_Displays-1600x765.png 1600w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/02_Anschlussbelegung_eines_4_x_7_Segment_LED_Displays-300x143.png 300w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/02_Anschlussbelegung_eines_4_x_7_Segment_LED_Displays-768x367.png 768w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/02_Anschlussbelegung_eines_4_x_7_Segment_LED_Displays-1536x735.png 1536w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/02_Anschlussbelegung_eines_4_x_7_Segment_LED_Displays.png 1608w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-element-caption\">Bild 2: Anschlussbelegung des 4&#215;7-Segment-Displays<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p>Zu den Hauptvorteilen von 7-Segment LED-Anzeigen z\u00e4hlt, dass sie auch aus gr\u00f6\u00dferer Entfernung noch gut ablesbar sind. Durch die Lichtemission der LEDs sind die Anzeigen selbst bei D\u00e4mmerung und Dunkelheit gut erkennbar. Ein vierstelliges Display mit zus\u00e4tzlichen Dezimalpunkten ist dabei sehr universell einsetzbar.<\/p>\n\n\n\n<p>Zum einen lassen sich mit einer vierstelligen Anzeige gut Stunden und Minuten f\u00fcr eine Uhr oder Minuten und Sekunden f\u00fcr einen Timer darstellen. Andererseits ist auch eine Anzeige mit zwei Vor- und zwei Nachkommastellen realisierbar &#8211; so k\u00f6nnen Spannungen oder Stromst\u00e4rken gut angezeigt werden. F\u00fcr eine Temperaturanzeige in Grad Celsius kann man sogar einen einfachen Trick anwenden um ein \u00b0-Zeichen darzustellen<\/p>\n\n\n\n<p>Ein \u00fcbliches 4&#215;7-Segementdisplay enth\u00e4lt 32 LED-Elemente, 4 x 7 = 28 LEDs sind f\u00fcr die Zifferndarstellung erforderlich. Dazu kommen dann noch beispielsweise 4 Dezimalpunkte.<\/p>\n\n\n\n<p>Meist sind jedoch entweder alle Anoden oder alle Kathoden jeweils einer Ziffer zusammengef\u00fchrt. Dar\u00fcber hinaus werden und auch alle Anoden bzw. Kathoden der jeweiligen Segmente verbunden. Ein solches Display weist dann nur 12 Pins auf:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Sieben Pins f\u00fcr die Kathoden der Displaysegmente a, b, c, d, e, f und g<\/li>\n\n\n\n<li>Ein Pin f\u00fcr die Dezimalpunkte (DP)<\/li>\n\n\n\n<li>Vier Anoden f\u00fcr die Einer- (E), Zehner- (Z), Hunderter- (H) und Tausender-(T) Stelle<\/li>\n<\/ul>\n\n\n\n<p>Neben der Einsparung von Pins hat die gemeinsame Herausf\u00fchrung von Anschl\u00fcssen noch den Vorteil, dass die betreffenden Anzeigen sehr leicht im sogenannten Zeitmultiplex betrieben werden k\u00f6nnen.<\/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\">Anschluss des Displays an den Raspberry Pi<\/h2>\n\n\n\n<p>Der Rasberry Pi verf\u00fcgt \u00fcber gen\u00fcgend IO-Pins, um eine 4&#215;7-Segmentanzeige direkt anzusteuern. In der folgenden Tabelle sind die erforderlichen Verbindungen angegeben.<\/p>\n\n\n\n<figure class=\"wp-block-table has-text-small-font-size\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Pin-Display<\/strong><\/td><td><strong>Funktion<\/strong><\/td><td><strong>Verbinden am RasPi mit Pin<\/strong><\/td><\/tr><tr><td>a<\/td><td>a<\/td><td>18<\/td><\/tr><tr><td>b<\/td><td>b<\/td><td>14<\/td><\/tr><tr><td>c<\/td><td>c<\/td><td>25<\/td><\/tr><tr><td>d<\/td><td>d<\/td><td>09<\/td><\/tr><tr><td>e<\/td><td>e<\/td><td>11<\/td><\/tr><tr><td>f<\/td><td>f<\/td><td>15<\/td><\/tr><tr><td>g<\/td><td>g<\/td><td>24<\/td><\/tr><tr><td>DP<\/td><td>Dezimalpunkt<\/td><td>10<\/td><\/tr><tr><td>Th<\/td><td>Tausenderstelle<\/td><td>22<\/td><\/tr><tr><td>H<\/td><td>Hunderterstelle<\/td><td>07<\/td><\/tr><tr><td>T<\/td><td>Zehnerstelle<\/td><td>08<\/td><\/tr><tr><td>O<\/td><td>Einerstelle<\/td><td>23<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">Bild&nbsp;3<\/mark> zeigt den zugeh\u00f6rigen Aufbau. Um eine m\u00f6glichst \u00fcbersichtliche Verdrahtung zu erm\u00f6glichen, wurde der Raspberry Pi um 180\u00b0 gedreht und die Darstellung entsprechend angepasst. Auf diese Weise k\u00f6nnen die Jumper-Kabel auf k\u00fcrzesten Wegen mit der Anzeige verbunden werden. Zudem wird die Verdrahtung auf dem Breadboard auf diese Weise besonders einfach.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\" style=\"margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)\"><img loading=\"lazy\" decoding=\"async\" width=\"1012\" height=\"1468\" src=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/03_SevenSeg_display_at_Pi.png\" alt=\"4x7-Segment-Display am Raspberry Pi\" class=\"wp-image-6012\" style=\"width:550px\" srcset=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/03_SevenSeg_display_at_Pi.png 1012w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/03_SevenSeg_display_at_Pi-207x300.png 207w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/03_SevenSeg_display_at_Pi-768x1114.png 768w\" sizes=\"auto, (max-width: 1012px) 100vw, 1012px\" \/><figcaption class=\"wp-element-caption\">Bild 3: 4&#215;7-Segment-Display am Raspberry Pi<\/figcaption><\/figure>\n\n\n\n<p>Die folgenden beiden Fotos zeigen den Aufbau auf dem Breadboard zun\u00e4chst ohne <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">(Bild&nbsp;4)<\/mark> und dann mit eingesetztem Displaymodul <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">(Bild&nbsp;5)<\/mark>.&nbsp;&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<div class=\"wp-block-columns are-vertically-aligned-bottom is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-bottom is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"574\" src=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/04_Breadboard_ohne_Display.jpg\" alt=\"Breadboard noch ohne 4x7-Segment-Anzeige\" class=\"wp-image-6013\" srcset=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/04_Breadboard_ohne_Display.jpg 1024w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/04_Breadboard_ohne_Display-300x168.jpg 300w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/04_Breadboard_ohne_Display-768x431.jpg 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Bild 4: Breadboard noch ohne 4&#215;7-Segment-Anzeige<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-bottom is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"809\" height=\"498\" src=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/05_Breadboard_mit_Display_.jpg\" alt=\"Breadboard mit 4x7-Segment-Anzeige am Raspberry Pi\" class=\"wp-image-6014\" srcset=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/05_Breadboard_mit_Display_.jpg 809w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/05_Breadboard_mit_Display_-300x185.jpg 300w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/05_Breadboard_mit_Display_-768x473.jpg 768w\" sizes=\"auto, (max-width: 809px) 100vw, 809px\" \/><figcaption class=\"wp-element-caption\">Bild 5: Breadboard mit 4&#215;7-Segment-Anzeige am Raspberry Pi<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p>Als Vorwiderst\u00e4nde kommen 220-Ohm-Werte mit der Farbringkombination rot-rot-braun-gold zum Einsatz.<\/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\"><a>Ansteuerung der 4&#215;7 \u2013Segment LED-Anzeige<\/a><\/h2>\n\n\n\n<p>F\u00fcr die Ansteuerung einer 4&#215;7-Segmentanzeige kann das folgende Python-Programm verwendet 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>import RPi.GPIO as GPIO\nimport time\nGPIO.setmode(GPIO.BCM)\n\n# GPIO ports for display pins\n#            a  b  c  d  e f  g  DP\nsegments =  (18,14,25,9,11,15,24,10)\n\nfor segment in segments:\n    GPIO.setup(segment, GPIO.OUT)\n    GPIO.output(segment, 1)\n\n# GPIO ports for digits pins \n#         Th  H  T  O\ndigits = (22, 7, 8, 23)\n\nfor digit in digits:\n    GPIO.setup(digit, GPIO.OUT)\n    GPIO.output(digit, 0)\n\nnum ={  ' ':(1,1,1,1,1,1,1),    '0':(0,0,0,0,0,0,1),    '1':(1,0,0,1,1,1,1),\n        '2':(0,0,1,0,0,1,0),    '3':(0,0,0,0,1,1,0),    '4':(1,0,0,1,1,0,0),\n        '5':(0,1,0,0,1,0,0),    '6':(0,1,0,0,0,0,0),    '7':(0,0,0,1,1,1,1),\n        '8':(0,0,0,0,0,0,0),    '9':(0,0,0,0,1,0,0)\n     }\ntry:\n    while True:\n        n = 4711\n        s = str(n)\n        for digit in range(4):\n            for loop in range(0,7):\n                GPIO.output(segments&#91;loop], num&#91;s&#91;digit]]&#91;loop])\n            GPIO.output(digits&#91;digit], 1)\n            time.sleep(0.001)\n            GPIO.output(digits&#91;digit], 0)\nfinally:\n    GPIO.cleanup()<\/code><\/pre>\n\n\n\n<p>Zun\u00e4chst werden hier den einzelnen LED-Segmenten die zugeh\u00f6rigen Ports zugewiesen (siehe auch Tabelle):<\/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># GPIO ports for display pins\n#            a  b  c  d  e f  g  DP\nsegments =  (18,14,25,9,11,15,24,10)<\/code><\/pre>\n\n\n\n<p>Dann erfolgt die Zuweisung der Digit-Anoden-Pins:<\/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># GPIO ports for digits pins \n#         Th  H  T  O\ndigits = (22, 7, 8, 23)<\/code><\/pre>\n\n\n\n<p>In der Initialisierungsroutine werden diese aktiven Ports entsprechend als Ausg\u00e4nge deklariert:<\/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>for segment in segments:\n\t    GPIO.setup(segment, GPIO.OUT)\n\t    GPIO.output(segment, 1)<\/code><\/pre>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Mit den Pins f\u00fcr die Anoden wird entsprechend ebenso verfahren.<\/p>\n\n\n\n<p>Dann folgt eine Tabelle, die den einzelnen Ziffern die korrekten Leuchtsegmente zuordnet. Die folgende Tabelle zeigt ein Beispiel f\u00fcr die Ziffer \u201e0\u201c.<\/p>\n\n\n\n<figure class=\"wp-block-table has-text-small-font-size\"><table><tbody><tr><td><strong>Display-Pin<\/strong><\/td><td>a<\/td><td>b<\/td><td>c<\/td><td>d<\/td><td>e<\/td><td>f<\/td><td>g<\/td><\/tr><tr><td><strong>Zustand z. B. f\u00fcr &#8222;0&#8220;<\/strong><\/td><td>0<\/td><td>0<\/td><td>0<\/td><td>0<\/td><td>0<\/td><td>0<\/td><td>1<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Da ein Common-Anode-Display verwendet wird, muss die Kathode eines Segments auf Null-Potential gelegt werden, wenn es leuchten soll. Daraus ergibt sich die Codierung f\u00fcr die Darstellung der \u201eNull\u201c: Alle Segmente bis auf das <strong>g<\/strong>-Segment m\u00fcssen leuchten, d.&nbsp;h. <strong>a<\/strong> bis <strong>f<\/strong> liegen auf Null-Potential, <strong>g<\/strong> wird auf HIGH geschaltet.<\/p>\n\n\n\n<p>Damit ergibt sich das Bin\u00e4rmuster f\u00fcr die \u201eNull\u201c zu:<\/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>                a b c d e f g \n\t\t0 0 0 0 0 0 1 <\/code><\/pre>\n\n\n\n<p>Entsprechend k\u00f6nne alle restlichen Ziffern codiert werden. Die Tabelle zeig das Ergebnis:<\/p>\n\n\n\n<figure class=\"wp-block-table has-text-small-font-size\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Ziffer<\/strong><\/td><td><strong>a<\/strong><\/td><td><strong>b<\/strong><\/td><td><strong>c<\/strong><\/td><td><strong>d<\/strong><\/td><td><strong>e<\/strong><\/td><td><strong>f<\/strong><\/td><td><strong>g<\/strong><\/td><\/tr><tr><td>0<\/td><td>0<\/td><td>0<\/td><td>0<\/td><td>0<\/td><td>0<\/td><td>0<\/td><td>1<\/td><\/tr><tr><td>1<\/td><td>1<\/td><td>0<\/td><td>0<\/td><td>1<\/td><td>1<\/td><td>1<\/td><td>1<\/td><\/tr><tr><td>2<\/td><td>0<\/td><td>0<\/td><td>1<\/td><td>0<\/td><td>0<\/td><td>1<\/td><td>0<\/td><\/tr><tr><td>3<\/td><td>0<\/td><td>0<\/td><td>0<\/td><td>0<\/td><td>1<\/td><td>1<\/td><td>0<\/td><\/tr><tr><td>4<\/td><td>1<\/td><td>0<\/td><td>0<\/td><td>1<\/td><td>1<\/td><td>0<\/td><td>0<\/td><\/tr><tr><td>5<\/td><td>0<\/td><td>1<\/td><td>0<\/td><td>0<\/td><td>1<\/td><td>0<\/td><td>0<\/td><\/tr><tr><td>6<\/td><td>0<\/td><td>1<\/td><td>0<\/td><td>0<\/td><td>0<\/td><td>0<\/td><td>0<\/td><\/tr><tr><td>7<\/td><td>0<\/td><td>0<\/td><td>0<\/td><td>1<\/td><td>1<\/td><td>1<\/td><td>1<\/td><\/tr><tr><td>8<\/td><td>0<\/td><td>0<\/td><td>0<\/td><td>0<\/td><td>0<\/td><td>0<\/td><td>0<\/td><\/tr><tr><td>9<\/td><td>0<\/td><td>0<\/td><td>0<\/td><td>0<\/td><td>1<\/td><td>0<\/td><td>0<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Daraus ergibt sich die Zuordnungstabelle im Programm:<\/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>num ={\t'0':(0,0,0,0,0,0,1),    '1':(1,0,0,1,1,1,1),\n\t'2':(0,0,1,0,0,1,0),    '3':(0,0,0,0,1,1,0),\n\t'4':(1,0,0,1,1,0,0),    '5':(0,1,0,0,1,0,0),\n\t'6':(0,1,0,0,0,0,0),    '7':(0,0,0,1,1,1,1),\n\t'8':(0,0,0,0,0,0,0),    '9':(0,0,0,0,1,0,0)\n     }<\/code><\/pre>\n\n\n\n<p>Nun wird eine Beispielzahl festgelegt:<\/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>n = 4711<\/code><\/pre>\n\n\n\n<p>und in einen String umgewandelt:<\/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>s = str(n)<\/code><\/pre>\n\n\n\n<p>Anschlie\u00dfend werden die Digits \u00fcber eine for-Schleife angesteuert. Innerhalb dieser Schleife sorgt eine zweite Schleife f\u00fcr die Ansteuerung der einzelnen Displaysegmente <strong>a<\/strong> bis <strong>g<\/strong> entsprechend der oben definierten Tabelle.<\/p>\n\n\n\n<p>Nach dem Starten des Programms sollte somit die Zahl \u201e1234\u201c im Display erscheinen <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">(siehe Bild&nbsp;6)<\/mark>.<\/p>\n\n\n\n<p>Bei genauer Betrachtung wird man feststellen, dass die Anzeige nicht vollkommen flimmerfrei ist. Dies ergibt sich aus der Tatsache, dass der Raspberry&nbsp;Pi im Gegensatz z.&nbsp;B. zum EPS32 oder Arduino nicht \u201eechtzeitf\u00e4hig\u201c ist.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\" style=\"margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"1268\" src=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/06-Breadboard-mit-4x7-Segmentanzeige-am-Raspberry-Pi-1600x1268.jpg\" alt=\"Breadboard mit 4x7-Segment-Anzeige am Raspberry Pi\" class=\"wp-image-6015\" style=\"width:550px\" srcset=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/06-Breadboard-mit-4x7-Segmentanzeige-am-Raspberry-Pi-1600x1268.jpg 1600w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/06-Breadboard-mit-4x7-Segmentanzeige-am-Raspberry-Pi-300x238.jpg 300w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/06-Breadboard-mit-4x7-Segmentanzeige-am-Raspberry-Pi-768x609.jpg 768w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/06-Breadboard-mit-4x7-Segmentanzeige-am-Raspberry-Pi-1536x1217.jpg 1536w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/06-Breadboard-mit-4x7-Segmentanzeige-am-Raspberry-Pi-2048x1623.jpg 2048w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-element-caption\">Bild 6: Breadboard mit 4&#215;7-Segment-Anzeige am Raspberry Pi<\/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\">Schnelligkeit und Echtzeit<\/h2>\n\n\n\n<p>Die Ansteuerung der Siebensegment-Anzeige zeigt ein wichtiges Problem in der Datenverarbeitung und insbesondere in der Auswertung von Sensorsignalen auf. Obwohl der Raspberry Pi mit einer Taktfrequenz von mindestens 700&nbsp;MHz arbeitet, ist er mit einer flimmerfreien Zifferndarstellung bereits \u00fcberfordert. Ein Arduino dagegen arbeitet mit lediglich 16&nbsp;MHz, dennoch kann er eine Sieben-Segment-Anzeige problemlos flimmerfrei ansteuern.<\/p>\n\n\n\n<p>Die Ursache liegt darin, dass der Arduino kein aufwendiges Betriebssystem steuern muss. In seinem Speicher befindet sich immer genau ein Programm, das im Wesentlichen sequenziell abgearbeitet wird. Das komplexe Linux-System des Raspberry&nbsp;Pi mit dem Kernel, den GNU-Tools, der Grafik-, Maus und Tastatursteuerung und verschiedenen \u201eD\u00e4mons\u201c im Hintergrund wird immer wieder von untergeordneten Aufgaben unterbrochen.<\/p>\n\n\n\n<p>Beim Arduino kann lediglich eine \u00fcberschaubare Anzahl von Interrupts zu einer tempor\u00e4ren Programmunterbrechung f\u00fchren. Bei sorgf\u00e4ltiger Programmierung kann auch diese St\u00f6rquelle praktisch vollst\u00e4ndig eliminiert werden.<\/p>\n\n\n\n<p>Deshalb kann man beim Arduino eine festgelegte maximale Antwortzeit f\u00fcr eine bestimmte Programmaufgabe angeben. Diese M\u00f6glichkeit wird als \u201eEchtzeitf\u00e4higkeit\u201c bezeichnet. Dies ist insbesondere im Bereich von Steuer- und Regelungsaufgaben von gr\u00f6\u00dfter Bedeutung. In der Fahrzeugsteuerung kommt es beispielsweise darauf an, dass das Steuersystem innerhalb einer Maximalzeit auf ein Ereignis reagiert. Deshalb k\u00f6nnen hier keine Rechnersysteme mit komplexen Betriebssystemen eingesetzt werden, da in diesem Falle eine feste Reaktionszeit niemals garantiert werden kann, auch wenn der Prozessor selbst mit hoher Geschwindigkeit arbeitet.<\/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\">Digitaluhr mit vierstelliger Anzeige<\/h2>\n\n\n\n<p>In einer ersten praktischen Anwendung soll das Display die aktuelle Uhrzeit anzeigen. Dazu muss das Programm aus dem letzten Abschnitt nur minimal erweitert werden. Mit den beiden Programmzeilen<\/p>\n\n\n\n<p><\/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>n = time.ctime()&#91;11:13]+time.ctime()&#91;14:16]\ns = str(n).rjust(4)<\/code><\/pre>\n\n\n\n<p>wird aus der time-Bibliothek die aktuelle Urzeit extrahiert und im Format hh.mm dargestellt. Zus\u00e4tzlich wird im Programm der mittlere Dezimalpunkt im Sekundentakt aktiviert, um Stunden und Minuten zu trennen. Damit sieht das Programm zur Digitaluhr wie folgt aus:<\/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\nGPIO.setmode(GPIO.BCM)\nimport time\n\n# GPIO ports for the 7seg pins\n#            a  b c  d  e  f  g  d DP\nsegments =  (11,7,15,17,22,8,10,25,18)\n\nfor segment in segments:\n    GPIO.setup(segment, GPIO.OUT)\n    GPIO.output(segment, 1)\n\n# GPIO ports for the digit 0-3 pins \ndigits = (25, 24, 23, 14)\n\n\nfor digit in digits:\n    GPIO.setup(digit, GPIO.OUT)\n    GPIO.output(digit, 0)\n\nnum ={\n    ' ':(1,1,1,1,1,1,1),    '0':(0,0,0,0,0,0,1),    '1':(1,0,0,1,1,1,1),\n    '2':(0,0,1,0,0,1,0),    '3':(0,0,0,0,1,1,0),    '4':(1,0,0,1,1,0,0),\n    '5':(0,1,0,0,1,0,0),    '6':(0,1,0,0,0,0,0),    '7':(0,0,0,1,1,1,1),\n    '8':(0,0,0,0,0,0,0),    '9':(0,0,0,0,1,0,0)}\n\ntry:\n    while True:\n        n = time.ctime()&#91;11:13]+time.ctime()&#91;14:16]\n        s = str(n).rjust(4)\n        for digit in range(4):\n            for loop in range(0,7):\n                GPIO.output(segments&#91;loop], num&#91;s&#91;digit]]&#91;loop])\n                if (int(time.ctime()&#91;18:19])%2 == 0) and (digit == 1):\n                   GPIO.output(18, 0)\n                else:\n                    GPIO.output(18, 1)\n            GPIO.output(digits&#91;digit], 1)\n            time.sleep(0.001)\n            GPIO.output(digits&#91;digit], 0)\nfinally:\n    GPIO.cleanup()<\/code><\/pre>\n\n\n\n<p>Hierbei ist zu beachten, dass der Raspberry&nbsp;Pi die Uhrzeit automatisch aus dem Internet bezieht. Besteht keine Verbindung zum Internet, kann die aktuelle Uhrzeit \u00fcber<\/p>\n\n\n\n<p><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sudo date &#8222;1224201516&#8220;<\/em><\/p>\n\n\n\n<p>eingegeben werden. Uhrzeit und Datum werden dabei im Format<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MMTThhmmJJ<\/p>\n\n\n\n<p>angegeben (M=Monat, T=Tag, h=Stunde,m=Minute, J=Jahr). Die Einstellung wird anschlie\u00dfend mit der Ausgabe des neuen Datums und Uhrzeit quittiert:<\/p>\n\n\n\n<p><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sa 24. Dez 20:15:00 CET 2016<\/em><\/p>\n\n\n\n<p>Allerdings geht diese Einstellung bei jedem Neustart verloren. Abhilfe k\u00f6nnte hier eine Real-Time-Clock schaffen, die als Bausatz passend zum Raspberry&nbsp;Pi erh\u00e4ltlich ist. <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">Bild&nbsp;7<\/mark> zeigt die Raspberry&nbsp;Pi-Digitaluhr in Aktion.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\" style=\"margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"1122\" src=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/07-Raspberry-Pi-als-Digitaluhr-1600x1122.jpg\" alt=\"Raspberry Pi als Digitaluhr\" class=\"wp-image-6016\" style=\"width:550px\" srcset=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/07-Raspberry-Pi-als-Digitaluhr-1600x1122.jpg 1600w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/07-Raspberry-Pi-als-Digitaluhr-300x210.jpg 300w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/07-Raspberry-Pi-als-Digitaluhr-768x539.jpg 768w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/07-Raspberry-Pi-als-Digitaluhr-1536x1077.jpg 1536w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/07-Raspberry-Pi-als-Digitaluhr-2048x1436.jpg 2048w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-element-caption\">Bild 7: Raspberry Pi als Digitaluhr<\/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\">Sieben-Segment-Anzeige mit Treiber<\/h2>\n\n\n\n<p>Die Ansteuerung von Sieben-Segment-Anzeige kann wesentlich vereinfacht werden, wenn Treiber-ICs wie der <strong>TM1637<\/strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\"> (Bild&nbsp;8)<\/mark> zum Einsatz kommen. Dieser Baustein reduziert den Verkabelungsaufwand erheblich, da er die komplette Multiplex-Steuerung \u00fcbernimmt und lediglich zwei Datenleitungen (CLK und DIO) ben\u00f6tigt.<\/p>\n\n\n\n<p>In Kombination mit dem Raspberry&nbsp;Pi lassen sich damit schnell und zuverl\u00e4ssig digitale Anzeigen aufbauen \u2013 sei es f\u00fcr Messwerte, Uhrenprojekte oder kleine Embedded-Anwendungen. In diesem Abschnitt wird gezeigt, wie eine Sieben-Segment-Anzeige mit dem TM1637-Treiber am Raspberry Pi angeschlossen und mit Python angesteuert wird.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1148\" height=\"636\" src=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/08-Sieben-Segment-Anzeige-Modul-mit-integriertem-Treiber.jpg\" alt=\"Sieben-Segment-Anzeige-Modul\" class=\"wp-image-6017\" style=\"width:550px\" srcset=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/08-Sieben-Segment-Anzeige-Modul-mit-integriertem-Treiber.jpg 1148w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/08-Sieben-Segment-Anzeige-Modul-mit-integriertem-Treiber-300x166.jpg 300w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/08-Sieben-Segment-Anzeige-Modul-mit-integriertem-Treiber-768x425.jpg 768w\" sizes=\"auto, (max-width: 1148px) 100vw, 1148px\" \/><figcaption class=\"wp-element-caption\">Bild 8: Sieben-Segment-Anzeige-Modul mit integriertem Treiber<\/figcaption><\/figure>\n\n\n\n<p>F\u00fcr ein Sieben-Segment-Modul mit TM1637-Treiber sind lediglich die folgenden<strong> <\/strong>Anschl\u00fcsse erforderlich:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>VCC \u2192 3,3 V (oder 5 V, je nach Display-Modul)<\/li>\n\n\n\n<li>GND \u2192 GND<\/li>\n\n\n\n<li>CLK \u2192 GPIO 23<\/li>\n\n\n\n<li>DIO \u2192 GPIO 24<\/li>\n<\/ul>\n\n\n\n<p>Vor der Verwendung des Moduls ist die erforderliche Bibliothek zuvor auf dem Raspberry&nbsp;Pi zu installieren:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pip install tm1637<br>Danach kann das folgende Programm gestartet werden (SevenSegClock_TM1637.py). Durch die Verwendung der Bibliothek f\u00e4llt das Programm sehr kompakt aus, da die Festlegung der LED-Pins etc. bereits in der Bibliothek erfolgt. Man kann sich daher direkt auf die eigentliche Anwendung konzentrieren. Zudem kann die Displayhelligkeit in diesem Fall sehr einfach eingestellt werden, da daf\u00fcr eine eigene Routine implementiert wurde.<\/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 tm1637\nimport time\n\n# GPIO-Pins (BCM-Nummern)\nCLK = 23  # Clock-Pin\nDIO = 24  # Data-Pin\n\n# Display-Objekt anlegen\ndisplay = tm1637.TM1637(clk=CLK, dio=DIO)\n\n# Helligkeit einstellen (0=aus, 7=max)\ndisplay.brightness(3)\n\ntry:\n    while True:\n        now = time.strftime(\"%H%M\")\n        display.show(now)\n        # Blinkender Doppelpunkt\n        display.show_doublepoint(True)\n        time.sleep(1)\n        display.show_doublepoint(False)\n        time.sleep(1)\n\nexcept KeyboardInterrupt:\n    display.show(\"    \")  # Display leeren\n    print(\"\\nProgramm beendet\")<\/code><\/pre>\n\n\n\n<p>Das Programm zeigt aktuelle Uhrzeit im Format HH:MM mit einem blinkenden Doppelpunkt an. Die Routine<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp; display = tm1637.TM1637(clk=CLK, dio=DIO)<\/p>\n\n\n\n<p>erstellt ein TM1637-Objekt, das die Kommunikation mit dem 7-Segment-Display \u00fcber die angegebenen GPIO-Pins (CLK und DIO) steuert. <strong>Details<\/strong>: Die tm1637.TM1637-Klasse initialisiert die Verbindung zum Display. Der TM1637-Chip verwendet ein propriet\u00e4res Protokoll, das \u00fcber die beiden Pins (CLK und DIO) kommuniziert. Die Bibliothek k\u00fcmmert sich um die Low-Level-Details dieser Kommunikation.<\/p>\n\n\n\n<p>Die Funktion<\/p>\n\n\n\n<p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/strong>display.brightness(3)<\/p>\n\n\n\n<p>legt die Helligkeit des Displays fest. Der Wert 3 liegt im mittleren Bereich, welcher von 0 (aus) bis 7 (maximale Helligkeit) reicht. Die Helligkeit wird durch Pulsweitenmodulation (PWM) im TM1637-Chip gesteuert.<\/p>\n\n\n\n<p>Die Uhrzeit-Anzeige mit blinkendem Doppelpunkt wird \u00fcber die Hauptschleife gesteuert. Dort wird<strong> <\/strong>die aktuelle Uhrzeit im Format HH.MM (Stunden und Minuten ohne Doppelpunkt) angezeigt, wobei der Doppelpunkt zwischen den Stunden und Minuten abwechselnd ein- und ausgeschaltet wird, um einen blinkenden Effekt zu erzeugen. Die Uhrzeit wird jede Sekunde aktualisiert, indem &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; time.strftime<\/p>\n\n\n\n<p>die aktuelle Systemzeit abruft. Der blinkende Doppelpunkt (1&nbsp;Sekunde an, 1&nbsp;Sekunde aus) simuliert somit eine typische digitale Uhr. Die Try\/Except Konstruktion f\u00e4ngt die Unterbrechung des Programms durch den Benutzer ab (z.&nbsp;B. durch Dr\u00fccken von Strg+C) und sorgt f\u00fcr ein sauberes Programmende. <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">Bild&nbsp;9<\/mark> zeigt einen Prototyp-Aufbau der Digitaluhr.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\" style=\"margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"1221\" src=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/09-Anzeige-mit-Treiber-am-Pi-1600x1221.jpg\" alt=\"Anzeige mit Treiber am Pi\" class=\"wp-image-6018\" style=\"width:550px\" srcset=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/09-Anzeige-mit-Treiber-am-Pi-1600x1221.jpg 1600w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/09-Anzeige-mit-Treiber-am-Pi-300x229.jpg 300w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/09-Anzeige-mit-Treiber-am-Pi-768x586.jpg 768w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/09-Anzeige-mit-Treiber-am-Pi-1536x1172.jpg 1536w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/09-Anzeige-mit-Treiber-am-Pi-2048x1563.jpg 2048w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-element-caption\">Bild 9: Anzeige mit Treiber am Pi<\/figcaption><\/figure>\n\n\n\n<p>Wenn man das Display zusammen mit dem Raspberry&nbsp;Pi in ein passendes Geh\u00e4use einbaut, entsteht eine alltagstaugliche und formsch\u00f6ne Digitaluhr<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\"> (siehe Bild&nbsp;10)<\/mark>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\" style=\"margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)\"><img loading=\"lazy\" decoding=\"async\" width=\"1563\" height=\"1303\" src=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/10-Sieben-Segement-Display-in-einem-Gehaeuse.jpg\" alt=\"Internet-Radiowecker\" class=\"wp-image-6019\" style=\"width:550px\" srcset=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/10-Sieben-Segement-Display-in-einem-Gehaeuse.jpg 1563w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/10-Sieben-Segement-Display-in-einem-Gehaeuse-300x250.jpg 300w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/10-Sieben-Segement-Display-in-einem-Gehaeuse-768x640.jpg 768w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/10-Sieben-Segement-Display-in-einem-Gehaeuse-1536x1280.jpg 1536w\" sizes=\"auto, (max-width: 1563px) 100vw, 1563px\" \/><figcaption class=\"wp-element-caption\">Bild 10: Internet-Radiowecker mit Sieben-Segment-Anzeige<\/figcaption><\/figure>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">Bild&nbsp;11<\/mark> zeigt zum Abschluss eine weitere Anwendung der Sieben-Segment-Anzeige. Hier dient sie als Display f\u00fcr einen selbstgebauten Neigungsmesser. Neben dem Display und dem Raspberry&nbsp;Pi ist hierf\u00fcr nur noch ein Beschleunigungsmessmodul erforderlich. Details dazu folgen in einem sp\u00e4teren Artikel im ELVjournal online.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\" style=\"margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"1012\" src=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/11-Neigungsmesser-1600x1012.jpg\" alt=\"Neigungsmesser mit Sieben-Segment-Anzeige\" class=\"wp-image-6020\" style=\"width:550px\" srcset=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/11-Neigungsmesser-1600x1012.jpg 1600w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/11-Neigungsmesser-300x190.jpg 300w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/11-Neigungsmesser-768x486.jpg 768w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/11-Neigungsmesser-1536x972.jpg 1536w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/11-Neigungsmesser-2048x1296.jpg 2048w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-element-caption\">Bild 11: Neigungsmesser mit Sieben-Segment-Anzeige<\/figcaption><\/figure>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-group has-gray-lightest-100-background-color has-background is-layout-constrained wp-container-core-group-is-layout-ff778368 wp-block-group-is-layout-constrained\" style=\"padding-right:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--30)\">\n<h2 class=\"wp-block-heading\"><strong>Erg\u00e4nzungen, \u00dcbungen und Anregungen<\/strong><\/h2>\n\n\n\n<p><strong>Anzeige allgemein:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Wie k\u00f6nnte man beim direkten Anschluss des Displays an den Raspberry&nbsp;Pi die Helligkeit \u00e4ndern (Stichwort: PWM)?<\/li>\n\n\n\n<li>Wie kann man mehrere Digits an den Raspberry&nbsp;Pi anschlie\u00dfen, um z.&nbsp;B. Stunden, Minuten und Sekunden (hh:mm:ss) sowie Tag, Monat und Jahr (TT.MM.JJJJ) anzuzeigen?<\/li>\n<\/ul>\n\n\n\n<p><strong>Digitaluhr:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Wie k\u00f6nnte die Uhrzeitanzeige f\u00fcr Sekunden erweitert werden?<\/li>\n\n\n\n<li>Die Helligkeit k\u00f6nnte dynamisch basierend auf der Umgebungsbeleuchtung angepasst werden (z.&nbsp;B. mit einem Lichtsensor) \u2013 wie m\u00fcsste das Programm dazu aussehen?<\/li>\n\n\n\n<li>Fehlerbehandlung: Wie kann man zus\u00e4tzliche try-except-Bl\u00f6cke hinzuf\u00fcgen, um Verbindungsfehler oder Hardwareprobleme abzufangen?<\/li>\n\n\n\n<li>Wie k\u00f6nnte man Taster hinzuf\u00fcgen, um zwischen verschiedenen Anzeigemodi (z.&nbsp;B. Z\u00e4hler, Uhrzeit, Datum) zu wechseln, oder die Uhr zu stellen?<br><\/li>\n<\/ul>\n<\/div>\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\">Zusammenfassung und Ausblick<\/h2>\n\n\n\n<p>In diesem Artikel wurde die Programmierung von Sieben-Segment-Anzeigen mit Python ausf\u00fchrlich dargestellt. Praktische Anwendungen reichten hierbei von einfachen Zifferndarstellungen bis hin zu kompletten, praxistauglichen Digitaluhren.<\/p>\n\n\n\n<p>Im n\u00e4chsten Beitrag wird es um weitere alphanumerische Displays gehen. Diese k\u00f6nnen neben Ziffern und einfachen Zeichen auch komplette Zahlen und sogar Grafiken darstellen. Mit den passenden Python-Bibliotheken wird die Programmierung von LCD-Displays oder modernen OLEDs zum Kinderspiel. Dabei sollen neben den Grundlagen auch wieder praktische Anwendungen wie Messwertausgaben und Funktionsgrafiken zum Einsatz kommen.<\/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\">Material<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Raspberry Pi mit Netzteil<\/li>\n\n\n\n<li>Breadboard und Jumper-Kabel<\/li>\n\n\n\n<li>Sieben-Segment-Anzeigen<\/li>\n\n\n\n<li>Anzeigemodul mit TM1637-Teiber<\/li>\n\n\n\n<li>Kleinteile aus dem Set PAD-PRO-EXSB<\/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;158980&quot;,&quot;view&quot;:&quot;list&quot;,&quot;align&quot;:&quot;none&quot;,&quot;slider&quot;:false,&quot;sliderMobile&quot;:false}\"><\/div>\n<\/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\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Im Ger\u00e4tebau sind 7-Segment-Anzeigen weiterhin beliebt: g\u00fcnstig, robust, sofort ablesbar. Dieser Beitrag zeigt, wie Sie Displays direkt per Python\/GPIO oder komfortabel \u00fcber den TM1637 am Raspberry Pi ansteuern.<\/p>\n","protected":false},"author":6,"featured_media":864,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[34],"tags":[122,969,970,971,126,968,123,972,125,124],"post-author":[137],"class_list":["post-5591","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python-micropython","tag-bargraphanzeige-tkinter","tag-digitaluhr-python-raspberry-pi","tag-gpio-pwm-helligkeit","tag-multiplexing-7-segment-raspberry-pi","tag-openweathermap-klimastation","tag-raspberry-pi-7-segment","tag-raspberry-pi-mcp3002","tag-tm1637-python","tag-virtuelle-instrumente-python-aufbauen","tag-virtuelles-oszilloskop-python","post-author-dr-guenter-spanner"],"acf":[],"info":{"thumbnail":{"url":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/header_phyton_teil11.jpg","alt":""},"teaserImage":{"ID":10203,"id":10203,"title":"liste-beitrag_python_neu","filename":"Liste-Beitrag_python_neu.jpg","filesize":97203,"url":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_neu.jpg","link":"https:\/\/de.elv.com\/elvjournal\/sieben-segment-anzeigen-mit-python-ansteuern\/liste-beitrag_python_neu\/","alt":"","author":"5","description":"","caption":"","name":"liste-beitrag_python_neu","status":"inherit","uploaded_to":5591,"date":"2026-01-30 12:32:36","modified":"2026-01-30 12:32:36","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_neu-250x250.jpg","thumbnail-width":250,"thumbnail-height":250,"medium":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_neu-300x190.jpg","medium-width":300,"medium-height":190,"medium_large":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_neu.jpg","medium_large-width":433,"medium_large-height":274,"large":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_neu.jpg","large-width":433,"large-height":274,"1536x1536":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_neu.jpg","1536x1536-width":433,"1536x1536-height":274,"2048x2048":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_neu.jpg","2048x2048-width":433,"2048x2048-height":274,"gform-image-choice-sm":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_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_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_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. Januar 2026","excerpt":"Im Ger\u00e4tebau sind 7-Segment-Anzeigen weiterhin beliebt: g\u00fcnstig, robust, sofort ablesbar. Dieser Beitrag zeigt, wie Sie Displays direkt per Python\/GPIO oder komfortabel \u00fcber den TM1637 am Raspberry Pi ansteuern."},"_links":{"self":[{"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/posts\/5591","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\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/comments?post=5591"}],"version-history":[{"count":9,"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/posts\/5591\/revisions"}],"predecessor-version":[{"id":11593,"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/posts\/5591\/revisions\/11593"}],"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=5591"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/categories?post=5591"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/tags?post=5591"},{"taxonomy":"post-author","embeddable":true,"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/post-author?post=5591"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}