སྒྱུ་རྩལ
མཛེས་སྡུག་དང་བདེ་ཐང
བཟོ་རིག
རིག་གནས་དང་ལོ་རྒྱུས
དགའ་སྟོན
ཁོར་ཡུག
ཟས་དང་བཏུང་རྫས
ལྗང་མ་འཇོར་ལུགས
ཕྱིར་འཕྲུལ་རིག
སློབ་གྲྭའི་ལས་འགུལ།
ཚན་རིག
རྩེད་འགྲན
རིག་རྩལ
གྱོན་རུང
Using a Shift Register — SIK Circuit 14
Ed

བཟོས་མཁན

Ed

17. སྤྱི་ཟླ་གསུམ་པ 2026FI
༧༢

Using a Shift Register — SIK Circuit 14

Turn 3 Arduino pins into 8 outputs using a 74HC595 shift register IC. Learn about serial-to-parallel conversion, SPI communication, and bit manipulation.

ལམ་སྟོན

1

Parts & Introduction

What if you need more outputs than the Arduino has pins? A shift register (74HC595) converts serial data into 8 parallel outputs — you send data on 3 pins and control 8 LEDs. You can chain multiple shift registers for even more outputs! This introduces SPI-style communication and bit manipulation.

Parts Needed

  • 1x Arduino Uno + USB cable
  • 1x Breadboard
  • 1x 74HC595 Shift Register IC
  • 8x LEDs (any color)
  • 8x 330Ω Resistors
  • 19x Jumper Wires

གོམ་པ་འདིའི་རྫས་རིགས:

SparkFun Inventors Kit - V3.2SparkFun Inventors Kit - V3.21 kit
Arduino Uno R3Arduino Uno R31 piece
BreadboardBreadboard1 piece
74HC595 Shift Register74HC595 Shift Register1 piece
5mm LED5mm LED8 pieces
330 Ohm Resistor330 Ohm Resistor8 pieces
Jumper WiresJumper Wires10 pieces

ལག་ཆས་དགོས་མཁོ:

Computer with Arduino IDE
2

Hardware Hookup

Wiring Instructions

Place the 74HC595 chip so it bridges the center canyon. The notch indicates pin 1.

74HC595 Pin Connections
PinNameConnection
1 (QB)Output BLED 2 positive
2 (QC)Output CLED 3 positive
3 (QD)Output DLED 4 positive
4 (QE)Output ELED 5 positive
5 (QF)Output FLED 6 positive
6 (QG)Output GLED 7 positive
7 (QH)Output HLED 8 positive
8 (GND)GroundGND
10 (SRCLR*)Clear5V (active low, keep high)
11 (SRCLK)ClockArduino Pin 3
12 (RCLK)LatchArduino Pin 4
13 (OE*)Output EnableGND (active low)
14 (SER)DataArduino Pin 2
15 (QA)Output ALED 1 positive
16 (VCC)Power5V

Connect each LED's negative leg through a 330Ω resistor to GND.

གོམ་པ་འདིའི་རྫས་རིགས:

74HC595 Shift Register74HC595 Shift Register1 piece
5mm LED5mm LED8 pieces
330 Ohm Resistor330 Ohm Resistor8 pieces
BreadboardBreadboard1 piece
Jumper WiresJumper Wires10 pieces
3

Arduino Code

Open the Arduino IDE and upload the following sketch to your Arduino board.

shift_register.inoarduino
/*
SparkFun Inventor's Kit
Example sketch 14 — SHIFT REGISTER

Use a shift register to turn three pins into eight outputs.

Hardware connections:
  74HC595 pin 14 (SER) to Arduino pin 2 (data)
  74HC595 pin 11 (SRCLK) to Arduino pin 3 (clock)
  74HC595 pin 12 (RCLK) to Arduino pin 4 (latch)
  74HC595 pin 8 to GND, pin 16 to 5V
  74HC595 pin 10 to 5V, pin 13 to GND
  Outputs QA-QH to LEDs through 330 ohm resistors

This code is completely free for any use.
*/

int datapin = 2;
int clockpin = 3;
int latchpin = 4;

byte data = 0;

void setup()
{
  pinMode(datapin, OUTPUT);
  pinMode(clockpin, OUTPUT);
  pinMode(latchpin, OUTPUT);
}

void loop()
{
  oneAfterAnother();

  //oneOnAtATime();
  //pingPong();
  //randomLED();
  //marquee();
  //binaryCount();
}

