본문 바로가기

아두이노 논리회로 다루기 (74HC595)

반응형

이번에는 74HC595(논리 회로)를


다루는 방법을 알려드리겠습니다

(이번 포스트의 내용은 저의 개인적인 추측으로 이뤄졌습니다)



이녀석이 74HC595라는 녀석 인데요


이녀석을 이용하여


Led를 제어 할건데요



위와같은 논리 회로를 이용하는 이유는



아두이노를 사용할때 

15개의 디지털 핀이 있지만(RX, TX포함)


이것만으로 부족 할때가 있어서



 Vcc와 GND를포함해서 5개의 핀을


8개로 확장할수있기 때문에


74HC595 를 사용합니다


회로는 위의 사진을보고 연결해주시면 됩니다.




74HC595를 편하게 사용하기위해

아두이노에서 shiftOut이라는 함수를 사용하는데요



shiftout

 첫번째 값

두번째 값 

세번째 값 

네번째 값 

 디지털 2번핀

디지털 4번핀 

 LSBFRIST또는

MSBFRIST

이진코드


shiftOut의 세번째 값이 LSBFRIST또는 MSBFRIST라고 했는데요


두녀석의 차이는 오름차순이냐 내림차순이냐

그차이에요

LSBFRIST면 15, 7, 8, ~ 1순으로


MSBFRIST면 1, 2, 3~15순으로 에요




그리고 마지막 값은 이진코드라고 했는데요

이진법표기는

앞에다가 0b를 붙여주면 됩니다


ex) 0b00000001(이진법) = 1(십진법)

0b00000010(이진법) = 2(십진법)




그래서 마지막 값에

0b00000001 라고 하면


첫번째 LED만 켜지고


0b00000011 라고 하면


첫번째 두번째 LED만 켜져요


(참고로 십진법을 넣을수도 있지만

어차피 이진법으로 계산해야되서

이진법으로 표기하는것이 편합니다) 




 

shiftOut함수의 설명은 끝났지만

아직 디지털 3번핀을 사용을 안했죠?


디지털 3번핀은 데이터를 저장하는 기능이에요


그래서

digitalWrite(3, 0)으로하면 데이터를 저장하고

digitalWrite(3, 1)을 하면 데이터를

LED쪽으로 출력한다는 뜻 이에요



그래서 shiftOut이라는 함수를 사용하기전에

digitalWrite(3, 0);로 저장을 하게두고

사용후

digitalWrite(3, 1);로 LED로 신호를 보내는거죠






위처럼 회로를 구성하고



void setup() {

pinMode(2, OUTPUT);

pinMode(3, OUTPUT);

pinMode(4, OUTPUT);

 }

void draw() {

digitalWrite(3, 0);

shiftOut(2, 4, MSBFRIST, 0b01001001);

digitalWrite(3, 1);

}


위르 코드를 업로드시키면

1번째, 4번째, 7번째LED가 켜질거에요




그리고 만약에

74HC595를 2개를 사용할려면



기본적으로 위와같은 회로를 구성한다음


shiftOut함수를 연속으로 2번 사용하면 됩니다

(첫번째로 사용한 shiftOut은 그림상으로 왼쪽

두번째로 사요한  shiftOut은 그림상 오른쪽을 제어)


2개를 사용하는 또다른 방법이 있는데

그방법은 독자분들이 원하시면

그때 올리도록 하겠습니다



2개말고 3개, 4개 등

2개 이상을 사용할때도 위와같은 방법을 사용하시면 됩니다.


참고로 pwm을 출력시에는 74HC595의 데이터 시트(위에 올린거) 상에서

10번핀 대신 wpm포트에 연결해주시면 됩니다.


반응형

'아두이노' 카테고리의 다른 글

아두이노 시리얼 통신  (0) 2016.10.12
아두이노 새로 시작  (0) 2016.10.12
아두이노 레이저(with 눈차크)  (0) 2016.02.14
아두이노 피아노  (2) 2016.01.07
3. 아두이노 버튼을 이용하여 Led를 제어해보자!  (2) 2015.12.08