Arduino

[Arduino] 아두이노 7세그먼트 사용해서 숫자 카운트하기

Let it out 2024. 2. 2. 17:01

7세그먼트

7세그먼트로 숫자나 문자를 나타낼 수 있다.

하지만 대부분 간단한 숫자를 나타내는데 사용한다.

 
 

회로도

복잡하지만 최대한 보기 쉽게 그려놨다.

 

 
 

세그먼트 on, off하기

1초마다 세그먼트의 전부가 on, off 하는 코드다.
on을 하면 세그먼트에 8이 나올 것이며 off를 하면 아무것도 나오지 않는다.
#define A_PIN 2
#define DP_PIN 9

void setup()
{
  for(int i = A_PIN; i <= DP_PIN; i++) //세그먼트 셋업
    pinMode(i, OUTPUT);
}

void loop()
{
  OnOff(1);
  delay(1000);

  OnOff(0);
  delay(1000);
}
void OnOff(bool bOn)
{
  for(int i=A_PIN; i<=DP_PIN; i++) //전부 끄기 or 켜기
    digitalWrite(i, bOn);
}

 

 

세그먼트 0 ~ 9 까지 출력하기

1초 간격으로 세그먼트 0 ~ 9 까지 출력
#define A_PIN 2
#define DP_PIN 9

//LED 숫자
#define NUM_0 1,1,1,1,1,1,0
#define NUM_1 0,1,1,0,0,0,0
#define NUM_2 1,1,0,1,1,0,1
#define NUM_3 1,1,1,1,0,0,1
#define NUM_4 0,1,1,0,0,1,1
#define NUM_5 1,0,1,1,0,1,1
#define NUM_6 0,0,1,1,1,1,1
#define NUM_7 1,1,1,0,0,0,0
#define NUM_8 1,1,1,1,1,1,1
#define NUM_9 1,1,1,0,0,1,1

void setup()
{
  for(int i=A_PIN; i<=DP_PIN; i++)
  pinMode(i, OUTPUT);
}

void loop()
{
  DisplayNum(NUM_0);
  delay(1000);
  DisplayNum(NUM_1);
  delay(1000);
  DisplayNum(NUM_2);
  delay(1000);
  DisplayNum(NUM_3);
  delay(1000);
  DisplayNum(NUM_4);
  delay(1000);
  DisplayNum(NUM_5);
  delay(1000);
  DisplayNum(NUM_6);
  delay(1000);
  DisplayNum(NUM_7);
  delay(1000);
  DisplayNum(NUM_8);
  delay(1000);
  DisplayNum(NUM_9);
  delay(1000);
}

//LED 0 ~ 9 까지 출력
void DisplayNum(byte a, byte b, byte c, byte d, byte e, byte f, byte g)
{
  digitalWrite(A_PIN, a);
  digitalWrite(A_PIN+1, b);
  digitalWrite(A_PIN+2, c);
  digitalWrite(A_PIN+3, d);
  digitalWrite(A_PIN+4, e);
  digitalWrite(A_PIN+5, f);
  digitalWrite(A_PIN+6, g);
}

 

반응형