Bemerkung
Hallo, willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Community auf Facebook! Tauchen Sie tiefer in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten ein.
Warum beitreten?
Expertenunterstützung: Lösen Sie Probleme nach dem Verkauf und technische Herausforderungen mit Hilfe unserer Community und unseres Teams.
Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.
Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.
Spezielle Rabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.
Festliche Promotionen und Giveaways: Nehmen Sie an Giveaways und Feiertagsaktionen teil.
👉 Bereit, mit uns zu erkunden und zu kreieren? Klicken Sie auf [hier] und treten Sie heute bei!
5.1 Verwendung des 74HC595-Schieberegisters
In dieser Lektion lernen wir, wie man das 74HC595-Schieberegister verwendet, um mehrere LEDs mit nur wenigen GPIO-Pins des Raspberry Pi Pico 2 zu steuern. Der 74HC595 ist ein integrierter Schaltkreis (IC), der serielle Eingaben in parallele Ausgaben umwandelt. Dadurch können mehrere digitale Ausgänge gesteuert werden, ohne viele GPIO-Pins zu belegen – eine äußerst nützliche Funktion, wenn nur wenige Pins zur Verfügung stehen.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:
Name |
ENTHALTENE KOMPONENTEN |
LINK |
|---|---|---|
Newton Lab Kit |
450+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
SN |
KOMPONENTE |
MENGE |
LINK |
|---|---|---|---|
1 |
1 |
||
2 |
Micro-USB-Kabel |
1 |
|
3 |
1 |
||
4 |
Mehrere |
||
5 |
8 (220Ω) |
||
6 |
8 |
||
7 |
1 |
Funktionsweise des 74HC595-Schieberegisters
Der 74HC595 ist ein 8-Bit-Serien-Eingang, Parallel-Ausgang-Schieberegister mit Ausgangslatch. Es ermöglicht die serielle Eingabe von Daten und deren parallele Ausgabe, wodurch sich 8 Ausgänge mit nur 3 GPIO-Pins des Pico steuern lassen.
Wichtige Pins des 74HC595:

DS (Pin 14): Serielle Dateneingabe
SHCP (Pin 11): Takt für das Schieberegister
STCP (Pin 12): Takt für das Speicherregister (Latch-Pin)
OE (Pin 13): Ausgangsaktivierung (aktiv niedrig, mit GND verbinden)
MR (Pin 10): Master-Reset (aktiv niedrig, mit 3,3V verbinden)
Q0-Q7 (Pins 15, 1-7): Parallele Ausgänge
VCC (Pin 16): Mit 3,3V verbinden
GND (Pin 8): Mit GND verbinden
Schaltplan

