Bemerkung
Hallo und herzlich willkommen in der SunFounder-Community für Raspberry Pi-, Arduino- und ESP32-Enthusiasten auf Facebook! Entdecke gemeinsam mit anderen Technikbegeisterten die Welt von Raspberry Pi, Arduino und ESP32 noch intensiver.
Warum beitreten?
Expertenunterstützung: Erhalte Hilfe bei technischen Herausforderungen und Fragen nach dem Kauf – durch unser Team und die Community.
Lernen & Teilen: Tausche Tipps und Anleitungen aus, um dein Wissen zu erweitern.
Exklusive Vorschauen: Erfahre frühzeitig von neuen Produktveröffentlichungen.
Sonderrabatte: Profitiere von exklusiven Angeboten auf unsere neuesten Produkte.
Aktionen & Gewinnspiele: Nimm an Verlosungen und festlichen Aktionen teil.
👉 Bereit, mit uns zu entdecken und zu entwickeln? Klicke auf [hier] und mach mit!
5.1 Verwendung des 74HC595-Schieberegisters
In dieser Lektion lernst du, wie du mithilfe des 74HC595-Schieberegisters mehrere LEDs mit nur wenigen GPIO-Pins des Raspberry Pi Pico 2 W steuern kannst. Der 74HC595 ist ein integrierter Schaltkreis (IC), mit dem sich über serielle Eingabe mehrere digitale Ausgänge ansteuern lassen – ideal, wenn viele Ausgänge benötigt werden, aber nur wenige Pins zur Verfügung stehen.
Benötigte Komponenten
Für dieses Projekt benötigen wir folgende Bauteile.
Am bequemsten ist es, ein Komplett-Kit zu kaufen – hier ist der Link:
Name |
ENTHALTENE TEILE |
LINK |
|---|---|---|
Pico 2 W Starter Kit |
450+ |
Alternativ kannst du die Komponenten auch einzeln über die folgenden Links beziehen:
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-Schieberegister mit serieller Eingabe und parallelen Ausgängen sowie integrierten Latches. Er ermöglicht es, serielle Daten in parallele Signale umzuwandeln und dadurch acht Ausgänge mit nur drei GPIO-Pins des Pico zu steuern.
Wichtige Pins des 74HC595:

DS (Pin 14): Serielle Dateneingabe
SHCP (Pin 11): Takteingang für das Schieberegister
STCP (Pin 12): Takteingang für das Speicheregister (Latch)
OE (Pin 13): Ausgangsfreigabe (aktiv Low, mit GND verbinden)
MR (Pin 10): Master-Reset (aktiv Low, mit 3.3V verbinden)
Q0–Q7 (Pins 15, 1–7): Parallele Ausgänge
VCC (Pin 16): Mit 3.3V verbinden
GND (Pin 8): Mit Masse verbinden
Schaltplan

Verdrahtung
Code schreiben
Nun schreiben wir ein MicroPython-Programm, um die LEDs über das 74HC595 zu steuern.
Bemerkung
Öffne
5.1_microchip_74hc595.pyaus dem Ordnerpico-2w-kit-main/micropythonoder kopiere den Code in Thonny und klicke auf „Run“ oder drücke F5.Achte darauf, dass der richtige Interpreter ausgewählt ist: MicroPython (Raspberry Pi Pico).COMxx.
import machine
import utime
# Define the pins connected to the 74HC595
SDI = machine.Pin(0, machine.Pin.OUT) # Serial Data Input (DS)
RCLK = machine.Pin(1, machine.Pin.OUT) # Register Clock (STCP)
SRCLK = machine.Pin(2, machine.Pin.OUT) # Shift Register Clock (SHCP)
# Function to send data to 74HC595
def shift_out(data):
for bit in range(8):
# Extract the highest bit and send it first
bit_val = (data & 0x80) >> 7
SDI.value(bit_val)
# Pulse the Shift Register Clock
SRCLK.high()
utime.sleep_us(1)
SRCLK.low()
utime.sleep_us(1)
# Shift data left by 1 for the next bit
data = data << 1
# Pulse the Register Clock to latch the data
RCLK.high()
utime.sleep_us(1)
RCLK.low()
utime.sleep_us(1)
# Main loop to demonstrate shifting patterns
while True:
# Light up LEDs one by one from Q0 to Q7
for i in range(8):
data = 1 << i
shift_out(data)
utime.sleep(0.2)
# Light up LEDs one by one from Q7 to Q0
for i in range(7, -1, -1):
data = 1 << i
shift_out(data)
utime.sleep(0.2)
# Create a moving bar effect
for i in range(9):
data = (1 << i) - 1
shift_out(data)
utime.sleep(0.2)
# Turn off all LEDs
shift_out(0x00)
utime.sleep(0.5)
Beim Ausführen des Codes zeigen die LEDs dynamische Lichteffekte:
Erste Sequenz: Die LEDs leuchten nacheinander von links nach rechts auf – ein laufendes Licht.
Zweite Sequenz: Die LEDs leuchten nacheinander von rechts nach links – das Licht kehrt zurück.
Dritte Sequenz: Eine wachsende Lichtleiste von links nach rechts – immer mehr LEDs leuchten.
Abschließend: Alle LEDs gehen kurz aus, bevor die Animation von vorne beginnt.
Das Ergebnis ist eine auffällige, sich wiederholende Lichtanimation.
Den Code verstehen
Module importieren:
machine: Ermöglicht Zugriff auf die GPIO-Pins.utime: Stellt Zeitfunktionen bereit.
Steuerpins definieren:
GPIO-Pins, die mit dem 74HC595 verbunden sind, werden festgelegt.
SDI = machine.Pin(0, machine.Pin.OUT) # Data Input RCLK = machine.Pin(1, machine.Pin.OUT) # Latch Clock SRCLK = machine.Pin(2, machine.Pin.OUT) # Shift Clock
Funktion zum Seriellen Ausgeben (Shift Out):
Diese Funktion überträgt 8 Datenbits an das Schieberegister.
Dabei wird das höchstwertige Bit (MSB) zuerst gesendet.
Der Taktpin des Schieberegisters (SRCLK) wird getoggelt, um jedes Bit einzuschieben.
Nachdem alle Bits übertragen wurden, wird der Register-Takt (RCLK) ausgelöst, um die Daten an den Ausgängen zu übernehmen.
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:
LEDs einzeln von Q0 bis Q7 einschalten.
for i in range(8): data = 1 << i shift_out(data) utime.sleep(0.2)
LEDs einzeln von Q7 bis Q0 einschalten.
for i in range(7, -1, -1): data = 1 << i shift_out(data) utime.sleep(0.2)
Eine wachsende Leiste anzeigen.
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)
Weitere Experimente
Eigene Muster erstellen:
Erstelle neue LED-Muster, z. B. wechselndes Blinken:
shift_out(0b10101010)
Mehr LEDs steuern:
Mehrere 74HC595 in Reihe schalten. Verbinde Pin 9 (Q7’) des ersten mit Pin 14 (DS) des zweiten ICs.
Mit Sensoren kombinieren:
Nutze Eingaben von Tastern oder Sensoren, um die Muster dynamisch zu ändern.
Fazit
In dieser Lektion hast du gelernt, wie man mit dem 74HC595-Schieberegister die Ausgabemöglichkeiten des Raspberry Pi Pico 2 W erweitert. Diese Technik ist besonders nützlich für Projekte mit vielen Ausgängen und begrenzten GPIO-Ressourcen.
