- Tinkercad에서 아두이노 시뮬레이션 수행
- 웹에서 아두이노 회로를 구성하고 시뮬레이션을 수행
- 회로 구성
- Breadboard
- Arduino
- BCD(Binary Coded Decimal): 이진화십진수, 이진수 네 자리를 묶어 십진수 한 자리로 사용하는 기수법
- BCD to 7-segment decoder를 사용하면, 7-segment LED를 쉽게 구동할 수 있음
- 7-segment Decoder(CD4511): BCD code를 만드는 회로, 숫자를 만드는 역할
- 개발
- 7 segment를 편리하게 구동시키기 위해서 display decoder가 개발
- 타입
- common Cathod(음극)
- common Anode(양극)
- 개발
- 7-Segment
- FND(Flexible Numeric display)라고 불리며, 7개의 문자용 SEGMENT와 1개의 DP SEGMENT 로 구성된 LED 표시기임
- FND 는 컬러에 따라, 자리수에 따라, 동작방식에 따라 다양한 종류가 있음
- 입력 4개의 핀을 통해 출력 7개의 핀을 제어하여 원하는 형태의 숫자가 출력
- 대표적인 소자로 74LS47이 있으며 내부에 논리회로로 구성되어 2진수에 해당하는 입력핀의 신호에 대해 7 segment 디스플레이로 숫자 형태를 출력
1. Decoder의 원리
7 Segment Decoder는 7 Segment로 숫자를 표현하는데 필요한 제어선을 7개에서 4개로 줄일 수 있는 장치이며 코드명은 CD4511입니다.
- 아두이노의 핀은 제한적이기 때문에 적은 수의 핀으로 더 많은 작업을 하기 위해 7 Segment Decoder와 같은 장치를 활용할 수 있습니다.
- 대표적인 아두이노 보드인 아두이노 우노(UNO)에는 디지털 핀이 0번부터 13번까지 총 14개의 핀으로 구성되지만 7 Segment를 사용하면 6 ~ 7개의 핀만 남습니다.
- 7 Segment를 사용하더라도 여분의 핀으로 센서를 추가하거나 적외선 또는 블루투스 통신 등에 사용할 수 있도록 7 Segment Decoder에 대해 살펴보겠습니다.
- 7 Segment Decoder는 시뮬레이터의 구성요소 검색창에 “segment” 키워드로 검색해 작업판에 배치하고 공통 타입은 **캐소드(Cathode)**를 선택합니다.
1.1 핀 위치에 따른 동작-특성
7-segment Decoder(CD4511)은 7 Segment LED를 제어하는데 효율적인 칩입니다. 이 칩은 4가지 값에 의해서 7개의 출력값을 만들어 낼 수 있습니다.
- 위 그림(CD4511)에서 보는것 처럼 입력 A,B,C,D 핀으로 아두이노에서 4개의 핀의 출력값을 CD4511 칩에 입력으로 받게 됩니다. CD4511 칩의 연결은 다음 과 같습니다.
- VCC핀 과 GND핀은 아두이노에 5V와 GND 핀에 연결
- LT핀와 BI핀은 VCC로 연결
- LE핀은 GND로 연결
- 입력 A,B,C,D핀은 아두이노 디지털핀 4개 연결(실험에서는 2,3,4,5핀 사용)
- 출력 a,b,c,d,e,f,g핀은 7 Segment LED의 DP핀을 제외한 나머지 순차적으로 A,B,C,D,E,F,G핀에 연결
- 회로도 구성
- 구성: CD4511 칩 1개, 7 Segment LED 1개(Cathode), 저항 220옴 2개, 아두이노우노, 브레드보드
- 내용 : CD4511 칩을 이용해서 7 Segment LED에 숫자를 출력
- 코딩
- 함수 : pinMode(출력핀, 모드), digitalWrite(출력핀, 상태값)
- 내용 : 아두이노에서 4개의 출력 상태를 값을 CD4511 칩을 제어하여 7 Segment LED에 숫자를 0~9까지 순차적으로 출력
- CD4511 제어 : digitalWrite(출력핀, 상태값)으로 CD4511 칩의 출력값을 결정
- 7 Segment Decoder 사용하기의 회로구성
- 7 Segment Decoder의 핀 구성
- **전원(Vcc)**과 그라운드(GND)
- 7 Segment에 연결할 A부터 F까지의 핀
- 아두이노에 연결해 7세그먼트의 출력을 제어할 AIN, BIN, CIN, DIN
- 7 Segment Decoder를 테스트하기 위한 3개의 핀인 LT(Lamp Test), BI(Blanking), LE(Latch Enable)
- 연결
- 전원(Vcc)와 그라운드(GND)는 아두이노의 전원과 그라운드에 연결되도록 브레드보드에 배치
- 7세그먼트 디코더의 A부터 G까지 7개 단자는 7세그먼트의 A ~ F단자에 연결
- AIN, BIN, CIN, DIN 단자는 아두이노의 디지털 핀에 연결해 7세그먼트 디코더를 통해 7세그먼트의 숫자 값을 제어하기 위한 입력 단자임
- AIN은 아두이노의 디지털 4번
- BIN은 5번
- CIN은 6번
- DIN은 7번 핀에 연결
- 마지막 테스트 목적의 LT, BI, LE 단자를 연결하기 위해 7세그먼트 디코더의 입력에 대한 출력 결과를 보여주는 진리표를 참고해야 함
1.2 진리표(Anode, Cathode)
- 진리표 해석
- 노란색 바탕으로 표시된 부분을 통해 LT, BI, LE 단자에 대한 입력과 출력 결과를 볼 수 있음
- 예) LE 단자의 값이 0일 때 AIN, BIN, CIN, DIN의 값에 상관없이 A, B, C, D, E, F, G의 출력 값이 1이라는 것을 의미
- 0은 디지털 신호 값 LOW와 같고 1은 디지털 신호 값 HIGH
- 진리표에서 ‘X’라고 표시한 것은 0 또는 1 중 어떤 값이 와도 상관없다는 것
- BI의 값이 0이고 LE의 값이 1이면 AIN, BIN, CIN, DIN의 값에 상관없이 A, B, C, D, E, F, G의 출력 값이 0
- 따라서 LT와 BI단자를 교대로 설정해 출력하면 어떤 영역의 LED가 고장 났는지 테스트해볼 수 있음
- 테스트 목적의 LE 단자는 값이 1인 동안 AIN, BIN, CIN, DIN의 입력 값을 저장하는 기능을 갖음
- 7세그먼트 디코더로 7세그먼트를 제어하기 위해 진리표의 초록색 영역으로 표시된 부분을 중점적으로 사용
- AIN, BIN, CIN, DIN의 값에 따라 7세그먼트에 숫자 0부터 9까지 표시되도록 A ~ G 단자의 출력 값을 변경하기 때문에 4개의 단자로 7세그먼트를 제어할 수 있음
- 노란색 바탕으로 표시된 부분을 통해 LT, BI, LE 단자에 대한 입력과 출력 결과를 볼 수 있음
- 7세그먼트 디코더 사용하는 코드
- 코드 해석
- 3번째 줄
- 아두이노의 디지털 핀과 7세그먼트 디코더의 AIN, BIN, CIN, DIN 단자의 매핑 관계를 dataPin이라는 1차원 배열로 표현
- AIN은 아두이노의 디지털 4번
- BIN은 5번
- CIN은 6번
- DIN은 7번 핀에 연결되었다는 의미
- 만약 아두이노의 다른 디지털 핀을 사용하려고 한다면 핀번호만 변경해주면 됨
- 아두이노의 디지털 핀과 7세그먼트 디코더의 AIN, BIN, CIN, DIN 단자의 매핑 관계를 dataPin이라는 1차원 배열로 표현
- 5번째 줄부터 17번째 줄
- digit이라는 2차원 배열을 선언해 7세그먼트 디코드의 입력 값을 설정
- 4개의 디지털 핀을 이용해 표현할 수 있는 경우의 수는 0 ~ 15까지 총 16가지
- 그 중 숫자 0부터 9까지 표현하기 위해 10개만 사용하고 나머지 6개는 진리표의 붉은색 영역으로 표시된 것과 같이 7세그먼트의 모든 LED를 끈 상태로 예외처리
- 즉, 7세그먼트 디코더에 입력되는 AIN, BIN, CIN, DIN 값에 따라 7세그먼트에 출력되는 숫자를 표시할 수 있음
- 예) AIN, BIN, CIN, DIN에 모두 0 값을 설정하면 7세그먼트에 숫자 0을 출력하기 위해 7세그먼트의 A ~ G 값이 결정됨
- 23번, 24번째 줄
- 아두이노와 7세그먼트 디코더 간 연결된 디지털 핀을 출력 모드로 설정
- dataPin이라는 1차원 배열로 선언했기 때문에 for 반복문을 사용해 간결하게 표현할 수 있음
- 30번째 줄부터 33번째 줄
- displayDigit() 함수를 이용해 7세그먼트에 숫자 0부터 9까지 출력
- for문을 통해 displayDigit() 함수를 10번 호출하고 매개변수로 아두이노의 디지털 핀 번호를 포함한 dataPin과 7세그먼트 디코더의 입력 값을 설정하기 위한 digit 변수를 사용
- 그리고 delay() 함수를 통해 1초마다 숫자가 변경되도록 함
- 37번째 줄부터 42번째 줄
- dispayDigit() 함수를 구현
- digitalWrite() 함수를 통해 7세그먼트 디코더에 연결된 아두이노 디지털 핀 정보와 digit 변수에 저장된 값을 사용하면 7세그먼트의 숫자 값을 변경할 수 있음
- 3번째 줄
- 시뮬레이션을 시작해 실행 결과를 확인
728x90
'공부 > 데이터 수집과 관리' 카테고리의 다른 글
[Tinkercad] 회로 부품, 간단 요약 (0) | 2023.04.18 |
---|---|
[Tinkercad] 초음파 센서: Ultra sonic wave (0) | 2023.04.18 |
[Tinkercad] 7 Segment & Decoder 연결 (0) | 2023.04.18 |
[Tinkercad] 7 Segment, Anode와 Cathode (0) | 2023.04.18 |
[Tinkercad] 7 Segment의 원리, 특성 (0) | 2023.04.18 |