728x90
반응형
7 세그먼트 제어
7 세그먼트에는 두 종류가 있다. 각각 공통 음극 7 세그먼트와 공통 양극 7 세그먼트라고 한다.
공통 음극 세그먼트 | 모든 LED의 음극을 GND에 연결한다. 각각의 LED는 양극을 VCC에 연결해 키거나 끈다. 일반적으로 사용하는 세그먼트이다. |
공통 양극 세그먼트 | 모든 LED의 양극을 VCC에 연결한다. 각각의 LED는 음극을 GND에 연결해 키거나 끈다. |
세그먼트 회로 구성하기
공통 음극 세그먼트, 공통 양극 세그먼트 모두 LED와 전원을 연결 시 저항을 연결하는 것을 잊지말자!
7 세그먼트 제어 회로도
- 7 세그먼트가 켜지는 순서는 a~f로 7개의 LED를 바탕으로 0부터 9를 표현할 수 있다.
const int N[10][7] = {
{1,1,1,1,1,1,0}, //0
{0,1,1,0,0,0,0}, //1
{1,1,0,1,1,0,1}, //2
{1,1,1,1,0,0,1}, //3
{0,1,1,0,0,1,1}, //4
{1,0,1,1,0,1,1}, //5
{1,0,1,1,1,1,1}, //6
{1,1,1,0,0,1,0}, //7
{1,1,1,1,1,1,1}, //8
{1,1,1,1,0,1,1} //9
};
세그먼트 제어 코드
const int seg[7] = {2,3,4,5,6,7,8};
const int N[10][7] = {
{1,1,1,1,1,1,0},
{0,1,1,0,0,0,0},
{1,1,0,1,1,0,1},
{1,1,1,1,0,0,1},
{0,1,1,0,0,1,1},
{1,0,1,1,0,1,1},
{1,0,1,1,1,1,1},
{1,1,1,0,0,1,0},
{1,1,1,1,1,1,1},
{1,1,1,1,0,1,1}
};
void setup() {
// put your setup code here, to run once:
for(int i=0;i<7;i++){
pinMode(seg[i],OUTPUT);
}
}
void loop() {
// put your main code here, to run repeatedly:
for(int j=0;j<10;j++){
for(int i=0;i<7;i++){
digitalWrite(seg[i],N[j][i]==1?HIGH:LOW);
}
delay(1000);
for(int i=0;i<7;i++){
digitalWrite(seg[i],LOW);
}
}
}
변수 선언
const int seg[7] = {2,3,4,5,6,7,8};
const int N[10][7] = {
{1,1,1,1,1,1,0},
{0,1,1,0,0,0,0},
{1,1,0,1,1,0,1},
{1,1,1,1,0,0,1},
{0,1,1,0,0,1,1},
{1,0,1,1,0,1,1},
{1,0,1,1,1,1,1},
{1,1,1,0,0,1,0},
{1,1,1,1,1,1,1},
{1,1,1,1,0,1,1}
};
- 세그먼트를 선언하기 위한 배열을 선언한다. 각각의 LED를 2부터 8까지 핀을 할당한다.
- 세그먼트의 값을 표시하기 위한 이중 배열을 선언한다. 숫자의 인덱스를 활용한다.
setup()
void setup() {
// put your setup code here, to run once:
for(int i=0;i<7;i++){
pinMode(seg[i],OUTPUT);
}
}
반복문을 이용하여 seg [7] 배열을 입출력 초기화한다. (LED이므로 OUTPUT으로 설정한다.)
loop()
void loop() {
// put your main code here, to run repeatedly:
for(int j=0;j<10;j++){
for(int i=0;i<7;i++){
digitalWrite(seg[i],N[j][i]==1?HIGH:LOW);
}
delay(1000);
for(int i=0;i<7;i++){
digitalWrite(seg[i],LOW);
}
}
}
- 이중 반복문을 사용한다. 10번 반복하여 세그먼트 LED를 출력한다. 이때 N배열의 값에 저장된 값에 따른 LED를 출력을 하게 된다.
- 배열 N에 저장된 배열은 각각 0~9를 표현하기 위한 이진 표현으로 0이면 불을 켜지 않고 1이면 키며, 이를 순간적으로 세그먼트의 순서에 따라 digitalWrite 하게 되면 우리 눈에는 해당 숫자가 표시된 것처럼 보인다.
- 1초 동안 기다리며 이후 7개의 LED을 모두 LOW상태로 만든다.
728x90
반응형
'Arduino > [2] Arduino Module' 카테고리의 다른 글
[Arduino Module] #7. 블루투스 (0) | 2022.03.09 |
---|---|
[Arduino Module] #6. 도트 매트릭스 (0) | 2022.03.05 |
[Arduino Module] #4. 서보 모터 제어하기 (0) | 2022.03.04 |
[Arduino Module] #3. 아두이노 부저 (0) | 2022.03.04 |
[Arduino Module] #2. LED구성과 저항 (0) | 2022.03.04 |