한번에 한 비트씩의 바이트를 옮긴다. 최고(가장 왼쪽) 또는 최저(가장 오른쪽) 비트부터 시작한다. 각 비트에, 클락 핀은 하이로 풀 되고, 다음 비트는 데이터 라인에서 읽히고, 클락 핀은 로우 된다. 각 비트는 차례로 데이터 핀에 써지며, 각 클락 핀이 펄스되어(high 되면, low) 비트가 사용가능함을 가리킨다. 주의 - 올라가는 에지에 의해 클락되는 장치와 인터페이스하면, shiftOut() 이 불리기 전에 클락 핀이 로우되는, 예를 들어 digitalWrite(clockPin, LOW), 것을 확인해야 한다.

이것은 소프트웨어 구현임; 아두이노는 SPI library 를 제공하는데 그것은 하드웨어 구현을 사용하며, 그것은 빠르지만 특정 핀에서만 돌아간다.


shiftOut(dataPin, clockPin, bitOrder, value)


  • dataPin: 각 비트에 입력할 핀 (int)
  • clockPin: dataPin 이 옳은 값(int) 로 맞추어지면 토글할 핀
  • bitOrder: 비트들 안에서 어떤 순서로 옮길지; MSBFIRST 또는 LSBFIRST. (MSB 우선, 또는, LSB 우선)
  • value: 옮길 자료. (byte)


  • 없음

예제 코드

함께 제공되는 회로 는 74HC595 시프트 레지스터 제어에 대한 자습서를 참조하십시오.

//**************************************************************// // Name : shiftOutCode, Hello World // // Author : Carlyn Maw,Tom Igoe // // Date : 25 Oct, 2006 // // Version : 1.0 // // Notes : Code for using a 74HC595 Shift Register // // : to count from 0 to 255 // //**************************************************************** //Pin connected to ST_CP of 74HC595 int latchPin = 8; //Pin connected to SH_CP of 74HC595 int clockPin = 12; ////Pin connected to DS of 74HC595 int dataPin = 11; void setup() { //set pins to output because they are addressed in the main loop pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); } void loop() { //count up routine for (int j = 0; j < 256; j++) { //ground latchPin and hold low for as long as you are transmitting digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, LSBFIRST, j); //return the latch pin high to signal chip that it //no longer needs to listen for information digitalWrite(latchPin, HIGH); delay(1000); } }

※ 주의 및 경고:

dataPin 및 clockPin은 pinMode()를 호출하여 OUTPUT으로 설정되어 있어야합니다 .

shiftOut은 현재 1 바이트 (8 비트)를 출력하도록 작성되므로 255보다 큰 값을 출력하려면 2 단계 작업이 필요합니다.

// Do this for MSBFIRST serial int data = 500; // shift out highbyte shiftOut(dataPin, clock, MSBFIRST, (data >> 8)); // shift out lowbyte shiftOut(dataPin, clock, MSBFIRST, data); // Or do this for LSBFIRST serial data = 500; // shift out lowbyte shiftOut(dataPin, clock, LSBFIRST, data); // shift out highbyte shiftOut(dataPin, clock, LSBFIRST, (data >> 8));



Arduino UNO R3
Arduino Starter Kit
Please note: These are affiliate links. If you buy the components through these links, We may get a commission at no extra cost to you. We appreciate it.


  • We are AVAILABLE for HIRE. See how to hire us to build your project
  • Any suggestion, correction, and translation? please email us at, We appreciate it
  • We mainly keep improving the references in English. See English version of this page for the latest update.