【 아두이노 센서#12】 시프트레지스터 Bit(연산자)제어 실습
※ 사전 학습하면 좋을 내용(앞선 강의)
☞ 시프트 레지스터의 개념(시프트 레지스터 이해하기 ☜클릭)
☞ 시프트레지스터 2단 연결 실습(데이지 체인-Daisy Chain 실습 ☜클릭)
오늘은 2단으로 연결된 상태에서 비트제어 함수를 통해서 좀 모양나도록(?) LED를 제어해보고자 한다.
▶ 실습에 사용되는 74HC595 IC 자료
《 74HC595 IC 핀배열》
▶ 실습 목표 :
1. 아래 8bit 시프트 레지스터 도면과 같은 회로를 2단으로 연결 구성한다.
2. 8bit짜리의 LED를 차례로 하나씩 켜지도록 한다.(1단, 2단 회로 동시 동작)
▶ 실습 회로도면 :
(이미지 클릭하면 확대 가능)
2단 연결회로는 아래 회로에서 같은 부품과 회로를 우측에 똑 같이 하나 더 구성하여 연결 하면 된다.
1. 둘째 단 IC의 시리얼 입력(14pin)은 첫 단 IC의 9번 핀에서 받도록 연결한다
즉, IC1의 9pin 과 IC2의 14pin 을 서로 연결해준다)
2. 둘째 딴의 Latch클럭(12pin)과 shift클럭(11pin)에는 첫 단 IC 핀과 묶어준다(동기화)
(2단 연결을 위해서는 괄호안의 수량 만큼 부품이 필요하다)
3. IC가 동작하기 위한 전원(vcc-16번, Gnd-8번)은 반드시 인가 되어야 동작이 되며, 만약 +,-를 정반대로 인가할 경우 IC가 손상될 수 있으니 주의한다.
4. 2단 연결을 위해서는 위의 회로 연결 내용을 참고해서 연결 한다.
→
2단 연결회로는 같은 부품과 회로를 우측에 똑 같이 하나 더 구성하여 연결 하면 된다.
1. 둘째 단 IC의 시리얼 입력(14pin)은 첫 단 IC의 9번 핀에서 받도록 연결한다
즉, IC1의 9pin 과 IC2의 14pin 을 서로 연결해준다)
2. 둘째 딴의 Latch클럭(12pin)과 shift클럭(11pin)에는 첫 단 IC 핀과 묶어준다(동기화)
아래 그림에서 9번 핀에서 8bit 데이터의 앞선 값이 계속 출력된다.
이 핀의 출력을 다음 단의 입력으로 넣는 것이다.
▶ 비트(bit) 제어 관련 함수 정리 :
▶ 프로그램 코드 및 설명 :
const int SER=8; // 아두 8핀 <-> 595IC Serial Data (14핀)
const int LATCH=9; // 아두 9핀 <-> 595IC Latch CLK (12핀)
const int CLK= 10; // 아두 10핀 <-> 595IC Shift CLK (11핀)
byte x = B00000000; // 바이트 x 의 값은 모두 ‘0’ 으로 초기화
void setup() {
//시프트 레지스터에 연결된 각 핀의 입출력 모드를 출력으로 지정
pinMode(SER, OUTPUT);
pinMode(LATCH, OUTPUT);
pinMode(CLK, OUTPUT);
}
void loop() {
for (int i=1; i>=0; i--) // i는 1에서 0 까지 감소 (LED On /Off)
{
for (int j=8; j>=0; j--) // j는 8에서 0까지 감소 (1~8번 LED On/Off)
{
digitalWrite(LATCH, LOW); // 레지스터 값 변경하려는 신호 보냄
shiftOut(SER, CLK, LSBFIRST,bitWrite(x,j,i)); // 1단 레지스터 (595 IC)
shiftOut(SER, CLK, MSBFIRST,bitWrite(x,j,i)); // 2단 레지스터 (595 IC)
digitalWrite(LATCH, HIGH); //'HIGH' 입력으로 데이터 전송 끝을 알림
delay (50);
}
}
1. 프로그램 코드를 파악할 때 맨 위쪽 《74HC595 핀배열》 을 참고해서 본다면 파악하기가 훨씬 쉽다.
▶ 실행 결과 :
(영상은 고화질로 설정하고 전체화면으로 보세요)
《안에서 밖으로 켜기》
《밖에서 안으로 켜기》
아래 동작을 위해서는
shiftOut() 함수를 아래와 같이 MSB 와 LSB 위치를 서로 바꾸어 주면 된다.
shiftOut(SER, CLK, MSBFIRST,bitWrite(x,j,i)); // 1단 레지스터 (595 IC)
shiftOut(SER, CLK, LSBFIRST,bitWrite(x,j,i)); // 2단 레지스터 (595 IC)
※ LED 배열을 하트 모양으로 만들어 보면 , 아주 근사한 장식품이 될 것이다.
▶ 아두이노 파일(다운) :
'아두이노 > 2. 아두이노센서' 카테고리의 다른 글
【 아두이노 센서#14】 TC74 온도센서값 RGB & LCD로 출력하기 (0) | 2018.12.21 |
---|---|
【 아두이노 센서#13】 TC74 온도센서 활용하기 1 (0) | 2018.12.20 |
【 아두이노 센서#11】 시프트레지스터 2단 연결하기 나(Daisy Chain) (0) | 2018.12.17 |
【 아두이노 센서#10】 나이트 라이더 만들어보기 (0) | 2018.12.14 |
【 아두이노 센서#9】 시프트 레지스터 이해하기 실습1 (0) | 2018.12.13 |