Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Gartenautomation
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Deutsch
  • English
Menu

Raspberry Pi Pico 2 – Schieberegister 74HC164D in MicroPython programmieren

Posted on 15. September 202413. September 2024 by Stefan Draeger

Im letzten Beitrag Schieberegister 74HC164D: Programmierung und Einsatz am Arduino Nano habe ich dir gezeigt, wie einfach es ist, das Schieberegister 74HC164D am Arduino Nano zu programmieren. Hier soll es nun darum gehen, wie du das Schieberegister 74HC164D in MicroPython programmierst.

Raspberry Pi Pico 2 - Schieberegister 74HC164D in MicroPython programmieren
Dieses Video auf YouTube ansehen.

Du kannst dieses Beispiel mit dem Pi Pico 2 und natürlich auch mit dem Vorgängermodell, dem Pi Pico, mit und ohne WiFi Support nachbauen. Beide Mikrocontroller sind baugleich und somit voll kompatibel.

CJMCU-164 / Schieberegister 74HC164D
CJMCU-164 / Schieberegister 74HC164D
CJMCU-164 - Lieferumfang
CJMCU-164 – Lieferumfang

Inhaltsverzeichnis

  • Bezug des Schieberegisters 74HC164D / CJMCU-164
    • Lieferumfang
  • Aufbau der Schaltung – Raspberry Pi Pico mit Schieberegister 74HC164D
    • Anschluss des Schieberegisters an den Pi Pico
    • Anschluss der 7 Segmentanzeige an das Schieberegister
  • Programmieren des Schieberegisters 74HC164D in MicroPython
    • LED-Lauflicht programmieren

Bezug des Schieberegisters 74HC164D / CJMCU-164

Du bekommst dieses Schieberegister als einfachen Baustein oder auf einer Platine mit Pinbeschriftungen. Die zuletzt genannte Variante habe ich mir von aliexpress.com für günstige 0,96 € besorgt. Die Versandkosten betrugen jedoch knapp 3,6 € somit war dieses vermeintliche Schnäppchen nicht viel günstiger als wenn man es bei einem deutschen Händler kauft.

ebay.dealiexpress.comandroegg.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 CJMCU-164 gehört neben der Platine lediglich noch zwei Stiftleisten, welche du noch anlöten musst.

Aufbau der Schaltung – Raspberry Pi Pico mit Schieberegister 74HC164D

Der Aufbau ist im Grunde dieselbe wie beim Arduino Nano, du benötigst eine Spannungsversorgung von 3.3V oder 5V und zwei digitale Pins.

Schaltung - Raspberry Pi Pico 2 mit Schieberegister 74HC164D und 7 Segmentanzeige
Schaltung – Raspberry Pi Pico 2 mit Schieberegister 74HC164D und 7 Segmentanzeige

Anschluss des Schieberegisters an den Pi Pico

Das Schieberegister arbeitet mit einer Spannung zwischen 2V und 6V, der Pi Pico liefert dir an dem Pin „VBUS“ 5V und der Pin „3V3(OUT)“ liefert 3,3V.

RPiPico2 RP2350 Pinout
RPiPico2 RP2350 Pinout
PinRaspberry Pi Pico
VCCVBUS (Pin 40)
GNDGND (Pin 23)
AGP16 (Pin 21)
BVBUS (Pin 40)
CLKGP17 (Pin 22)
CLRVBUS (Pin 40)

Anschluss der 7 Segmentanzeige an das Schieberegister

Die 7 Segmentanzeige bekommst du in zwei Varianten, zum einen mit einer gemeinsamen Kathode und gemeinsame Anode. Das bedeutet, dass du am Pin 8 entweder VCC oder GND anschließen musst. In meinem Fall habe ich eines mit gemeinsamer Kathode und schließe dort GND über einen 220 Ohm Vorwiderstand an.

7Segmentanzeige Pinout
7 Segmentanzeige Pinout
Pin7 Segmentanzeige
Q07
Q16
Q24
Q32
Q41
Q59
Q610
Q75
GND220 Ohm Widerstand > 8

Programmieren des Schieberegisters 74HC164D in MicroPython

Das kleine Arduino Programm lässt sich sehr einfach nach MicroPython portieren. Statt eines mehrdimensionalen Arrays nutze ich hier ein mehrdimensionales Tupel, ansonsten gibt es auch hier nicht viel Besonderes.

In dem inneren 8-stelligen Tupel sind die LEDs jeweils über die Indexe belegt.

Über die Matrix links kannst du dir Zahlen und Buchstaben (begrenzt) aufbauen und hinterlegen.

Im nachfolgenden Code werden die Zahlen von 0 bis 9 und die Buchstaben A, C und E auf der 7 Segmentanzeige angezeigt.

Programm – Anzeigen der Zahlen 0 bis 9 und Buchstaben A,C & E an der 7 Segmentanzeige mit MicroPython & Schieberegister 74HC164DHerunterladen
#Module zum ansteuern der GPIOs, sowie
import machine
#zum einlegen einer kleinen Pause
import time

