-
아두이노 | 7-세그먼트 디스플레이Technology/Arduino 2024. 3. 1. 18:00
1. 7-세그먼트 디스플레이
7-세그먼트 디스플레이는 7개의 세그먼트(segment)와 1개의 소수점(Decimal Point, DP)로 구성된 전자 소자로, 숫자를 표현하기 위해 사용된다. 세그먼트와 DP는 모두 LED로 이루져 있으며, LED에 순방향 전류가 흐르면 해당 세그먼트와 DP가 빛나면서 숫자를 표현할 수 있다. 숫자를 표현하기 위해 배치된 LED 8개를 제어하는 셈이다. 7-세그먼트 디스플레이는 양극(Anode) 타입과 음극(Cathod) 타입이 있다.
1.1. 양극 타입
7-세그먼트 디스플레이 양극 타입은 10개의 단자를 가지고 있는데, 8개는 LED를 제어하기 위한 단자, 2개는 모든 LED의 한쪽 끝이 묶인 공통 단자이다. 양극 타입의 경우, 모든 LED 양극이 공통으로 묶여 있어 공통 단자들을 전원에 연결해 회로를 구성한다. LED를 제어하는 단자에 디지털 신호를 가하지 않으면 해당 단자와 연결된 LED가 작동하고, 디지털 신호를 가하면 LED가 작동하지 않는다. 7-세그먼트 디스플레이 양극 타입은 아래 링크로 접속하면 구입할 수 있다.
1.2. 음극 타입
7-세그먼트 디스플레이 음극 타입은 모든 LED의 음극이 공통으로 묶여 있어 해당 공통 단자를 접지에 연결해 회로를 구성한다. LED를 제어하는 단자에 디지털 신호를 가하면 해당 단자와 연결된 LED가 작동하고, 디지털 신호를 가하지 않으면 LED가 작동하지 않는다. 7-세그먼트 디스플레이 음극 타입은 아래 링크로 접속하면 구입할 수 있다.
2. 예제
2.1. 회로 구성 - 양극 타입
2.2. 프로그램 작성 - 양극 타입
// 정수형 배열 선언 후 디지털 핀 번호로 초기화 int DataPin[8] = {12, 11, 10, 9, 8, 7, 6, 5}; // A, B, C, D, E, F, G, DP 순서로 연결 // 정수형 2차원 배열 선언 후 숫자를 나타내는 논리 배열로 초기화 int DigitNumber[10][8] = { // A, B, C, D, E, F, G, DP 0, 0, 0, 0, 0, 0, 1, 1, // 0 1, 0, 0, 1, 1, 1, 1, 1, // 1 0, 0, 1, 0, 0, 1, 0, 1, // 2 0, 0, 0, 0, 1, 1, 0, 1, // 3 1, 0, 0, 1, 1, 0, 0, 1, // 4 0, 1, 0, 0, 1, 0, 0, 1, // 5 0, 1, 0, 0, 0, 0, 0, 1, // 6 0, 0, 0, 1, 1, 1, 1, 1, // 7 0, 0, 0, 0, 0, 0, 0, 1, // 8 0, 0, 0, 0, 1, 0, 0, 1 // 9 }; void setup() { for (int i = 0; i < 8; i++) { pinMode(DataPin[i], OUTPUT); // 디지털 DataPin[i]번 핀을 출력(OUTPUT) 모드로 설정 } } void loop() { // 7-세그먼트 디스플레이에 숫자를 순서대로 출력 for (int i = 0; i < 10; i++) { for (int j = 0; j < 8; j++) { // 디지털 DataPin[j]번 핀에 DigitNumber[i][j]에 해당하는 디지털 신호 출력 digitalWrite(DataPin[j], DigitNumber[i][j]); } delay(1000); // 1000 ms 대기 } }
2.3. 회로 구성 - 음극 타입
2.4. 회로 구성 - 음극 타입
// 정수형 배열 선언 후 디지털 핀 번호로 초기화 int DataPin[8] = {12, 11, 10, 9, 8, 7, 6, 5}; // A, B, C, D, E, F, G, DP 순서로 연결 // 정수형 2차원 배열 선언 후 숫자를 나타내는 논리 배열로 초기화 int DigitNumber[10][8] = { // A, B, C, D, E, F, G, DP 1, 1, 1, 1, 1, 1, 0, 0, // 0 0, 1, 1, 0, 0, 0, 0, 0, // 1 1, 1, 0, 1, 1, 0, 1, 0, // 2 1, 1, 1, 1, 0, 0, 1, 0, // 3 0, 1, 1, 0, 0, 1, 1, 0, // 4 1, 0, 1, 1, 0, 1, 1, 0, // 5 1, 0, 1, 1, 1, 1, 1, 0, // 6 1, 1, 1, 0, 0, 0, 0, 0, // 7 1, 1, 1, 1, 1, 1, 1, 0, // 8 1, 1, 1, 1, 0, 1, 1, 0 // 9 }; void setup() { for (int i = 0; i < 8; i++) { pinMode(DataPin[i], OUTPUT); // 디지털 DataPin[i]번 핀을 출력(OUTPUT) 모드로 설정 } } void loop() { // 7-세그먼트 디스플레이에 숫자를 순서대로 출력 for (int i = 0; i < 10; i++) { for (int j = 0; j < 8; j++) { // 디지털 DataPin[j]번 핀에 DigitNumber[i][j]에 해당하는 디지털 신호 출력 digitalWrite(DataPin[j], DigitNumber[i][j]); } delay(1000); // 1000 ms 대기 } }
[함께 읽으면 좋은 페이지]
참고문헌
- 최훈. (2022). 팅커캐드 & 아두이노. 길벗캠퍼스.
반응형'Technology > Arduino' 카테고리의 다른 글
아두이노 | SIPO 시프트 레지스터 74HC595 (0) 2024.03.15 아두이노 | 7-세그먼트 디코더 CD4511 (2) 2024.03.08 아두이노 프로젝트 | 적외선 무선 원격 통신을 이용한 무선 RC카 (0) 2024.02.23 아두이노 라이브러리 | 적외선 무선 원격 통신 (0) 2024.02.16 아두이노 프로젝트 | 현관 센서등 (1) 2024.02.09