Verdrahtungsdiagramm
Code schreiben
Nun schreiben wir ein MicroPython-Programm, um LEDs über das 74HC595-Schieberegister zu steuern.
Bemerkung
Öffnen Sie die Datei
5.1_microchip_74hc595.pyausnewton-lab-kit/micropythonoder kopieren Sie den Code in Thonny, dann klicken Sie auf „Ausführen“ oder drücken Sie F5.Stellen Sie sicher, dass der richtige Interpreter ausgewählt ist: MicroPython (Raspberry Pi Pico).COMxx.
import machine
import utime
# Definition der Pins für das 74HC595
SDI = machine.Pin(0, machine.Pin.OUT) # Serielle Dateneingabe (DS)
RCLK = machine.Pin(1, machine.Pin.OUT) # Speicherregister-Takt (STCP)
SRCLK = machine.Pin(2, machine.Pin.OUT) # Schieberegister-Takt (SHCP)
# Funktion zum Senden von Daten an das 74HC595
def shift_out(data):
for bit in range(8):
# Höchstwertiges Bit extrahieren und zuerst senden
bit_val = (data & 0x80) >> 7
SDI.value(bit_val)
# Takt für das Schieberegister setzen
SRCLK.high()
utime.sleep_us(1)
SRCLK.low()
utime.sleep_us(1)
# Daten um 1 Bit nach links verschieben
data = data << 1
# Takt für das Speicherregister setzen (Latching)
RCLK.high()
utime.sleep_us(1)
RCLK.low()
utime.sleep_us(1)
# Hauptschleife zur Demonstration verschiedener Muster
while True:
# LEDs nacheinander von Q0 bis Q7 einschalten
for i in range(8):
data = 1 << i
shift_out(data)
utime.sleep(0.2)
# LEDs nacheinander von Q7 bis Q0 einschalten
for i in range(7, -1, -1):
data = 1 << i
shift_out(data)
utime.sleep(0.2)
# Erzeugung eines Balkeneffekts
for i in range(9):
data = (1 << i) - 1
shift_out(data)
utime.sleep(0.2)
# Alle LEDs ausschalten
shift_out(0x00)
utime.sleep(0.5)
Wenn Sie den Code ausführen, erzeugen die an das 74HC595-Schieberegister angeschlossenen LEDs dynamische Lichtmuster:
Erste Sequenz: Die LEDs leuchten nacheinander von links nach rechts auf. Jede LED wird der Reihe nach eingeschaltet, wodurch der Effekt eines wandernden Lichts über die Reihe entsteht.
Zweite Sequenz: Die LEDs leuchten nacheinander von rechts nach links auf, wodurch die Bewegung in die entgegengesetzte Richtung verläuft.
Dritte Sequenz: Die LEDs erzeugen einen wachsenden Balkeneffekt, bei dem sich die LEDs von links nach rechts kumulativ einschalten, bis alle LEDs leuchten.
Letzter Schritt: Alle LEDs schalten sich kurz aus, bevor die gesamte Sequenz erneut beginnt.
Dies führt zu einer beeindruckenden Lichtanzeige mit sich hin- und herbewegenden Lichtern und einem wachsenden Balkeneffekt, der sich kontinuierlich wiederholt.
Den Code verstehen
Module importieren:
machine: Ermöglicht den Zugriff auf GPIO-Pins.utime: Enthält zeitbezogene Funktionen.
Steuerpins definieren:
Die GPIO-Pins, die mit dem 74HC595 verbunden sind, werden festgelegt.
SDI = machine.Pin(0, machine.Pin.OUT) # Dateneingang RCLK = machine.Pin(1, machine.Pin.OUT) # Latch-Takt SRCLK = machine.Pin(2, machine.Pin.OUT) # Schieberegister-Takt
Funktion shift_out definieren:
Diese Funktion sendet 8 Bit Daten an das Schieberegister.
Sie sendet das höchstwertige Bit (MSB) zuerst.
Der Schieberegister-Takt (SRCLK) wird gepulst, um jedes Bit einzulesen.
Nachdem alle Bits übertragen wurden, wird der Register-Takt (RCLK) gepulst, um die Daten an die Ausgänge zu übertragen.
def shift_out(data): for bit in range(8): bit_val = (data & 0x80) >> 7 SDI.value(bit_val) SRCLK.high() utime.sleep_us(1) SRCLK.low() utime.sleep_us(1) data = data << 1 RCLK.high() utime.sleep_us(1) RCLK.low() utime.sleep_us(1)
Hauptschleife:
Jede LED leuchtet nacheinander von Q0 bis Q7 auf.
for i in range(8): data = 1 << i shift_out(data) utime.sleep(0.2)
Jede LED leuchtet nacheinander von Q7 bis Q0 auf.
for i in range(7, -1, -1): data = 1 << i shift_out(data) utime.sleep(0.2)
LEDs schalten sich schrittweise ein, um einen wachsenden Balken von Q0 bis Q7 zu erzeugen.
for i in range(9): data = (1 << i) - 1 shift_out(data) utime.sleep(0.2)
Sendet 0x00, um alle LEDs auszuschalten.
shift_out(0x00) utime.sleep(0.5)
Weitere Experimente
Benutzerdefinierte Muster erstellen: Ändern Sie die gesendeten Daten, um verschiedene LED-Muster zu erzeugen. Beispiel: Blinken alternierender LEDs:
shift_out(0b10101010)
Mehr LEDs steuern: Mehrere 74HC595-Chips hintereinanderschalten, um zusätzliche Ausgänge zu steuern. Verbinden Sie den Q7‘ (Pin 9) des ersten Chips mit DS (Pin 14) des zweiten Chips.
Integration mit Sensoren: Nutzen Sie Eingaben von Sensoren oder Tasten, um die LED-Muster dynamisch zu verändern.
Fazit
In dieser Lektion haben Sie gelernt, wie Sie das 74HC595-Schieberegister verwenden, um die Ausgangsmöglichkeiten Ihres Raspberry Pi Pico 2 zu erweitern. Diese Technik ist besonders nützlich für Projekte, bei denen viele Ausgänge mit einer begrenzten Anzahl von GPIO-Pins gesteuert werden müssen.
