{"id":1296,"date":"2023-11-12T17:05:09","date_gmt":"2023-11-12T15:05:09","guid":{"rendered":"https:\/\/www.gressly.ch\/?page_id=1296"},"modified":"2024-02-01T13:05:19","modified_gmt":"2024-02-01T11:05:19","slug":"led-matrix","status":"publish","type":"page","link":"https:\/\/www.gressly.ch\/index.php\/elektronik\/led-matrix\/","title":{"rendered":"LED Matrix"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Um eine LED zum leuchten zu bringen muss man diese mit dem Plus- und dem Minuspol  einer Stromquelle verbinden, ein Widerstand begrenzt noch den Stromfluss und somit auch die Leuchtkraft. M\u00f6chte man aber sehr viele LED mit einer Schaltung steuern, gibt das ganz viele Dr\u00e4hte, die man verbinden muss. Theoretisch pro LED eine Verbindung und alle Minuspole noch zum Ground. Also Anzahl LED plus eins.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Eine LED leuchtet nur, wenn ein Spannungsunterschied vorliegt, wobei die h\u00f6here Spannung am l\u00e4ngeren Draht, der Anode und die tiefere Spannung am k\u00fcrzeren Draht, der Kathode angebracht werden muss. Diese Tatsache hilft uns, eine alternative Variante mit weniger Verbindungen zu bauen. Denn wenn die h\u00f6here Spannung an der Kathode anliegt, leuchtet die LED nicht.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In einem Video sah ich, wie jemand einen <a href=\"https:\/\/www.gressly.ch\/index.php\/elektronik\/led-wurfel\/\" data-type=\"page\" data-id=\"1330\">LED W\u00fcrfel<\/a> von 4x4x4 LED verbunden hat und diese auch einzeln kontrollieren konnte. Bei 64 LED w\u00e4ren das mit der oben genannten Methode aber 64 Verbindungen zum Kontroller plus Ground. Daher ein Raspberry Pico aber nur 23 <a href=\"https:\/\/picow.pinout.xyz\/\">GPIO Pins<\/a> hat, w\u00fcrde das nicht funktionieren. Aber im Video hat er es anders verdrahtet. Alle auf einer Ebene liegenden LED hat er an einem Drahtgitter an der Anode zusammen verbunden. Die Kathode wurde mit einem anderen Draht nach unten durch den Sockel gef\u00fchrt, wobei 4 LED der 4 verschiedenen Ebenen verbunden wurden. So hat er 4 Ebenen mit 4 Pins am Pico verbunden und 16 Dr\u00e4hte der Kathoden auch. Insgesamt 20 Pins, was bei einem Pico knapp zur Verf\u00fcgung steht.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Das Prinzip funktioniert so:<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Man macht eine Matrix, wobei jede LED durch eine Kombination von Pins angesteuert wird. <\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>Pin<\/td><td>16 (Kathode)<\/td><td>17 (Kathode)<\/td><\/tr><tr><td>14 (Anode)<\/td><td>Blau<\/td><td>Rot<\/td><\/tr><tr><td>15 (Anode)<\/td><td>Gelb<\/td><td>Gr\u00fcn<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn ich also Rot zum leuchten bringen will, muss Pin 14 auf +3V (high) und Pin 17 auf Ground (low). Gleichzeitig muss aber Pin 16 auch auf high, damit die Blaue LED nicht aufleuchtet. Daher LED aber nur leuchten, wenn die h\u00f6here Spannung an der Anode anliegt, bleibt die Gelbe LED dunkel. Gr\u00fcn hat zwei mal low.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"877\" height=\"702\" src=\"https:\/\/www.gressly.ch\/wp-content\/uploads\/2023\/11\/4led_breadboard.png\" alt=\"\" class=\"wp-image-1297\" srcset=\"https:\/\/www.gressly.ch\/wp-content\/uploads\/2023\/11\/4led_breadboard.png 877w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2023\/11\/4led_breadboard-300x240.png 300w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2023\/11\/4led_breadboard-768x615.png 768w\" sizes=\"auto, (max-width: 877px) 100vw, 877px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Der MicroPython Code l\u00e4sst die LED nacheinander aufleuchten:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">from time import sleep\nfrom machine import Pin\n\np14 = Pin(14, Pin.OUT)\np15 = Pin(15, Pin.OUT)\np16 = Pin(16, Pin.OUT)\np17 = Pin(17, Pin.OUT)\n\ndef init():\n    p14.low()\n    p15.low()\n    p16.low()\n    p17.low()\n\ndef red():\n    p14.high()\n    p15.low()\n    p16.high()\n    p17.low()\n    \ndef blue():\n    p14.high()\n    p15.low()\n    p16.low()\n    p17.high()\n\ndef green():\n    p14.low()\n    p15.high()\n    p16.low()\n    p17.high()\n    \ndef yellow():\n    p14.low()\n    p15.high()\n    p16.high()\n    p17.low()\n    \ninit()\n\nfor x in range(3):    \n    red()\n    sleep(1)\n    blue()\n    sleep(1)\n    green()\n    sleep(1)\n    yellow()\n    sleep(1)\n\ninit()\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Bei 4 LED ist noch kein grosser Vorteil dieses Systems zu erkennen. Aber sobald es mehr LED werden, macht es Sinn diesen Ansatz zu w\u00e4hlen. Nehmen wir das Beispiel eines W\u00fcrfels wo die Gesamtzahl gleich der Anzahl der LED auf einer Seite hoch 3 ist. Dann ergeben sich folgende Zahlen:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>LED pro W\u00fcrfelkante<\/td><td>LED Gesamt<\/td><td>Pins bei Einzelverbindung<\/td><td>Pins bei Matrix<\/td><\/tr><tr><td>2<\/td><td>2<sup>3<\/sup>=8<\/td><td>8+1=9<\/td><td>2+4=6<\/td><\/tr><tr><td>3<\/td><td>3<sup>3<\/sup>=27<\/td><td>27+1=28<\/td><td>3+9=12<\/td><\/tr><tr><td>4<\/td><td>4<sup>3<\/sup>=64<\/td><td>64+1=65<\/td><td>4+16=20<\/td><\/tr><tr><td>5<\/td><td>5<sup>3<\/sup>=125<\/td><td>125+1=126<\/td><td>5+25=30<\/td><\/tr><\/tbody><\/table><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Um eine LED zum leuchten zu bringen muss man diese mit dem Plus- und dem Minuspol einer Stromquelle verbinden, ein Widerstand begrenzt noch den Stromfluss und somit auch die Leuchtkraft. M\u00f6chte man aber sehr viele LED mit einer Schaltung steuern, gibt das ganz viele Dr\u00e4hte, die man verbinden muss. Theoretisch pro LED eine Verbindung und alle Minuspole noch zum Ground. Also Anzahl LED plus eins. Eine LED leuchtet nur, wenn ein Spannungsunterschied vorliegt, wobei die h\u00f6here Spannung am l\u00e4ngeren Draht, der Anode und die tiefere Spannung am k\u00fcrzeren Draht, der Kathode angebracht werden muss. Diese Tatsache hilft uns, eine alternative Variante mit weniger Verbindungen zu bauen. Denn wenn die h\u00f6here Spannung an der Kathode anliegt, leuchtet die LED nicht. In einem Video sah ich, wie jemand einen LED W\u00fcrfel von 4x4x4 LED verbunden hat und diese auch einzeln kontrollieren konnte. Bei 64 LED w\u00e4ren das mit der oben genannten Methode aber 64 Verbindungen zum Kontroller plus Ground. Daher ein Raspberry Pico aber nur 23 GPIO Pins hat, w\u00fcrde das nicht funktionieren. Aber im Video hat er es anders verdrahtet. Alle auf einer Ebene liegenden LED hat er an einem Drahtgitter an der Anode zusammen verbunden. Die Kathode wurde mit einem anderen Draht nach unten durch den Sockel gef\u00fchrt, wobei 4 LED der 4 verschiedenen Ebenen verbunden wurden. So hat er 4 Ebenen mit 4 Pins am Pico verbunden und 16 Dr\u00e4hte der Kathoden auch. Insgesamt 20 Pins, was bei einem Pico knapp zur Verf\u00fcgung steht. Das Prinzip funktioniert so: Man macht eine Matrix, wobei jede LED durch eine Kombination von Pins angesteuert wird. Pin 16 (Kathode) 17 (Kathode) 14 (Anode) Blau Rot 15 (Anode) Gelb Gr\u00fcn Wenn ich also Rot zum leuchten bringen will, muss Pin 14 auf +3V (high) und Pin 17 auf Ground (low). Gleichzeitig muss aber Pin 16 auch auf high, damit die Blaue LED nicht aufleuchtet. Daher LED aber nur leuchten, wenn die h\u00f6here Spannung an der Anode anliegt, bleibt die Gelbe LED dunkel. Gr\u00fcn hat zwei mal low. Der MicroPython Code l\u00e4sst die LED nacheinander aufleuchten: from time import sleep from machine import Pin p14 = Pin(14, Pin.OUT) p15 = Pin(15, Pin.OUT) p16 = Pin(16, Pin.OUT) p17 = Pin(17, Pin.OUT) def init(): p14.low() p15.low() p16.low() p17.low() def red(): p14.high() p15.low() p16.high() p17.low() def blue(): p14.high() p15.low() p16.low() p17.high() def green(): p14.low() p15.high() p16.low() p17.high() def yellow(): p14.low() p15.high() p16.high() p17.low() init() for x in range(3): red() sleep(1) blue() sleep(1) green() sleep(1) yellow() sleep(1) init() Bei 4 LED ist noch kein grosser Vorteil dieses Systems zu erkennen. Aber sobald es mehr LED werden, macht es Sinn diesen Ansatz zu w\u00e4hlen. Nehmen wir das Beispiel eines W\u00fcrfels wo die Gesamtzahl gleich der Anzahl der LED auf einer Seite hoch 3 ist. Dann ergeben sich folgende Zahlen: LED pro W\u00fcrfelkante LED Gesamt Pins bei Einzelverbindung Pins bei Matrix 2 23=8 8+1=9 2+4=6 3 33=27 27+1=28 3+9=12 4 43=64 64+1=65 4+16=20 5 53=125 125+1=126 5+25=30<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1202,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1296","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.gressly.ch\/index.php\/wp-json\/wp\/v2\/pages\/1296","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gressly.ch\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.gressly.ch\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.gressly.ch\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gressly.ch\/index.php\/wp-json\/wp\/v2\/comments?post=1296"}],"version-history":[{"count":10,"href":"https:\/\/www.gressly.ch\/index.php\/wp-json\/wp\/v2\/pages\/1296\/revisions"}],"predecessor-version":[{"id":1349,"href":"https:\/\/www.gressly.ch\/index.php\/wp-json\/wp\/v2\/pages\/1296\/revisions\/1349"}],"up":[{"embeddable":true,"href":"https:\/\/www.gressly.ch\/index.php\/wp-json\/wp\/v2\/pages\/1202"}],"wp:attachment":[{"href":"https:\/\/www.gressly.ch\/index.php\/wp-json\/wp\/v2\/media?parent=1296"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}