7-세그먼트는 FND(Flexible Numeric Display)라고도 부르는 제품으로
주로 숫자를 표현하는데 사용되는 제품입니다.
내부에 led가 8개가 들어가있고, 공통단자가 2개 있어서,
9개의 핀으로 0부터 9까지 그리고 소수점까지 표현할 수 있습니다.
FND는 공통(Common) 애노드(Anode) 타입,
공통 캐소드(Cathode) 타입으로 종류가 나뉘어집니다.
공통 애노드(+) 타입입니다. 공통단자(Common)에 전원 5V를 입력하고,
원하는 단자에 LOW(0V)신호를 주어서 LED를 On 시킬수 있습니다.
공통 캐소드(-) 타입입니다. 공통단자(Common)에 전원 GND를 입력하고,
원하는 단자에 HIGH(5V)신호를 주어서 LED를 On 시킬수 있습니다.
공통 애노드(Anode)
| |||||||||
숫자
|
dp
|
g
|
f
|
e
|
d
|
c
|
b
|
a
|
16진수
|
0
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0xC0
|
1
|
1
|
1
|
1
|
1
|
1
|
0
|
0
|
1
|
0xF9
|
2
|
1
|
0
|
1
|
0
|
0
|
1
|
0
|
0
|
0xA4
|
3
|
1
|
0
|
1
|
1
|
0
|
0
|
0
|
0
|
0xB0
|
4
|
1
|
0
|
0
|
1
|
1
|
0
|
0
|
1
|
0x99
|
5
|
1
|
0
|
0
|
1
|
0
|
0
|
1
|
0
|
0x92
|
6
|
1
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0x82
|
7
|
1
|
1
|
1
|
1
|
1
|
0
|
0
|
0
|
0xF8
|
8
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0x80
|
9
|
1
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
0x90
|
공통 애노드에서 숫자0은 dp를시작으로 했을때, 2진수로는 1100 0000이고
이 숫자를 16진수로 변환하면 0xC0입니다.
공통 캐소드(Cathode)
| |||||||||
숫자
|
dp
|
g
|
f
|
e
|
d
|
c
|
b
|
a
|
16진수
|
0
|
0
|
0
|
1
|
1
|
1
|
1
|
1
|
1
|
0x3F
|
1
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
0
|
0x06
|
2
|
0
|
1
|
0
|
1
|
1
|
0
|
1
|
1
|
0x5B
|
3
|
0
|
1
|
0
|
0
|
1
|
1
|
1
|
1
|
0x4F
|
4
|
0
|
1
|
1
|
0
|
0
|
1
|
1
|
0
|
0x66
|
5
|
0
|
1
|
1
|
0
|
1
|
1
|
0
|
1
|
0x6D
|
6
|
0
|
1
|
1
|
1
|
1
|
1
|
0
|
1
|
0x7D
|
7
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
1
|
0x07
|
8
|
0
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
0x7F
|
9
|
0
|
1
|
1
|
0
|
1
|
1
|
1
|
1
|
0x6F
|
공통 캐소드에서 숫자0은 dp를시작으로 했을때, 2진수로는 0111 1111이고
이 숫자를 16진수로 변환하면 0x3F입니다.
아래 예제는 예제에 사용하는 제품은 공통 애노드(+) 타입 FND로
숫자 0~9까지 나타내는 예제입니다.
준비물: 아두이노 우노, 220Ω x 8EA, 점퍼선, 브레드보드, FND(anode타입)
아두이노
|
FND
|
5V
|
V+
|
D2
|
dp
|
D3
|
g
|
D4
|
f
|
D5
|
e
|
D6
|
d
|
D7
|
c
|
D8
|
b
|
D9
|
a
|
/*
7-segment (FND) 공통 애노드 타입
http://www.devicemart.co.kr/
*/
int seg[]={2,3,4,5,6,7,8,9}; // 배열로 D2~D9까지 세그먼트 연결
byte digits[10][8]={ // 0~9까지 숫자에 대한 LED 값
{ 1,1,0,0,0,0,0,0 }, // 0
{ 1,1,1,1,1,0,0,1 }, // 1
{ 1,0,1,0,0,1,0,0 }, // 2
{ 1,0,1,1,0,0,0,0 }, // 3
{ 1,0,0,1,1,0,0,1 }, // 4
{ 1,0,0,1,0,0,1,0 }, // 5
{ 1,0,0,0,0,0,1,0 }, // 6
{ 1,1,1,1,1,0,0,0 }, // 7
{ 1,0,0,0,0,0,0,0 }, // 8
{ 1,0,0,1,0,0,0,0 } // 9
};
void setup(){
for (int i = 0; i < 8; i++){ // for 문을 사용해 핀 2~9까지 8개의 핀모드 출력으로 세팅
pinMode(seg[i], OUTPUT);
}
}
void loop(){
for (int i = 0; i < 10; i++) {//이중 for문을 이용해 led로 숫자 출력
for (int j = 0; j < 8; j++){
digitalWrite(seg[j], digits[i][j]);
}
delay(1000); // 1초간 딜레이
}
}
|
다음엔 시프트 레지스터를 사용해서 아두이노로 FND를 동작시켜보겠습니다.
0 댓글