DFRobot
Shift Register-moduler giver din mikrocontroller flere outputs uden at bruge ekstra GPIO-ben — typisk 8 ekstra outputs styret fra kun 3 ben. De er den klassiske og billigste måde at få flere I/O på en Arduino UNO uden at opgradere til en større mikrocontroller. Bruges typisk til at drive LED-arrays, 7-segment displays, LED-matrixer og status-indikatorer. Udvalget rummer Gravity Shiftout Module baseret på 74HC595 — det mest brugte 8-bit shift register i hobby-elektronik. 5 V drift, IDC6 input/output, kan kaskaderes til 16, 24, 32+ outputs. Find modulet til LED-projekter, displays eller IO-udvidelse.
DFRobot
En shift register er en chip der konverterer seriel data til parallelle outputs — eller omvendt. Den lader dig styre mange udgange (typisk 8) fra få indgange (typisk 3) på din mikrocontroller.
Konceptet er enkelt: i stedet for at bruge 8 separate GPIO-ben til at styre 8 LED'er, sender du 8 bits efter hinanden gennem 1 datapin, klokker dem ind med 1 clock-pin, og latcher dem til output med 1 latch-pin. Resultat: 3 ben styrer 8 outputs.
74HC595 er en "8-bit serial-in, parallel-out" shift register med output-latches. Den har tre kontrol-ben:
I praksis sender du 8 bits via Arduino's shiftOut() funktion, og bagefter pulser RCLK for at opdatere alle 8 outputs samtidigt. Det betyder at LED'erne skifter visuelt på samme tid — uden flicker.
const int latchPin = 8; // RCLK
const int clockPin = 12; // SRCLK
const int dataPin = 11; // SER
void setup() {
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop() {
// Tænd LED 0 og 3 (binær: 0b00001001 = 9)
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 9);
digitalWrite(latchPin, HIGH);
delay(500);
// Tænd alle (0xFF = 255)
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 255);
digitalWrite(latchPin, HIGH);
delay(500);
}
74HC595 har en QH' output (også kaldet "Q7S" eller "Serial Out") der videresender bits der "falder ud" af registeret når du shift'er nye ind. Ved at koble QH' fra modul 1 til SER på modul 2, kan du:
Med 4 moduler i serie kan du styre 32 LED'er fra 3 Arduino-ben.
| Shift Register (74HC595) | IO-Expander (MCP23017) | |
|---|---|---|
| Kommunikation | Serial 3-tråds (data, clock, latch) | I²C (2 tråds) |
| Outputs | 8 (kan kaskaderes til mange) | 16 (op til 8 chips = 128) |
| Inputs | Nej (kun output) | Ja (alle ben kan være input eller output) |
| Pris | Meget billig | Mellem |
| Hastighed | Hurtig (10+ MHz) | Begrænset (400 kHz I²C) |
| Software | Standard shiftOut() | Kræver bibliotek |
74HC595 er den mest brugte, men der findes også andre varianter til specielle formål:
shiftOut(dataPin, clockPin, MSBFIRST, value).LED-arrays til status-indikatorer (8, 16, 32 LED'er), 7-segment displays til ure, tællere og målere, LED-bargraph indikatorer (lydniveau, batteri-status), enkle LED-matrixer (8×8 op til 32×32), driving relæ-banker hvor mikrocontrolleren ikke har nok GPIO, hjemmebyggede konsolprojekter med mange knapper og LED'er, retro-spil og elektroniske brætspil, kunstinstallationer med mange lyskilder, samt udvidelse af Arduino UNO der kun har 14 digitale ben.
Til I²C-baserede IO-expandere der også kan læse inputs, se Multiplexer Moduler. Til PWM-baserede LED-drivers (dimming), se LED Driver Moduler. Til level-shiftere mellem 3,3 V og 5 V, se Level Shifter. Til selve LED'erne, se Lysdioder. Tilbage til Moduler oversigt.