
세븐 세그먼트는 위 이미지와 같이 A부터 G까지 7개의 LED 파트를 가진 부품이다.
10개의 핀이 있고, 제품에 따라 연결 위치가 조금씩 다른데, 5011AS 제품은 아래와 같이 위아래에 핀이 있다.

A부터 G까지의 핀을 꽂고, 가운데의 그라운드(GND, com, - 등으로 표기 방법은 사이트마다 다를 수 있다) 핀은 둘 중 하나만 아두이노의 그라운드와 연결하면 된다.

3611AS 제품은 양옆에 핀이 있는데, 우측과 좌측에 하나씩 있는 그라운드 중 하나만 아두이노의 그라운드와 연결한다.
과전류를 방지하기 위해 220v 저항을 그라운드 핀과 연결 선 사이에 꽂아주자.
const int BUTTON = 13; // click을 전달할 스위치 버튼
const int segmentPin[] = {2, 3, 4, 5, 6, 7, 8}; // 세그먼트와 연결한 digital IO의 핀 번호
const int digits[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, 0, 0, 1, 1}
}; // 0부터 9일 때 어느 불을 밝힐지 선언한 2차원 배열
int clicks = 0; // 숫자 0~9를 나타낼 클릭
int buttonState = 0; // 버튼 토글 구현
void setup() {
pinMode(BUTTON, INPUT);
int segmentCount = sizeof(segmentPin);
for (int i=0; i < segmentCount; i++) {
pinMode(segmentPin[i], OUTPUT);
}
Serial.begin(9600);
}
13번 핀으로 입력을 받고,
2번부터 8번 핀으로 출력을 보내도록 설정
void buttonPress() {
buttonState = !buttonState;
if (clicks == 9) {
clicks = 0;
}
else {
clicks++;
}
delay(200);
}
void showDigit(int clicks) {
for (int i=0; i < 7; i++) {
if (digits[clicks][i] == 1) {
digitalWrite(segmentPin[i], HIGH);
}
else {
digitalWrite(segmentPin[i], LOW);
}
}
}
void loop() {
if(digitalRead(13) == 1) {
buttonPress();
Serial.println(clicks);
showDigit(clicks);
}
}