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 |