#DataPin am GPIO16 als Ausgang angeschlossen
dataPin = machine.Pin(16, machine.Pin.OUT)
#ClockPin am GPIO17 als Ausgang angeschlossen
clockPin = machine.Pin(17, machine.Pin.OUT)

#Tupel mit mehreren Tupeln
#Jede Stelle in dem inneren Tupel
#repräsentiert den Zustand einer LED
#auf der 7 Segmentanzeige
digits = (
  (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
  (1, 1, 1, 0, 1, 1, 1, 0 ), #Buchstabe A
  (1, 0, 0, 1, 1, 1, 0, 0 ), #Buchstabe C
  (1, 0, 0, 1, 1, 1, 1, 0 )  #Buchstabe E
)

#Funktion zum anzeigen einer Zahl
#Als Parameter wird ein Tupel mit
#den Zuständen der LEDs erwartet.
def displayValue(tpl):
    #Für jede Stelle im Tupel mache...
    #Die Liste wird Rückwärts durchlaufen!
    for idx in reversed(tpl):
        #den ClockPin deaktivieren
        clockPin.value(0)
        #den DataPin aktivieren/deaktivieren,
        #je nach Status
        dataPin.value(idx)
        #aktivieren des ClockPins
        clockPin.value(1)
        #eine Pause von 100 Millisekunden
        time.sleep(0.1)

#Starten der Endlosschleife
while True:
    #Für jedes Tupel mache...
    for idx in digits:
        #Aufrufen der funktion zum anzeigen einer Zahl
        displayValue(idx)
        #eine kleine Pause von 800 Millisekunden
        time.sleep(0.8)

LED-Lauflicht programmieren

Statt einer 7 Segmentanzeige kannst du auch recht einfach ein LED-Lauflicht programmieren, dazu ersetzen wir lediglich die Anzeige durch die LEDs, welche wir nacheinander aktivieren. Die Kathode (der Minuspol) der LED wird dazu an den GND Pin auf der Seite der Q0 bis Q7 Pins angeschlossen!

Schaltung - Raspberry Pi Pico 2 mit Schieberegister 74HC164D und LEDs
Schaltung – Raspberry Pi Pico 2 mit Schieberegister 74HC164D und LEDs

Der Code für ein Lauflicht wiederholt sich zum Beispiel zuvor sehr stark, denn wir müssen lediglich die Tupel mit den Zuständen der LEDs anpassen. In meinem Fall lasse ich die LEDs von rechts nach links und zurück aufleuchten.

sdrgtsdfg

#Module zum ansteuern der GPIOs, sowie
import machine
#zum einlegen einer kleinen Pause
import time

#DataPin am GPIO16 als Ausgang angeschlossen
dataPin = machine.Pin(16, machine.Pin.OUT)
#ClockPin am GPIO17 als Ausgang angeschlossen
clockPin = machine.Pin(17, machine.Pin.OUT)

#Tupel mit mehreren Tupeln
#Jede Stelle in dem inneren Tupel
#repräsentiert den Zustand einer LED
digits = (
  (1, 0, 0, 0, 0, 0, 0, 0),  
  (0, 1, 0, 0, 0, 0, 0, 0 ), 
  (0, 0, 1, 0, 0, 0, 0, 0 ), 
  (0, 0, 0, 1, 0, 0, 0, 0 ), 
  (0, 0, 0, 0, 1, 0, 0, 0 ), 
  (0, 0, 0, 0, 0, 1, 0, 0 ), 
  (0, 0, 0, 0, 0, 0, 1, 0 ), 
  (0, 0, 0, 0, 0, 0, 0, 1 ), 
  (0, 0, 0, 0, 0, 0, 1, 0 ), 
  (0, 0, 0, 0, 0, 1, 0, 0 ), 
  (0, 0, 0, 0, 1, 0, 0, 0 ), 
  (0, 0, 0, 1, 0, 0, 0, 0 ), 
  (0, 0, 1, 0, 0, 0, 0, 0 ), 
  (0, 1, 0, 0, 0, 0, 0, 0 )
)

#Funktion zum anzeigen einer Zahl
#Als Parameter wird ein Tupel mit
#den Zuständen der LEDs erwartet.
def displayValue(tpl):
    #Für jede Stelle im Tupel mache...
    #Die Liste wird Rückwärts durchlaufen!
    for idx in reversed(tpl):
        #den ClockPin deaktivieren
        clockPin.value(0)
        #den DataPin aktivieren/deaktivieren,
        #je nach Status
        dataPin.value(idx)
        #aktivieren des ClockPins
        clockPin.value(1)

#Starten der Endlosschleife
while True:
    #Für jedes Tupel mache...
    for idx in digits:
        #Aufrufen der funktion zum anzeigen einer Zahl
        displayValue(idx)
        #eine kleine Pause von 800 Millisekunden
        time.sleep(0.2) 

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen
Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

link zu Fabook
link zu LinkedIn
link zu YouTube
link zu TikTok
link zu Pinterest
link zu Instagram
  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}