Welcome to JWN's note

Hello, World!

그래, 너 하고 싶은 거 다 해... 자세히보기

STUDY/Arduino

아두이노 #2 TM1637 로 숫자 출력하기

JWN 2025. 7. 5. 21:04

TM1637은 아래와 같이 생긴 4-digit 디스플레이이다.

 

아래와 같이 아두이노에 연결한다.

(TM1637 - 아두이노)

VCC - 5V

GND - GND

DIC - 3

CLK - 2

 

코드 예제는 아래와 같다.

#include <Arduino.h>
#include <TM1637Display.h>
#define CLK 2
#define DIO 3
#define DELAY 500
TM1637Display display(CLK, DIO);

bool colonOn = false;
int hour = 12;
int minute = 34;

void setup()
{
  display.setBrightness(7);
}

void loop()
{
  colonOn = !colonOn;
  display.showNumberDecEx(hour * 100 + minute, colonOn ? 0b01000000 : 0b00000000, false);
  delay(DELAY);
}

 

showNumberDecEx 는 네 자리 숫자를 보여준다. 보여줄 숫자를 첫 번째 parameter로 넘긴다. 두 번째 parameter로 가운데 점을 컨트롤할 수 있다 (0b00000000: off, 0b01000000: on). 마지막 parameter는 bool을 입력값으로 받는데, 숫자가 네 자리보다 작아서 칸에 공백이 있을 때 0을 채울지 여부를 선택할 수 있다.

 

delay를 사용하면 loop가 멈춘다. delay를 사용하지 않고 아래와 같이 코드를 작성할 수도 있다.

#include <Arduino.h>
#include <TM1637Display.h>
#define CLK 2
#define DIO 3
TM1637Display display(CLK, DIO);

bool colonOn = false;
unsigned long prevMillis = 0;
const unsigned long interval = 500;

int hour = 12;
int minute = 34;

void setup()
{
  display.setBrightness(7);
}

void loop()
{
  unsigned long currentMillis = millis(); // 4,294,967,295ms (=약 49일) 후에 0으로 되돌아감

  if (currentMillis - prevMillis >= interval) {
    prevMillis = currentMillis;
    colonOn = !colonOn;
  }

  display.showNumberDecEx(hour * 100 + minute,
                          colonOn ? 0b01000000 : 0b00000000,
                          true);
}

millis() 는 아두이노가 켜진 후부터의 시간을 ms 단위로 반환한다.

'STUDY > Arduino' 카테고리의 다른 글

아두이노 #3 RTC(Real Time Clock) 사용해보기 (DS3231)  (0) 2025.07.05
아두이노 #1 LED 기본 실습  (0) 2025.05.16
아두이노 시작  (0) 2025.05.16