안녕하세요 고군입니다.
이번시간에는 아두이노 우노를 사용하여 1자리 FND 7세그먼트를 제어해 보겠습니다.
7세그먼트(7-Segment)는 7개의 선분으로 숫자나 글자를 표시하기 위해 발광 다이오드(LED)를 사용항여 만든 출려 장치의 일종이다. 일반적으로 7세그먼트에는 7개의 선분에 소수점(decimal point)이 추가되어 총 8개의 요소를 1바이트의 데이터로 제어할 수 있다.
7세그먼트의 10개 핀은 두 개의 공통 핀과 8개의 세그먼트 제어 핀으로 구성된다. 공통 핀은 공통 양극의 경우 Vcc에, 공통 음극의 경우 GND에 연결한다. 나머지 8핀은 각 세그먼트를 제어하는 핀으로 공통 양극의 경우 GND 입력이 가해질 때(출력 LOW)불이 켜지는 반면, 공통 음그의 경우 Vcc입력이 가해질 때(출력 HIGH) 불이 켜진다.
▶ FND 1Digit 7세그먼트 특성 및 전자 회로
7세그먼트 표시 장치에는 공통 양극(common anode)방식과 공통 음극(common cathode) 방식이 있습니다. 공통 핀에 +5V를 연결하고 각 제어 핀을 GND에 연결하면 불이 들어오는 방식이 공통 양극 방식이며, 공통 핀을 GND에 연결하고 각 제어 핀을 +5V에 연결하면 불이 들어오는 방식이 공통 음극 방식이다. 따라서 7세그먼트 표시 장치를 테스트하기 전에 공통 양극 방식인지 고통 음극 방식인지 먼저 확인해야 한다. 7세그먼트 표시 장치는 10개의 핀을 가지며 핀 배열은 아래그림과 같다.
1Digit 7세그먼트 핀 배열
7세그먼트 표시 장치를 사용해 숫자 및 영문을 표시하는 예는 아래 그림과 같습니다.
위 표는 주로 사용되는 FND 7세그먼트의 디스플레이 폰트를 나타내고 있다. FND 7세그먼트의 핀 이름이 알파벳에 연속된 조건에서 a핀을 MSB(최상의 비트)로 하고, dp 핀을 LSB(최하위 비트)로 설정하여 폰트를 2진수로 나타내면 0=0B11111100, 1=0B01100000, ....이 된다.
▶ 아두이노
[전자부품목록]
▶ 아두이노 보드: 1개
▶ 브레드보드: 1개
▶ 점프선 : 다량
▶ 저항 220옴: 8개
▶ FND 7세그먼트: 1개
1Digit FND 7세그먼트 아두이노 연결도
위에 사용된 7세그먼트는 공통 양극 방식으로 3번, 8번 핀에는 +5V를 연결합니다. 각각의 제어핀에는 220옴 저항을 연결하여 LED를 보호합니다.
1Digit FND 7세그먼트 아두이노 연결 회로도
1Digit FND 7세그먼트 제어를 위한 핀 연결
▶ 아두이노 소스 예제
※ 7세그먼트 장치에 0 ~9 까지 1초 간격으로 숫자를 반복으로 보여주는 예제입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | //common anode 방식이므로 LOW를 출력할 때 LED가 켜짐 int ON = LOW; int OFF = HIGH; //0~9까지 숫자 표시를 위한 세그먼트의 점멸 패턴 int digits[10][8] = { {ON, ON, ON, ON, ON, ON, OFF, OFF}, {OFF, ON, ON, OFF, OFF, OFF, OFF, OFF}, {ON, ON, OFF, ON, ON, OFF, ON, OFF}, {ON, ON, ON, ON, OFF, OFF, ON, OFF}, {OFF, ON, ON, OFF, OFF, ON, ON, OFF}, {ON, OFF, ON, ON, OFF, ON, ON, OFF}, {ON, OFF, ON, ON, ON, ON, ON, OFF}, {ON, ON, ON, OFF, OFF, ON, OFF, OFF}, {ON, ON, ON, ON, ON, ON, ON, OFF}, {ON, ON, ON, OFF, OFF, ON, ON, OFF}}; // 아두이노 연결 핀 선언 int pins[ ] = {2, 3, 4, 5, 6, 7, 8, 9}; void setup( ) { for(int i = 0; i < 8; i++) { //연결 핀을 출력으로 설정 pinMode(pins[i], OUTPUT); } } void loop( ) { //10번 반복을 진행 for(int i = 0; i <= 9; i++) { //8개 세그먼트를 점멸 for(int j = 0; j < 8; j++) { digitalWrite(pins[j], digits[i][j]); } // 1초간 지연 delay(1000); } } | cs |
'아두이노로 장난하기' 카테고리의 다른 글
아두이노로 텍스트 LCD 표시하기 (0) | 2018.03.12 |
---|---|
아두이노로 FND 4Digit 7세그먼트 표시하기 (0) | 2018.03.07 |
아두이노로 LED 매트릭스 표시하기 (0) | 2018.03.06 |
아두이노 기초지식_아날로그 입력/출력 (0) | 2018.03.05 |
아두이노 기초지식_디지털 입력 (0) | 2018.03.05 |