본문 바로가기

[아두이노] FND (7 segment) 테스트

by rudals.kim 2021. 1. 3. 댓글 개
반응형

FND(Flexible Numeric Display)는 숫자를 표시하기위해 8개의 LED를 각 핀에 연결하여 디스플레이하는 디바이스입니다.

아래 그림과 같이 내부적으로 8개의 LED가 각 핀에 연결된 구조를 가지고 있으며 각 LED 핀은 시계방향으로 a/b/c/d/e/f/g/dp순으로 연결되어 있습니다.

 

LED를 켜기 위해서는 +/-를 연결해 줘야하는데 +극을 공통으로 사용하는 common-anode타입(아랫그림 왼쪽)과 -극을 공통으로 사용하는 common-cathode타입(아랫그림 오른쪽) 2가지 종류가 있습니다.

 

제가 가지고 있는 common-cathode으로 테스트를 해 보았습니다. 아두이노와 아래와 같이 연결합니다.

 

아래는 위 회로대로 실제 연결한 사진입니다

아래 코드를 사용하여 테스트를 하였습니다

byte fnd_digits[17][8] = {
// g, f, e, d, dp, c, b, a
  {0, 1, 1, 1, 0, 1, 1, 1},  // 0
  {0, 0, 0, 0, 0, 1, 1, 0},  // 1
  {1, 0, 1, 1, 0, 0, 1, 1},  // 2
  {1, 0, 0, 1, 0, 1, 1, 1},  // 3
  {1, 1, 0, 0, 0, 1, 1, 0},  // 4
  {1, 1, 0, 1, 0, 1, 0, 1},  // 5
  {1, 1, 1, 1, 0, 1, 0, 1},  // 6
  {0, 1, 0, 0, 0, 1, 1, 1},  // 7
  {1, 1, 1, 1, 0, 1, 1, 1},  // 8
  {1, 1, 0, 1, 0, 1, 1, 1},  // 9  
  {1, 1, 1, 0, 0, 1, 1, 1},  // A
  {1, 1, 1, 1, 0, 1, 0, 0},  // B
  {0, 1, 1, 1, 0, 0, 0, 1},  // C
  {1, 0, 1, 1, 0, 1, 1, 0},  // D
  {1, 1, 1, 1, 0, 0, 0, 1},  // E
  {1, 1, 1, 0, 0, 0, 0, 1},  // F  
  {1, 1, 1, 1, 1, 1, 1, 1}   // ALL
};

int count = 0;

int fnd_0 = 6, fnd_1 = 7, fnd_2 = 8, fnd_3 = 9;
int fnd_4 = 10, fnd_5 = 11, fnd_6 = 12, fnd_7 = 13;

int fnd_grp[8] = {fnd_0, fnd_1, fnd_2, fnd_3, 
                  fnd_4, fnd_5, fnd_6, fnd_7};

void setup()
{
  for (int i = 0 ; i < 8 ; i++) {
    pinMode(fnd_grp[i], OUTPUT);
    digitalWrite(fnd_grp[i], LOW);
  }
}

void NumberDisplay(int num)
{
  for (int j = 7; j >= 0; j--)
    digitalWrite(fnd_grp[7-j], fnd_digits[num][j]);
}

void loop()
{
  NumberDisplay(count++);
  count %= 17;
  delay(600);
}

아래는 간단히 테스트 해 본 영상입니다.

 

반응형

댓글