Spring til hovedindhold (tryk på Enter)

Shift Register Moduler

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.

  • Shiftout Module, 74HC595, 8-bit, 5V, IDC6 I/O
    Mængderabat

    DFRobot

    Shiftout Module, 74HC595, 8-bit, 5V, IDC6 I/O

    48,50
    DKK

    This item is only sold in badges of .

    eller

    Du skal vælge en variant.
    Please select a variant for all bundle products.
    Minimumsmængde nået.
    Maksimal mængde nået
    Du er ved at bestille mere end vi har på lager. Resterende antal bliver bestilt fra vores leverandør. Lager beholdning = .

Hvad er en shift register?

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.

Modeller i udvalget

  • Gravity Shiftout Module 74HC595 (DFR0072) — det mest brugte 8-bit shift register i hobby-elektronik. 5 V drift, IDC6 input/output stik, kompatibel med Arduino, 51, AVR, PIC og andre mikrocontrollere. Kan kaskaderes — flere moduler i serie giver dig 16, 24, 32+ outputs uden ekstra GPIO på Arduino.

Hvordan virker 74HC595?

74HC595 er en "8-bit serial-in, parallel-out" shift register med output-latches. Den har tre kontrol-ben:

  • SER (Data): serial data input — én bit ad gangen
  • SRCLK (Clock): shift register clock — flytter data ind én bit pr. puls
  • RCLK (Latch): storage register clock — kopierer alle 8 bits til outputs på én gang

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.

Eksempel — styre 8 LED'er fra Arduino

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);
}

Kaskadering — flere moduler i serie

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:

  • Sende 16 bits — de første 8 ender i modul 2, de næste 8 i modul 1
  • Stille mange shift registers i serie — teoretisk ubegrænset
  • Stadig kun bruge 3 GPIO-ben på Arduino

Med 4 moduler i serie kan du styre 32 LED'er fra 3 Arduino-ben.

Hvilken løsning skal jeg vælge?

  • Få ekstra outputs til LED'er, motorer, indikatorer: Shift Register (74HC595) — billigt, simpelt, robust.
  • Du skal også læse digitale inputs: Brug en Multiplexer Moduler i stedet — fx I²C IO-expander.
  • Mange flere I/O og fleksibilitet (input + output): Brug en MCP23017 eller CH423 IO-expander (se Multiplexer Moduler).
  • PWM-styring af LED'er (dimming): Brug en PWM-driver som TLC5940 eller PCA9685 — shift register kan kun ON/OFF.
  • Drive LED-matrixer (8x8 og større): MAX7219 LED matrix-driver er bedre — den har indbygget driver til alle LED'erne.

Shift Register vs IO-Expander

Shift Register (74HC595)IO-Expander (MCP23017)
KommunikationSerial 3-tråds (data, clock, latch)I²C (2 tråds)
Outputs8 (kan kaskaderes til mange)16 (op til 8 chips = 128)
InputsNej (kun output)Ja (alle ben kan være input eller output)
PrisMeget billigMellem
HastighedHurtig (10+ MHz)Begrænset (400 kHz I²C)
SoftwareStandard shiftOut()Kræver bibliotek

Andre shift register-typer

74HC595 er den mest brugte, men der findes også andre varianter til specielle formål:

  • 74HC165: "parallel-in, serial-out" — det modsatte. Bruges til at læse mange digitale inputs (knapper) gennem få Arduino-ben.
  • TPIC6C595 / TPIC6B595: shift register med høj-strøm output, op til 250 mA pr. ben. Kan drive LED'er direkte uden separate transistorer.
  • 74HC4094: alternativ med stort set samme funktionalitet som 74HC595.
  • SN74HCT595: TTL-kompatibel version — bedre til at drive 5 V signaler fra 3,3 V mikrocontroller.

Programmering — biblioteker

  • Arduino shiftOut(): indbygget funktion. shiftOut(dataPin, clockPin, MSBFIRST, value).
  • SPI library: til hurtigere shift register-styring via hardware SPI på Arduino's MOSI/SCK ben. Kan opnå MHz-hastigheder.
  • SparkFun 74HC595 library: wrapper-bibliotek til 7-segment styring og LED-arrays.
  • ShiftRegister74HC595 library: Arduino-bibliotek der gør hver pin tilgængelig som var det Arduino's egen GPIO.

Begrænsninger og tip

  • Strøm pr. ben: 74HC595 kan kun levere ~6 mA pr. ben kontinuerligt. Til at drive 20 mA LED'er direkte skal du bruge TPIC6C595 eller en transistor pr. LED.
  • Total strømgrænse: 70 mA samlet for hele chippen. Hvis du driver mange LED'er, brug en transistor-buffer.
  • Kun digital ON/OFF: kan ikke styre PWM eller analog output. Brug PCA9685 til 16 PWM-kanaler hvis du har brug for dimming.
  • Latch-tip: sæt latch LOW før du shift'er, og HIGH efter — så ser brugeren ikke "tickling" mens data shifter ind.

Typiske anvendelser

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.

Relateret

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.