본문 바로가기
Arduino(아두이노) 키트 강좌

Step.5-Arduino Uno 로 7세그먼트 출력하기

by 오마이엔지니어 2015. 5. 22.
반응형

Arduino Uno 로 7세그먼트(아노드&캐소드)를 출력하는 프로젝트 입니다
7세그먼트(7Segment)는 7개의 획으로 숫자나 문자를 나타내는 표시장치로 FND (Flexible Numeric Display)라고 불립니다

(+)V 신호로 동작하는 아노드 anode 타입과 (-)V 신호로 동작하는 캐소드 cathode 타입이 있습니다



7-segment란 7세그먼트, FND 라고도 하며 8개의 발광다이오드(LED)로 이루어져 있습니다
입력받은 신호값에 따라 각각의 LED가 켜지거나 꺼짐으로써 전체적인 숫자를 표현할 수 있습니다
오른쪽 밑의 점은 숫자를 표현하지 않으며 여러개의 7-segment가 붙어있을때의 소숫점 표현을 위한 용도입니다

사용된 부품

Arduino Uno R3 (Italy)

브래드 보드

7Segment ('Arduino Starter Kit' 에는 캐소드 타입이, '지니어스 키트 Starter Pack'에는 아노드 타입이 포함 되어 있습니다)

470 (Ohm) 저항 8개

점퍼케이블

 

사용된 키트

Arduino Starter kit (클릭)
지니어스 키트 Starter Pack (클릭)



구성 배선도 (아노드 타입 Anode Type)



구성 배선도 (캐소드 타입 Cathode Type)
 

 

사용된 예제소스 

7seg(Common Anode).txt

7seg(Common Cathode).txt


/*
 제목  : 7세그먼트로 숫자 표시하기
 내용  : 7세그먼트를 사용하여 0부터 9까지 숫자를 표시해 봅시다.
 */

// 7세그먼트는 총 8개의 LED로 구성이 되어 있습니다.
// 본 예제에서는 공통 애노드(Common Anode) 타입의 7세그먼트를 사용함으로,
// 켜고자 하는 LED의 핀에 LOW(0) 값을 보내도록 설정합니다.
// 반대로, 공통 캐소드(Common Cathode) 타입을 사용할 경우, HIGH(1) 값으로 설정합니다.
// 7세그먼트 각각 LED에 핀을 할당합니다. {A, B, C, D, E, F, G, H}
int segmentLEDs[] = {2, 3, 4, 5, 6, 7, 8, 9};
// 지정된 LED 개수
int segmentLEDsNum = 8;

// 각 숫자에 대한 LED 설정 값을 정의합니다.
// 숫자에 매칭되는 LED의 로직레벨을 LOW(0) 상태로 설정합니다.
int digitForNum[10][8] = {
  {0, 0, 0, 0, 0, 0, 1, 1}, //0
  {1, 0, 0, 1, 1, 1, 1, 1}, //1
  {0, 0, 1, 0, 0, 1, 0, 1}, //2
  {0, 0, 0, 0, 1, 1, 0, 1}, //3
  {1, 0, 0, 1, 1, 0, 0, 1}, //4
  {0, 1, 0, 0, 1, 0, 0, 1}, //5
  {0, 1, 0, 0, 0, 0, 0, 1}, //6
  {0, 0, 0, 1, 1, 1, 1, 1}, //7
  {0, 0, 0, 0, 0, 0, 0, 1}, //8
  {0, 0, 0, 0, 1, 0, 0, 1}  //9
};

// 실행시 가장 먼저 호출되는 함수이며, 최초 1회만 실행됩니다.
// 변수를 선언하거나 초기화를 위한 코드를 포함합니다.
void setup() {
  // 7세그먼트 각각 LED에 연결된 핀을 OUTPUT으로 설정합니다.
  for (int i = 0 ; i < segmentLEDsNum ; i++) {
    pinMode(segmentLEDs[i], OUTPUT);
  }
}

// setup() 함수가 호출된 이후, loop() 함수가 호출되며,
// 블록 안의 코드를 무한히 반복 실행됩니다.
void loop() {
  // 0부터 9까지 숫자를 순서대로 표시합니다.
  for (int i = 0 ; i < 10 ; i++) {
    // 각 숫자에 대한 각각 LED의 로직레벨을 설정합니다.
    for (int j = 0 ; j < segmentLEDsNum ; j++) {
      digitalWrite(segmentLEDs[j], digitForNum[i][j]);
    }
    // 1초 동안 대기합니다.
    delay(1000);
  }
}

주의사항
배선시 아노드 타입은 7세그먼트의 가운데 핀에 +VCC 전원이 인가하며

캐소드 타입은 7세그먼트의 가운데 핀에 (-)GND 전원이 인가 합니다

나머지 핀은 아두이노의 디지털 핀에 연결 합니다

 

프로젝트 동영상




7seg(Common Anode).txt
0.0MB
7seg(Common Cathode).txt
0.0MB
반응형

댓글