[Arduino] 10.7-Segment
in Arduino
7-Segment
7 세그먼트 표시 장치는 8개의 발광 다이오드를 이용하여 숫자나 간단한 문자를 표시하기 위해 만들어진 출력 장치의 일종으로 숫자 출력을 위해 주로 사용됩니다! 7 세그먼트 표시장치는 8개의 요소들을 개별적으로 제어해야 하므로 8개의 입출력 핀이 필요합니다~!
제가 가지고 있는 7 세그먼트는 공통음극 방식이기에 저항을 (-)에 연결하고, GND에 연결했습니다!
0부터 9까지 출력을 해보겠습니다!
int pins[8] = {2, 3, 4, 5, 6, 7, 8, 9};
int digits[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
};
void setup(){
for(int i = 0; i < 8; i++){
pinMode(pins[i], OUTPUT);
}
}
void loop(){
for(int num = 0; num <= 9; num++){
segment(num);
delay(1000);
}
}
void segment(int num){
for(int i = 0; i < 7; i++){
digitalWrite(pins[i], digits[num][i]);
}
}
이번엔 버튼을 사용해서 수를 증가시키고 감소시키고 해보겠습니다!
int pins[8] = {2, 3, 4, 5, 6, 7, 8, 9};
int btn1 = 10;
int btn2 = 11;
int segNum = 0;
int digits[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
};
void setup(){
for(int i = 0; i < 8; i++){
pinMode(pins[i], OUTPUT);
}
pinMode(btn1, INPUT);
pinMode(btn2, INPUT);
}
void loop(){
int value1 = digitalRead(btn1);
int value2 = digitalRead(btn2);
segment(segNum);
if(value1 == 1){
segNum--;
if(segNum < 0){
segNum = 9;
}
}
if(value2 == 1){
segNum++;
if(segNum > 9){
segNum = 0;
}
}
delay(200);
}
void segment(int num){
for(int i = 0; i < 7; i++){
digitalWrite(pins[i], digits[num][i]);
}
}