-
아두이노 라이브러리 | 7-세그먼트 디스플레이Technology/Arduino 2024. 3. 22. 18:00
1. 아두이노 라이브러리 추가
앞서 살펴본 예제에서는 7-세그먼트 디스플레이에 숫자나 글자를 나타내기 위해 세그먼트 LED를 하나하나 제어하였다. 그러나 아두이노 플랫폼은 7-세그먼트를 이보다 직관적으로 제어할 수 있는 라이브러리를 보유하고 있다. 그러나 기본적으로 제공되는 라이브러리는 아니기 때문에 라이브러리를 IDE에 추가하는 과정이 필요하다. 아두이노 IDE 상단 툴바에서 '툴'을 선택한 뒤 '라이브러리 관리' 항목을 선택하자. 그러면 곧이어 '라이브러리 매니저' 창이 나타난다. '라이브러리 매니저' 창 오른쪽 상단에 라이브러리 이름을 입력하면 아두이노 플랫폼에서 지원하는 라이브러리를 검색할 수 있다. 해당 칸에 우리가 이번 예제에서 사용할 라이브러리 'SevSeg'를 입력하자. 라이브러리를 검색하면 입력한 검색어와 관련된 라이브러리 목록이 나타난다. 7-세그먼트 디스플레이를 제어하기 위한 다양한 라이브러리가 있지만, 해당 예제에서는 라이브러리 'SevSeg' 버전 3.7.0을 설치하도록 하겠다. 아래 링크로 접속하면 해당 라이브러리에 대한 설명과 사용방법을 확인할 수 있다.
2. 예제
2.1. 회로 구성 - 양극 타입
2.2. 프로그램 작성 - 양극 타입
#include <SevSeg.h> // 7-세그먼트 디스플레이 라이브러리 추가 SevSeg Segment; // Segmemt라는 이름의 SevSeg 객체 생성 // 바이트 변수 선언 후 byte Configuration = COMMON_ANODE; // 바이트 변수 선언 후 제어하고자 하는 7-세그먼트 디스플레이의 개수로 초기화 byte NumDigit = 1; // 바이트 배열 선언 후 디지털 핀 번호로 초기화 byte DigitPins[] = {}; // 7-세그먼트 디스플레이 1개를 제어할 경우 사용하지 않음 byte SegmentPins[] = {12, 11, 10, 9, 8, 7, 6, 5}; // A, B, C, D, E, F, G, DP 순서로 연결 // 불린 변수 선언 후 저항 사용 여부로 초기화 bool ResistorsOnSegments = true; void setup() { // Segment 객체 초기화 Segment.begin(Configuration, NumDigit, DigitPins, SegmentPins, ResistorsOnSegments); // 7-세그먼트 디스플레이 밝기 조절 Segment.setBrightness(90); } void loop() { // 7-세그먼트 디스플레이에 숫자를 순서대로 출력 for (int i = 0; i < 10; i++) { Segment.setNumber(i); // 7-세그먼트 디스플레이에 숫자 i를 설정 delay(1000); // 1000 ms 대기 Segment.refreshDisplay(); // 7-세그먼트 디스플레이에 설정한 값을 출력 } }
2.3. 회로 구성 - 음극 타입
2.4. 프로그램 작성 - 음극 타입
#include <SevSeg.h> // 7-세그먼트 디스플레이 라이브러리 추가 SevSeg Segment; // Segmemt라는 이름의 SevSeg 객체 생성 // 바이트 변수 선언 후 byte Configuration = COMMON_CATHODE; // 바이트 변수 선언 후 제어하고자 하는 7-세그먼트 디스플레이의 개수로 초기화 byte NumDigit = 1; // 바이트 배열 선언 후 디지털 핀 번호로 초기화 byte DigitPins[] = {}; // 7-세그먼트 디스플레이 1개를 제어할 경우 사용하지 않음 byte SegmentPins[] = {12, 11, 10, 9, 8, 7, 6, 5}; // A, B, C, D, E, F, G, DP 순서로 연결 // 불린 변수 선언 후 저항 사용 여부로 초기화 bool ResistorsOnSegments = true; void setup() { // Segment 객체 초기화 Segment.begin(Configuration, NumDigit, DigitPins, SegmentPins, ResistorsOnSegments); // 7-세그먼트 디스플레이 밝기 조절 Segment.setBrightness(90); } void loop() { // 7-세그먼트 디스플레이에 숫자를 순서대로 출력 for (int i = 0; i < 10; i++) { Segment.setNumber(i); // 7-세그먼트 디스플레이에 숫자 i를 설정 delay(1000); // 1000 ms 대기 Segment.refreshDisplay(); // 7-세그먼트 디스플레이에 설정한 값을 출력 } }
2.5. 회로 구성 - 네 자리 7-세그먼트 디스플레이 음극 타입
2.6. 프로그램 작성 - 네 자리 7-세그먼트 디스플레이 음극 타입
#include <SevSeg.h> // 7-세그먼트 디스플레이 라이브러리 추가 SevSeg Segment; // Segmemt라는 이름의 SevSeg 객체 생성 // 바이트 변수 선언 후 byte Configuration = COMMON_CATHODE; // 바이트 변수 선언 후 제어하고자 하는 7-세그먼트 디스플레이의 개수로 초기화 byte NumDigit = 1; // 바이트 배열 선언 후 디지털 핀 번호로 초기화 byte DigitPins[] = {13, 12, 11, 10}; // 접지4, 접지3, 접지2, 접지1 순서로 연결 byte SegmentPins[] = {9, 8, 7, 6, 5, 4, 3, 2}; // A, B, C, D, E, F, G, DP 순서로 연결 // 불린 변수 선언 후 저항 사용 여부로 초기화 bool ResistorsOnSegments = true; void setup() { // Segment 객체 초기화 Segment.begin(Configuration, NumDigit, DigitPins, SegmentPins, ResistorsOnSegments); // 7-세그먼트 디스플레이 밝기 조절 Segment.setBrightness(90); } void loop() { // 7-세그먼트 디스플레이에 숫자를 순서대로 출력 for (int i = 0; i < 10000; i++) { Segment.setNumber(i); // 7-세그먼트 디스플레이에 숫자 i를 설정 delay(100); // 1000 ms 대기 Segment.refreshDisplay(); // 7-세그먼트 디스플레이에 설정한 값을 출력 } }
[함께 읽으면 좋은 페이지]
참고문헌
- DroneBot Workshop. (2022). LED Display with Arduino - 7-Segment & Dot-Matrix. YouTube. https://www.youtube.com/watch?v=6XY9PooMrms. 2023.11.07.
반응형'Technology > Arduino' 카테고리의 다른 글
아두이노 프로젝트 | 디지털 타이머 (0) 2024.04.05 아두이노 프로젝트 | 디지털 카운터 (0) 2024.03.29 아두이노 | 네 자리 7-세그먼트 디스플레이 (0) 2024.03.22 아두이노 | PISO 시프트 레지스터 74HC165 (0) 2024.03.15 아두이노 | SIPO 시프트 레지스터 74HC595 (0) 2024.03.15