본문 바로가기

Embedded System/Arduino Board

[Arduino] 아두이노 4Digit 7Segment(4자리 FND)제어하기 (6)

반응형

 


 

안녕하세요.

이번 포스팅에서는 4자리 7 Segment(FND)를 다루는 방법에 대해 알아보겠습니다. 


아두이노(Arduino)와 4자리 FND(Four-Digit Seven-Segment Display)를 함께 사용하면 숫자나 문자를 표시할 수 있는 간단한 디지털 디스플레이를 만들 수 있습니다. 4자리 FND는 보통 7개의 세그먼트와 1개의 소수점(Dot)으로 구성된 4개의 디지털 디스플레이가 하나로 결합된 형태입니다. 이를 통해 최대 4자리 숫자를 표시할 수 있습니다. 이제 4자리 FND의 작동 원리와 아두이노와의 연결 방법을 설명해드리겠습니다.

※1.  4Digit 7 Segment 구조

4자리 FND의 구조

  1. 세그먼트: 각 자리에는 7개의 LED 세그먼트(A, B, C, D, E, F, G)와 소수점이 있습니다. 각 세그먼트는 특정 숫자를 표시하기 위해 켜지거나 꺼질 수 있습니다.
  2. 공통 핀: 4자리 FND에는 공통 애노드(Common Anode) 또는 공통 캐소드(Common Cathode)로 연결된 핀이 있습니다. 공통 애노드 방식에서는 공통 핀이 양극이고, 공통 캐소드 방식에서는 공통 핀이 음극입니다.
  3. 자리 선택: 4자리 FND는 각 자리마다 하나의 공통 핀이 있습니다. 이를 통해 특정 자리만 활성화하여 원하는 숫자를 표시할 수 있습니다.

(D1:천의 자릿수 FND 핀 / D2:백의 자릿수 FND 핀 / D3:십의 자릿수 FND 핀 / D1:일의 자릿수 FND 핀)

아래는 공통 핀을 Anode(+)로 가지는 Common Anode Type의 4Digit 7 Segment입니다.

Common Anode Type 4Digit 7-Segment

아래는 공통 핀을 Cathode(-)로 가지는 Common Anode Type의 4Digit 7 Segment입니다.

Common Cathode 4Digit 7-Segment

 

아래 테스트에서는 Common Cathode Type을 사용합니다.!!

 

 

※2. Wiring (배선 연결)

실제 와이어링 방법:

  1. 세그먼트 핀 연결:
    • 7-Segment 디스플레이의 A 핀을 브레드보드에 연결하고, 브레드보드에서 330 Ω (100~1000Ω) 저항을 통해 아두이노 디지털 핀 2에 연결합니다.
    • 같은 방식으로 B, C, D, E, F, G, DP 핀을 각각 디지털 핀 3, 4, 5, 6, 7, 8, 9에 연결합니다.
  2. 디지트 핀 연결:
    • 첫 번째 디지트의 공통 음극(Cathode) 핀을 아두이노 디지털 핀 10에 직접 연결합니다.
    • 같은 방식으로 두 번째, 세 번째, 네 번째 디지트의 공통 음극 핀을 각각 디지털 핀 11, 12, 13에 연결합니다.

 

 

 

※3. 소스코드 및 동작

1234를 각 자리에 출력하는 코드를 실행해 보겠습니다.

1. 소스코드

1234를 출력 하는 코드를 실행해 보겠습니다. (소스코드는 첨부파일 제공해 드리겠습니다.)

6_4Digit7Segment_Common_Cathode.ino
0.00MB

const int segmentPins[7] = {2, 3, 4, 5, 6, 7, 8}; // A, B, C, D, E, F, G 핀
const int digitPins[4] = {13, 12, 11, 10}; // 4자리의 공통 음극 핀

const byte numbers[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, 0, 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 < 7; i++) {
    pinMode(segmentPins[i], OUTPUT);
  }
  for (int i = 0; i < 4; i++) {
    pinMode(digitPins[i], OUTPUT);
  }
}

void loop() {
  int number = 1234; // 표시할 숫자
  for (int i = 0; i < 4; i++) {
    digitalWrite(digitPins[i], LOW); // 공통 음극 활성화
    displayDigit(number % 10); // 해당 자리의 숫자 표시
    number /= 10;
    delay(5);
    digitalWrite(digitPins[i], HIGH); // 공통 음극 비활성화
  }
}

void displayDigit(int num) {
  for (int i = 0; i < 7; i++) {
    digitalWrite(segmentPins[i], numbers[num][i]);
  }
}

 

 

2. 하드웨어 연결 및 동작 확인

1234가 각 자리에 정확하게 출력됨을 확인할 수 있습니다.

 

 

이때 영상상에서 깜빡거림(Fliker- Free; 플리커) 현상은 실제 FND 4개가 눈이 인지하지 못할 속도로 깜빡거리는 동작을 하는데 카메라의 속도를 따라갈 수 있어 녹화에도 깜빡거립니다. 하지만 우리의 눈의 경우 카메라 보다 감지하는 속도가 훨씬 느려 실제로는 깜빡거림을 느끼지 못합니다.  자세한 내용은 아래 플리커 현상 링크를 참조해보세요.

https://semicircuit.tistory.com/78

 

Flicker-Free (플리커 현상) 이란?

안녕하세요. 플리커 현상(Flicker Effect)은 빛의 밝기가 주기적으로 빠르게 변동하여 깜빡이는 것처럼 보이는 현상을 말합니다. 이 현상은 다양한 조명 시스템(특히 LED 조명)에서 발생할 수 있으며,

semicircuit.tistory.com

 

 

 

 

 

이상으로 아두이노에서 4자리 FND를 다루는 방법에 대한 설명을 마치겠습니다.

다름 포스트에서 8X8 Matrix LED를 다루는 방법에 대해 다루겠습니다.

감사합니다.

 

반응형