Programming/Arduino
74HC595를 이용한 3핀->8핀 만들기
김구조
2013. 1. 17. 16:39
아두이노를 쓰다보면 핀수가 부족해서 원하고자하는것을 못하는경우가 생깁니다.
이럴때를 대비해서 아두이노 사이트에서는 쉬프트라는 명령어를 제공합니다. (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매트릭스를 보여드릴께요