Beim Stöbern auf aliexpress.com bin ich auf ein kleines Board mit dem Schieberegister 74HC164D gestoßen und musste es einfach haben. Das kompakte Modul ermöglicht es, auf einfache Weise die Anzahl der digitalen Ausgänge von besonders kleinen Mikrocontrollern zu erweitern.
Es gibt dieses Schieberegister auch als einfachen Baustein wie das Model 74HC959 jedoch finde ich die Variante auf einer Platine etwas besser, weil man dort gleich die Pinbeschriftungen vorliegen hat.
Das kleine Board findest du auch über die Bezeichnung CJMCU-164 auf diversen Plattformen, dazu jedoch später mehr.
Inhaltsverzeichnis
- Bezug eines Schieberegisters 74HC164D
- Aufbau des Boards CJMCU-164
- Anschluss des Boards an den Arduino Nano V3
- Programmieren des Schieberegisters 74HC164D in der Arduino IDE am Arduino Nano V3
Bezug eines Schieberegisters 74HC164D
Das kleine Modul bekommst du neben wie erwähnt auf aliexpress.com auch auf ebay.de* dort jedoch zu einem deutlich höheren Preis.
ebay.de | aliexpress.com | androegg.de |
---|---|---|
4,87 €* | 0,96 € (3,62 €) | 2,87 € (1,64 €) |
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
Lieferumfang
Zum Lieferumfang des Boards gehört neben der kleinen fertig bestückten Platine noch zwei Stiftleisten, welche wir links und rechts anlöten müssen.
Aufbau des Boards CJMCU-164
Das Board verfügt über 8 Ausgänge, an welche wir zum Beispiel digitale Anzeigen oder LEDs anschließen können. Für die Verbindung mit dem Mikrocontroller benötigen wir lediglich vier Pins. (kein SPI oder I2C!)
Da dieses Board nicht über I2C oder SPI angeschlossen wird, haben wir diese Pins weiterhin für andere Sensoren / Aktoren zur Verfügung (was bei I2C nicht so schlimm wäre).
Features
Vom Hersteller habe ich nachfolgende Features entnommen:
- 8-Bit Seriell-Eingang, Parallel-Out Shift
- 2,54 mm Rastermaß-Anschluss
- Breiter Betriebsspannungsbereich von 2 V bis 6 V
- Niedriger Stromverbrauch: maximal 80 μA ICC
- Geringer Eingangsstrom: maximal 1 μA
Dank des weiten Spannungsbereichs von 2 bis 6 V lässt sich das Bauteil sowohl mit 3,3 V als auch mit 5 V betreiben. Dadurch kann es problemlos mit Mikrocontrollern wie dem ESP8266 und ESP32 verwendet werden, die in der Regel nur 3,3 V bieten.
Anschluss des Boards an den Arduino Nano V3
Das Board inkl. Schieberegister wird mit vier Breadboardkabel mit dem Mikrocontroller verbunden. Nachfolgend siehst du eine kleine Schaltung, in welche ich zusätzlich noch eine 7 Segmentanzeige integriert habe.
Pin | Arduino Nano V3 |
---|---|
VCC | 5V |
GND | GND |
A | digitaler Pin D2 |
B | 5V |
CLK | digitaler Pin D3 |
CLR | 5V |
Die 7 Segmentanzeige wird wie folgt mit dem Board CJMCU-164 verbunden:
Pin | Farbe | CJMCU-164 |
---|---|---|
7 | Lila | Q0 |
6 | Hellblau | Q1 |
4 | Braun | Q2 |
2 | Rot | Q3 |
1 | Grün | Q4 |
9 | Dunkelblau | Q5 |
10 | Türkis | Q6 |
DP | dunkles Lila | Q7 |
8 | Schwarz | 220 Ohm Widerstand > GND |
Programmieren des Schieberegisters 74HC164D in der Arduino IDE am Arduino Nano V3
Der Arduino Nano V3 ist schon etwas in die Jahre gekommen, aber trotzdem finde ich, dass dieser für kleine Projekte immer noch gut zu verwenden ist. Du kannst die nachfolgende Schaltung aber auch mit anderen Mikrocontrollern wie dem Arduino UNO, Arduino Mega usw. nachstellen, da hier lediglich die normalen digitalen Pins verwendet werden.
Für die Anzeige eine Zahl muss eine LED in der 7 Segmentanzeige aktiviert werden. Dazu wurde ein 8-stelliges Array angelegt, in welchem eine 1 eine aktive LED und eine 0 eine entsprechend deaktivierte LED repräsentiert.
{ 1, 1, 1, 1, 1, 1, 0, 0 }, //Zahl 0
Du kannst aber nicht nur Zahlen, sondern auch begrenzt Buchstaben mit dieser Matrix erstellen.
{ 1, 1, 1, 0, 1, 1, 1, 0 }, //Buchstabe A
Nachfolgend werden die Zahlen 0 bis 9 auf der 7 Segmentanzeige angezeigt.
#define dataPin 2 #define clockPin 3 const int MAX_NUMS = 10; int digits[MAX_NUMS][8]{ { 1, 1, 1, 1, 1, 1, 0, 0 }, //Zahl 0 { 0, 1, 1, 0, 0, 0, 0, 0 }, //Zahl 1 { 1, 1, 0, 1, 1, 0, 1, 0 }, //Zahl 2 { 1, 1, 1, 1, 0, 0, 1, 0 }, //Zahl 3 { 0, 1, 1, 0, 0, 1, 1, 0 }, //Zahl 4 { 1, 0, 1, 1, 0, 1, 1, 0 }, //Zahl 5 { 0, 0, 1, 1, 1, 1, 1, 0 }, //Zahl 6 { 1, 1, 1, 0, 0, 0, 0, 0 }, //Zahl 7 { 1, 1, 1, 1, 1, 1, 1, 0 }, //Zahl 8 { 1, 1, 1, 0, 0, 1, 1, 0 } //Zahl 9 }; void setup() { pinMode(dataPin, OUTPUT); pinMode(clockPin, OUTPUT); } void zeigeZahl(int zahl) { for (int idx = 7; idx >= 0; idx--) { digitalWrite(clockPin, LOW); digitalWrite(dataPin, digits[zahl][idx]); digitalWrite(clockPin, HIGH); delay(100); } } void loop() { for (int idx = 0; idx < MAX_NUMS; idx++) { zeigeZahl(idx); delay(800); } }
Im Video siehst du, dass die Zahlen 0 bis 9 nacheinander angezeigt werden.
1 thought on “Schieberegister 74HC164D: Programmierung und Einsatz am Arduino Nano”