FND(Flexible Numeric Display) : LED의 조합으로 숫자 표시를 위하여 사용되는 디스플레이 모듈

 

7개의 LED를 사용하기 때문에 7-segment라고도 한다. 또한 간단한 기호나 16진수까지 표현 가능하다.

 

FND를 이용해서 0~9의 숫자를 표시해본다.

 

※ 명령어

  • pinMode(핀번호, 설정) : 핀의 입출력 모드를 설정한다. '핀번호'에는 설정하고자 하는 핀의 번호, '설정'에는 입력으로 사용하기 위해서는 'INPUT', 출력으로 사용하기 위해서는 'OUTPUT', 입력이며 풀업 사용시 'INPUT_PULLUP'을 기술한다.
  • digitalWrite(핀번호, 값) : 핀에 디지털 출력(High or Low)을 한다. '핀번호'에는 출력하고자 하는 핀의 번호를, '값'에는 'HIGH' 혹은 'LOW'를 설정하여 High 혹은 Low 출력을 한다.
/*
 * 예제
 * FND 제어 0~9까지 1초단위로 표시하기
 */

 // 0~9까지 LED표시를 위한 상수 설정
 const byte number[10]={
  0x3f, //B0011 1111,  0
  0x06, //B0000 0110,  1
  0x5b, //B0101 1011,  2
  0x4f, //B0100 1111,  3
  0x66, //B0110 0110,  4
  0x6d, //B0110 1101,  5
  0x7d, //B0111 1101,  6
  0x27, //B0000 0111,  7
  0x7f, //B0111 1111,  8
  0x6f  //B0110 1111,  9
 };
 
 void setup() {
  // 2~9번 핀을 a b c d e f g dot의 순으로 사용한다.
  // 2~9번 핀을 출력으로 초기화 시킨다.
  for(int i=2;i<=9;i++){
    pinMode(i,OUTPUT);
  };
  digitalWrite(9,LOW);  // 점은 표시하지 않는다.
}

void loop() {
  // LED의 숫자를 0~9로 변화시킨다.
  for(int k=0;k<=9;k++){
    fndDisplay(k);  // k값을 출력한다.
    delay(1000);
  }
}

// LED 점등
void fndDisplay(int displayValue){
  boolean bitValue;

  for(int i=2;i<=9;i++)
  {
    // 아두이노의 2~9번 핀에 모두 LOW 신호를 줘서 소등시킨다.
    digitalWrite(i,LOW);
  }

  for(int i=0;i<=7;i++){
    bitValue=bitRead(number[displayValue],i); // bitRead(x,n) x는 값, n은 비트 위치
    digitalWrite(i+2,bitValue);
  }
}

 

 

+ Recent posts