실습은 개인 학습을 위해 "주) 엘케이 임베디드" 사이트에서 구매한 아두이노 코딩 배우기 고급 키트를 이용한 학습입니다. 동봉된 책을 기반으로 학습하면서 개인적인 궁금증과 추가 필요한 부분을 정리한 블로그임을 미리 알려드립니다
< 준비물 >
아두이노 우노 R3 : 1개
USB 케이블 : 1개
점퍼 케이블(숫숫) : 30개가량
브레드 보드 : 1개, 830홀 사용
74HC595 : 1개
LED : 8개
저항 : 220Ω 8개
< 개요 >
74HC595를 이용 8개의 LED를 0.5초 간격으로 순차 점등하는 실습니다.
팅커 캐드 링크입니다 : https://www.tinkercad.com/things/0eSQkDdIAj5
< 참고 지식 >
⦿ 74HC595
74HC 시리즈 중 가장 범용적인 시프트 레지스터 IC입니다. 아두이노에서는 소수의 출력 포트로 여러 개의 출력 포트를 제어할 때 주로 사용합니다. 시프트 레지스터에는 여러 가지가 있지만 이번에 사용한 74HC595는 직렬 신호를 병렬 신호로 변환해주는 컨버터 이기도 합니다.
⦿ 74HC595 PIN Assignment
- VCC (Pin no : 16) : 동작전압 DC 2V ~ 6V (아두이노 3.3V 혹은 5V 모두 사용 가능)
- GND (Pin no : 8) : Ground 접지
- A (Pin no : 14) : Serial Data Input 클럭 신호에 맞춰 데이트를 입력받는 핀
- QA ~QH (Pin no : 15, 1 ~ 7) : Parallel Data Output 출력을 담당하는 8개 단자, QA ~ QH까지 8개 순차적 연결
- OUTPUT ENABLE (Pin no : 13) : 출력 핀 전체를 한 번에 on/off 시키는 단자. 출력 신호를 LED에 연결 사용 시 아두이노 PWM 단자를 이용 LED 밝기 조절이 가능합니다. 일반 사용 시 아두이노 GND 단자에 연결하여 사용하시면 됩니다. { 0일 때 ON, 1일 때 OFF}
- RESET (Pin no : 10) : 0의 신호가 들어오면 저장 데이터를 초기화 단자. 일반적으로 사용시 아두이노 VCC(3.3V 혹은 5V)에 연결 사용하시면 됩니다. {0일 때 RESET, 1 일 때 미동작)
- SHIFT CLOCK (Pin no : 11) : 시리얼데이터 입력단에서 입력받은 데이터를 시프트 레지스터에 저장 및 이동을 위한 클럭 신호 단자입니다.
- LATCH CLOCK (Pin no : 12) : 시프트 레지스터에 저장된 데이터를 스토리지 레지스터에 저장 후 페럴러 데이터 아웃으로 출력하도록 해주는 신호 단자입니다.
- S Q H (Pin no : 9) : 확장 신호 단자, 시프트 레지스터를 확장(추가) 사용 시 다음 시프트 레지스터로 데이터를 전달하는 출력 단자입니다. 다음 레지스터의 14핀에 연결 사용할 수 있습니다. 연결할 추가 레지스터가 없다면 미사용.
♤ 74HC595관련 자세한 정보는 저의 블로그에 따로 작성한 것을 참조하세요.... https://coding-sinki.tistory.com/13
IC 74HC595 (Shift Registor)
오늘은 74HC595 Shift Registor IC에 대하여 공부해 볼까 합니다. 하나의 bit를 저장하는 플립-플롭(Flip-Flop) 회로 여러 개를 일렬로 연결하여 여러 bit의 정보를 저장하는 것을 Registor라고 하고, 외부에
coding-sinki.tistory.com
< 실습코드 >
int dataPin = 2; //시리얼 data input으로 사용할 아두이노 출력 핀
int latchPin = 3; //Latch clock으로 사용할 아두이노 출력 핀
int shiftPin = 4; //Shift clock으로 사용할 아두이노 출력 핀
void setup()
{
pinMode(dataPin, OUTPUT); //data핀을 출력단으로 선언
pinMode(latchPin, OUTPUT); //latch핀을 출력단으로 선언
pinMode(shiftPin, OUTPUT); //shift 핀을 출력단으로 선언
}
void loop()
{
digitalWrite(latchPin, LOW); //latch핀을 로우
digitalWrite(shiftPin, LOW); //shift 핀을 로우
digitalWrite(dataPin, HIGH); //data 핀을 하이
digitalWrite(shiftPin, HIGH); //shift 핀을 하이 => data 핀(현재 하이) 값을 시프트 레지스터로 전달 및 데이터 옆으로 이동
digitalWrite(latchPin, HIGH); //latch 핀을 하이 => 시프트 레지스터 저장 값 출력
delay(500); // 지연 0.5초
digitalWrite(latchPin, LOW); //latch핀을 로우
digitalWrite(shiftPin, LOW); //shift 핀을 로우
digitalWrite(dataPin, LOW); //data 핀을 로우
digitalWrite(shiftPin, HIGH); //shift 핀을 하이 => data 핀(현재 로우) 값을 시프트 레지스터로 전달 및 데이터 옆으로 이동
digitalWrite(latchPin, HIGH); //latch 핀을 하이 => 시프트 레지스터 저장값 출력
delay(500); // 지연 0.5초
}
'Arduino > Arduinio기초 실습' 카테고리의 다른 글
6장. 7세그먼트(7 Segment. FND), 스위치 실습 (0) | 2022.04.04 |
---|---|
5장. 가변저항 10K 실습 (0) | 2022.04.02 |
4장. 시리얼 통신 실습 (0) | 2022.04.02 |
2장. 3색 LED 실습 (0) | 2022.03.27 |
1장. LED 스위치 실습 (1) | 2022.03.26 |