void shiftWrite(int desiredPin, boolean desiredState)
{
  bitWrite(data, desiredPin, desiredState);
  shiftOut(datapin, clockpin, MSBFIRST, data);
  digitalWrite(latchpin, HIGH);
  digitalWrite(latchpin, LOW);
}

void oneAfterAnother()
{
  int index;
  int delayTime = 100;

  for(index = 0; index <= 7; index++)
  {
    shiftWrite(index, HIGH);
    delay(delayTime);
  }
  for(index = 7; index >= 0; index--)
  {
    shiftWrite(index, LOW);
    delay(delayTime);
  }
}

void oneOnAtATime()
{
  int index;
  int delayTime = 100;

  for(index = 0; index <= 7; index++)
  {
    shiftWrite(index, HIGH);
    delay(delayTime);
    shiftWrite(index, LOW);
  }
}

void pingPong()
{
  int index;
  int delayTime = 100;

  for(index = 0; index <= 7; index++)
  {
    shiftWrite(index, HIGH);
    delay(delayTime);
    shiftWrite(index, LOW);
  }
  for(index = 7; index >= 0; index--)
  {
    shiftWrite(index, HIGH);
    delay(delayTime);
    shiftWrite(index, LOW);
  }
}

void randomLED()
{
  int index;
  int delayTime = 100;

  index = random(8);
  shiftWrite(index, HIGH);
  delay(delayTime);
  shiftWrite(index, LOW);
}

void marquee()
{
  int index;
  int delayTime = 200;

  for(index = 0; index <= 3; index++)
  {
    shiftWrite(index, HIGH);
    shiftWrite(index+4, HIGH);
    delay(delayTime);
    shiftWrite(index, LOW);
    shiftWrite(index+4, LOW);
  }
}

void binaryCount()
{
  int delayTime = 1000;

  shiftOut(datapin, clockpin, MSBFIRST, data);
  digitalWrite(latchpin, HIGH);
  digitalWrite(latchpin, LOW);

  data++;
  delay(delayTime);
}

གོམ་པ་འདིའི་རྫས་རིགས:

Arduino Uno R3Arduino Uno R31 piece

ལག་ཆས་དགོས་མཁོ:

Computer with Arduino IDE
4

Test & Experiment

What You Should See

The same LED patterns as Circuit 4 (chase, ping-pong, etc.) but using only 3 Arduino pins instead of 8! The shift register does the heavy lifting.

Troubleshooting

  • Arduino power LED goes out: The chip is inserted backwards. Fix it quickly — no permanent damage if caught fast.
  • Not working: With 19 wires, a crossed connection is likely. Double-check systematically.

Experiments to Try

  • Uncomment binaryCount() to see binary counting from 0-255 displayed on the LEDs.
  • Chain two 74HC595s together for 16 outputs from just 3 pins.
  • Combine with a potentiometer to control the animation speed.

རྫས་རིགས

7

ལག་ཆས་དགོས་མཁོ

1
  • Computer with Arduino IDE
ཚོད་དཔག་བསྡོམས
$224.00

Required Equipment

Equipment this kind of build typically needs — buy from any maker below.

You can swap these in

Can't get one of the materials? Swap it for an equivalent — these work just as well.

CC0 སྤྱི་དབང

བིལུ་པིརིན་ཊི་འདི་CC0 འོག་བཀྲམས་ཡོད། ཁྱེད་རང་གིས་ཆོག་མཆན་མ་བཞེས་པར་ཕབ་ལེན་དང་བཟོ་བཅོས། བགོ་བཤའ། དགོས་མཁོ་གང་ལའང་བཀོལ་སྤྱོད་བྱས་ཆོག

བཟོ་མཁན་ལ་རྒྱབ་སྐྱོར་བྱེད་པའི་ཆེད་ཁོང་ཚོའི་བིལུ་པིརིན་ཊི་བརྒྱུད་ཐོན་སྐྱེད་ཉོ། བཟོ་མཁན་གྱིས བཟོ་མཁན་གྱི་ཁེ་ཕོགས ཚོང་པས་གཏན་འཁེལ་བྱས་པ། ཡང་ན་བིལུ་པིརིན་ཊི་འདིའི་པར་གསར་བཟོས་ཏེ་ཁྱེད་རང་གི་བིལུ་པིརིན་ཊི་ནང་མཐུད་སྦྲེལ་བྱས་ཏེ་ཡོང་སྒོ་བགོ་བཤའ་བྱེད།

གྲོས་བསྡུར

(0)

ནང་འཛུལ གྲོས་བསྡུར་ནང་མཉམ་ཞུགས་ཆེད

བསམ་ཚུལ་ཚུ་ཐོབ་བཞིན...