This page is also available in 3 other languages

shiftOut()

[Advanced I/O]

설명

한번에 한 비트씩의 바이트를 옮긴다. 최고(가장 왼쪽) 또는 최저(가장 오른쪽) 비트부터 시작한다. 각 비트에, 클락 핀은 하이로 풀 되고, 다음 비트는 데이터 라인에서 읽히고, 클락 핀은 로우 된다. 각 비트는 차례로 데이터 핀에 써지며, 각 클락 핀이 펄스되어(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)

반환

없음

예제 코드

For accompanying circuit, see the tutorial on controlling a 74HC595 shift register.

//**************************************************************//
//  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 is currently written to output 1 byte (8 bits) so it requires a two step operation to output values larger than 255.

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

See also