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

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

내용
1. 7세그먼트 ON, OFF 
2. 7세그먼트 0 ~ 9 출력하기


회로도

참 복잡하다



세그먼트 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);
}

제목 2

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);
}

댓글

이 블로그의 인기 게시물

[Python] 파이썬 if문 사용법과 예제

[네트워크] 오류 제어 방식 이란?(FEC, BEC, ARQ)

[Virtual Box] 가상머신 에러 E_FAIL (0x80004005), (VERR_SUPLIB_PATH_NOT_CLEAN) 해결 방법