Wir haben eine Reihe von Raspberry Pi-Tutorials erstellt, in denen wir die Schnittstelle von Raspberry Pi mit allen grundlegenden Komponenten wie LED, LCD, Taste, Gleichstrommotor, Servomotor, Schrittmotor, ADC, Schieberegister usw. behandelt haben veröffentlichte einige einfache Raspberry Pi-Projekte für Anfänger sowie einige gute IoT-Projekte. In Fortsetzung dieser Tutorials werden wir heute das 8x8 LED Matrix Modul von Raspberry Pi steuern. Wir werden ein Python-Programm schreiben, um Zeichen auf dem Matrixmodul anzuzeigen.
Überprüfen Sie auch die Schnittstelle 8x8 LED Matrix mit Arduino und LED Matrix mit AVR Microcontorller.
Erforderliche Komponenten:
Hier verwenden wir Raspberry Pi 2 Model B mit Raspbian Jessie OS. Alle grundlegenden Hardware- und Softwareanforderungen wurden bereits erläutert. Sie können sie in der Einführung zu Raspberry Pi und zum Blinken der Raspberry PI-LED nachschlagen, um loszulegen.
- Himbeer-Pi-Brett
- Stromversorgung (5V)
- 1000uF Kondensator (über die Stromversorgung angeschlossen)
- 1KΩ Widerstand (8 Stück)
8x8 LED Matrix Modul:
Ein 8 * 8-LED-Matrixmodul enthält 64 LED (Leuchtdioden), die in Form einer Matrix angeordnet sind, daher heißt der Name LED-Matrix. Diese kompakten Module sind in verschiedenen Größen und vielen Farben erhältlich. Man kann sie bequem auswählen. Die PIN-Konfiguration des Moduls entspricht der Abbildung. Beachten Sie, dass die Pinbelegung des Moduls nicht in Ordnung ist. Daher sollten die PINs genau wie in der Abbildung gezeigt nummeriert werden, um Fehler zu vermeiden.
Das LED-Matrix-Modul verfügt über 8 + 8 = 16 gemeinsame Anschlüsse. Darüber haben wir 8 gemeinsame positive Anschlüsse und 8 gemeinsame negative Anschlüsse in Form von 8 Zeilen und 8 Spalten zum Anschließen von 64 LED in Matrixform. Wenn das Modul in Form eines Schaltplans gezeichnet werden soll, haben wir ein Bild wie unten gezeigt:
Für 8 Zeilen haben wir also 8 gemeinsame positive Anschlüsse (9, 14, 8, 12, 17, 2, 5). Betrachten Sie die erste Reihe, die LEDs von D1 bis D8 haben einen gemeinsamen positiven Anschluss und der Pin wird an PIN9 des LED-Matrix-Moduls herausgeführt. Wenn eine oder alle LEDs in einer REIHE leuchten sollen, sollte der entsprechende Pin des LED-MODULS mit +3,3 V versorgt werden.
Ähnlich wie bei gemeinsamen positiven Anschlüssen haben wir 8 gemeinsame negative Anschlüsse als Spalten (13, 3, 4, 10, 6, 11, 15, 16). Zur Erdung einer LED in einer beliebigen Spalte muss der jeweilige gemeinsame Minuspol geerdet werden.
Schaltungserklärung:
Die Verbindungen, die zwischen Raspberry Pi und LED-Matrixmodul hergestellt werden, sind in der folgenden Tabelle aufgeführt.
LED Matrix Modul Pin-Nr. |
Funktion |
Raspberry Pi GPIO Pin Nr. |
13 |
POSITIVE0 |
GPIO12 |
3 |
POSITIV1 |
GPIO22 |
4 |
POSITIV2 |
GPIO27 |
10 |
POSITIV3 |
GPIO25 |
6 |
POSITIV4 |
GPIO17 |
11 |
POSITIV5 |
GPIO24 |
15 |
POSITIV6 |
GPIO23 |
16 |
POSITIV7 |
GPIO18 |
9 |
NEGATIVE0 |
GPIO21 |
14 |
NEGATIVE1 |
GPIO20 |
8 |
NEGATIVE2 |
GPIO26 |
12 |
NEGATIVE3 |
GPIO16 |
1 |
NEGATIVE4 |
GPIO19 |
7 |
NEGATIVE5 |
GPIO13 |
2 |
NEGATIVE6 |
GPIO6 |
5 |
NEGATIVE7 |
GPIO5 |
Hier ist das endgültige Schaltbild für die Schnittstelle der 8x8-LED-Matrix mit Raspberry Pi:
Arbeitserklärung:
Hier verwenden wir die Multiplexing-Technik, um Zeichen auf dem 8x8-LED-Matrixmodul anzuzeigen. Lassen Sie uns dieses Multiplexing im Detail diskutieren. Angenommen, wir möchten die LED D10 in der Matrix einschalten, müssen wir die PIN14 des Moduls mit Strom versorgen und die PIN3 des Moduls erden. Mit dieser LED leuchtet D10 wie in der folgenden Abbildung gezeigt. Dies sollte auch zuerst überprüft werden, damit MATRIX weiß, dass alles in Ordnung ist.
Wenn wir nun D1 einschalten möchten, müssen wir PIN9 der Matrix mit Strom versorgen und PIN13 erden. Mit dieser LED leuchtet D1. Die aktuelle Richtung ist in diesem Fall in der folgenden Abbildung dargestellt.
Betrachten wir nun den kniffligen Teil, wir möchten sowohl D1 als auch D10 gleichzeitig einschalten. Wir sollten also sowohl PIN9, PIN14 als auch PIN13, PIN3 mit Strom versorgen. Dadurch werden die LED D1 und D10 eingeschaltet, gleichzeitig werden jedoch auch die LED D2 und D9 eingeschaltet. Es ist, weil sie gemeinsame Terminals teilen. Wenn wir also die LEDs entlang der Diagonale einschalten möchten, müssen wir alle LEDs auf dem Weg einschalten. Dies ist in der folgenden Abbildung dargestellt:
Um dieses Problem zu vermeiden, verwenden wir eine Technik namens Multiplexing. Wir haben auch diese Multiplexing-Technik besprochen, während wir die 8x8-LED-Matrix mit dem AVR verbunden haben. Hier erklären wir dies noch einmal. Dieselbe Multiplextechnik wird auch beim Scrollen von Text auf einer 8x8-LED-Matrix mit Arduino und mit einem AVR-Mikrocontroller verwendet.
Das menschliche Auge kann eine Frequenz von mehr als 30 Hz nicht erfassen. Dies ist der Fall, wenn eine LED kontinuierlich mit einer Frequenz von 30 Hz oder mehr ein- und ausgeschaltet wird. Das Auge sieht die LED als dauerhaft an. Dies ist jedoch nicht der Fall und die LED leuchtet tatsächlich ständig ein und aus. Diese Technik wird als Multiplexing bezeichnet.
Nehmen wir zum Beispiel an, wir möchten nur LED D1 und LED D10 einschalten, ohne D2 und D9 einzuschalten. Der Trick ist, dass wir zuerst nur LED D1 mit PIN 9 und 13 mit Strom versorgen und auf 1 ms warten und dann ausschalten. Dann versorgen wir LED D10 mit PIN 14 und 3 mit Strom, warten auf 1 ms und schalten sie dann aus. Der Zyklus läuft kontinuierlich mit hoher Frequenz und D1 & D10 werden schnell ein- und ausgeschaltet und beide LEDs scheinen für unser Auge kontinuierlich an zu sein. Dies bedeutet, dass wir jeweils nur die eine Reihe (LED) mit Strom versorgen, wodurch die Möglichkeit ausgeschlossen wird, andere LEDs in anderen Reihen einzuschalten. Wir werden diese Technik verwenden, um alle Zeichen anzuzeigen.
Wir können es anhand eines Beispiels besser verstehen, beispielsweise wenn wir "A" in der Matrix anzeigen möchten, wie unten gezeigt:
Wie gesagt, wir werden gleich eine Zeile einschalten, Bei t = 0 m SEC wird PIN09 zu diesem Zeitpunkt auf HIGH gesetzt (andere ROW-Pins sind zu diesem Zeitpunkt LOW). PIN3, PIN4, PIN10, PIN6, PIN11, PIN15 sind geerdet (andere COLUMN-Pins sind zu diesem Zeitpunkt HIGH).
Bei t = 1 m SEC wird PIN14 zu diesem Zeitpunkt auf HIGH gesetzt (andere ROW-Pins sind zu diesem Zeitpunkt LOW). PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 sind geerdet (andere COLUMN-Pins sind zu diesem Zeitpunkt HIGH)
Bei t = 2 m SEC wird PIN08 zu diesem Zeitpunkt auf HIGH gesetzt (andere ROW-Pins sind zu diesem Zeitpunkt LOW), PIN13, PIN3, PIN15, PIN16 sind geerdet (andere COLUMN-Pins sind zu diesem Zeitpunkt HIGH).
Bei t = 3 m SEC wird PIN12 zu diesem Zeitpunkt auf HIGH gesetzt (andere ROW-Pins sind zu diesem Zeitpunkt LOW), PIN13, PIN3, PIN15, PIN16 sind geerdet (andere COLUMN-Pins sind zu diesem Zeitpunkt HIGH).
Bei t = 4 m SEC wird PIN01 zu diesem Zeitpunkt auf HIGH gesetzt (andere ROW-Pins sind zu diesem Zeitpunkt LOW). PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 sind geerdet (andere COLUMN-Pins sind zu diesem Zeitpunkt HIGH)
Bei t = 5 m SEC wird PIN07 zu diesem Zeitpunkt auf HIGH gesetzt (andere ROW-Pins sind zu diesem Zeitpunkt LOW). PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 sind geerdet (andere COLUMN-Pins sind zu diesem Zeitpunkt HIGH)
Bei t = 6 m SEC wird PIN02 zu diesem Zeitpunkt auf HIGH gesetzt (andere ROW-Pins sind zu diesem Zeitpunkt LOW), PIN13, PIN3, PIN15, PIN16 sind geerdet (andere COLUMN-Pins sind zu diesem Zeitpunkt HIGH).
Bei t = 7 m SEC wird PIN05 zu diesem Zeitpunkt auf HIGH gesetzt (andere ROW-Pins sind zu diesem Zeitpunkt LOW), PIN13, PIN3, PIN15, PIN16 sind geerdet (andere COLUMN-Pins sind zu diesem Zeitpunkt HIGH).
Bei dieser Geschwindigkeit wird auf dem Display kontinuierlich das Zeichen „A“ angezeigt (siehe Abbildung).
Das Python-Programm zum Anzeigen von Zeichen auf LED-Matrix mit Raspberry Pi ist unten angegeben. Das Programm wird durch Kommentare gut erklärt. Portwerte für jedes Zeichen sind im Programm angegeben. Sie können beliebige Zeichen anzeigen, indem Sie einfach die Pinp- Werte in den For-Schleifen des angegebenen Programms ändern. Überprüfen Sie auch das Demo-Video unten.