본문 바로가기
  • 경제적 자유를 얻는 그날까지
엔지니어링/임베디드

[아두이노 기초교육] 7-세그먼트 제어

by 베니스상인 2020. 2. 1.

7-세그먼트에 대한 기초 전자회로에 대해 알아보고 제어해본다.

 

 

1. 회로도 구성

 

- 7세그먼트는 8개의 LED를 연결하는 것과 동일함

- 저항이 내장되어 있지 않으므로 디지털 출력 2~9번 포트를 각각의 저항(330ohm)을 통하여 7 세그먼트 핀으로 연결됨 

 

fritzing으로 작성한 브레드보드 구성

 

 

핀 연결 방법은 아래와 같다.

- a: 2번 핀(디지털 출력)

- b: 3번 핀(디지털 출력)

- c: 4번 핀(디지털 출력)

- d: 5번 핀(디지털 출력)

- e: 6번 핀(디지털 출력)

- f: 7번 핀(디지털 출력)

- g: 8번 핀(디지털 출력)

- dp: 9번 핀(디지털 출력)

 

 

fritzing으로 작성한 Schematic

 

 

 

 

2. 회로설명

 

1) 7-세그먼트

- 7개의 획(dp 불포함시)으로 숫자나 문자를 나타낼 수 있는 표시장치

- 다수의 LED로 구성되어 있음

- 공통 anode 방식과 공통 cathode 방식이 있음(5611BS는 공통 anode 방식)

 

 

- 7세그먼트에 숫자를 표시할 때 각 핀의 출력상태는 아래와 같다. 공통 anode 타입은 Active Low이므로 0 일 때 해당 세그먼트의 불이 들어온다.

 

* Active Low란 로직 상태가 Low일 때 활성화되는 회로를 말함 

 

 

 

 

3. 소스코드

 

AUNO_Basic_04_7S_Segment.ino
0.00MB

 

 

/*****************************************************/
/*  Project   : Arduino Basic Training Course
/*  Title     : 04_7S_Segment
/*  Descript  :  Single 7-Segment control example
/*  Platform  : Arduion UNO
/*  IDE: Arduino Sketch 1.6/1.8 or vMicro
/*  Author    : shlee853
/*  History   : Rev 1.0  2020.01.31  - Initial release 
/*
/*****************************************************/

int segmentLEDs[] = {2, 3, 4, 5, 6, 7, 8, 9};
int segmentLEDsNum = 8;


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
};
 
void setup() {
  for (int i = 0 ; i < segmentLEDsNum ; i++) {
    pinMode(segmentLEDs[i], OUTPUT);
  }
}

void loop() {

  for (int i = 0 ; i < 10 ; i++) {
    for (int j = 0 ; j < segmentLEDsNum ; j++) {
      digitalWrite(segmentLEDs[j], digitForNum[i][j]);
    }
    delay(1000);
  }
}
728x90

댓글