아두이노를 쓰다보면 핀수가 부족해서 원하고자하는것을 못하는경우가 생깁니다.


이럴때를 대비해서 아두이노 사이트에서는 쉬프트라는 명령어를 제공합니다. (http://arduino.cc/en/Tutorial/ShiftOut)

74HC595이라는 쉬프트레지스터를 이용해서 포트를 확장하게 됩니다.


아두이노 사이트에 있는



이그림을 구현해 보도록 하겠습니다.


우선 74HC595를 이해해보면


출처 = http://blog.naver.com/eskelt/120157837942

11,12,14를 핀에 가지고 제어를 해줍니다.

중요한건 12번핀을 LOW화 시키고 코드를 집어넣은 뒤 12번 핀을 HIGH로 바꾸어 00000000 - 11111111 사이의 데이터를 집어넣을 수 있습니다.


핀번호에 맞추어 VCC , GND 까지 연결을 해줍니다.


아래소스는 기본 아두이노 사이트에서지원하는 샘플 소스입니다.


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

위 소스를 입력하고 동작시킨 영상입니다.



다음은 이걸활용한 LED매트릭스를 보여드릴께요

+ Recent posts