아두이노로 만드는 대형 LED 마스터 시계 (알람 기능 포함, 12m 거리에서도 식별 가능)
부품 및 소모품
| 부품 | 수량 | 비고 |
| 아두이노 우노 (Arduino UNO) | 1 | |
| 프리트로닉스 DMD 디스플레이 (Freetronics DMD Display) | 1 | |
| RTC 모듈 (Real Time Clock Module) | 1 | DS1307 등 호환 모듈 |
| 모멘터리 푸시 버튼 (Momentary Push Button) | 1 | 알람 해제용 |
| 온/오프 스위치 (On/Off Switch) | 1 | 전원 제어용 |
소프트웨어 및 온라인 서비스
프로젝트 개요
이 프로젝트는 12미터 떨어진 곳에서도 시간을 확인할 수 있는 대형 LED 시계를 만드는 방법을 설명합니다. 크기는 필요에 따라 확장 가능하며, 내장 알람 기능을 통해 정원 자동 급수 시스템이나 주간 모임 알림 등 릴레이로 제어되는 다양한 장치의 이벤트 핸들러로 활용할 수 있습니다.
필요한 부품 상세
- 프리트로닉스 DMD 디스플레이
- 아두이노용 RTC 모듈
- 부저 (선택 사항 – 아침에 잠을 깨울 만큼 큰 소리)
- 모멘터리 푸시 버튼
- 온/오프 스위치 2개 (전원용 하나는 선택 사항)
- 아두이노 우노 또는 호환 보드
- 아두이노용 프로토 실드 (선택 사항)
- 아두이노 전원 공급 장치
- 5Vdc 정전압 전원 공급 장치 (4~30A, 고휘도 모드용 선택 사항 – 일반 동작에는 불필요)
제작 과정
1단계: 전자 회로 구성
- 브레드보드에 부저, 무음 버튼, 알람 설정 스위치를 배치합니다.
- 각 스위치의 한 핀을 접지(GND)에 연결하고, 부저의 GND 핀도 아두이노 GND에 연결합니다.
- 알람 설정 스위치의 다른 핀을 D2, 무음 버튼을 D3, 부저를 D4에 연결합니다.
- RTC 모듈을 해당 타입에 맞게 아두이노에 연결합니다(제조사 데이터시트 참조).
- DMD 컨트롤러(DMDCON)를 아두이노에 연결하고 DMD 디스플레이를 꽂습니다.
- DMD 최대 밝기를 위해 5V 전원을 고휘도 단자에 연결합니다.
- 영구 설치를 원하면 프로토 실드에 모든 부품을 납땜하고 적절히 연결합니다.
2단계: 소프트웨어 설정
- DMD 라이브러리를 여기서 다운로드해 라이브러리 폴더에 설치합니다.
- 스케치 코드는 Prototyping Corner 또는 본문 하단에서 다운로드할 수 있습니다.
- RTC 시간 설정: 코드 117~124행을 현재 시간으로 수정한 뒤 124행의 주석을 해제하고 업로드합니다. 다시 124행에 주석을 달고 재업로드해야 RTC가 정상 동작합니다.
- 알람 시간 및 요일 설정: 593행(요일), 594행(시간, 24시간제)을 수정합니다. 요일 번호는 1=일요일 ~ 7=토요일입니다.
확장 아이디어
디스플레이 추가로 더 크게 만들기
DMD 디스플레이를 추가 연결하면 더 큰 시계를 만들 수 있습니다. 자세한 방법은 여기를 참조하세요.
알람 추가하기
다음 코드 템플릿을 스케치에 추가하고 메인 루프에서 호출하면 여러 알람을 구현할 수 있습니다.
void CheckAlarm_ALARM_NO_() {
AlarmSet = digitalRead(AlarmSetPin);
Snooze = digitalRead(SnoozePin);
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);
// 허용 요일 설정 (1=일 ~ 7=토)
if(dayOfWeek == 2 || dayOfWeek == 3 || dayOfWeek == 4 || dayOfWeek == 5 || dayOfWeek == 6) {
if(hour == 18 && minute == 05) { // 알람 시간 (24시간제)
if(AlarmSet == LOW) {
Snooze = digitalRead(SnoozePin);
while(Snooze == HIGH) {
Snooze = digitalRead(SnoozePin);
// 알람 동작 코드 추가
}
}
}
}
}
전체 소스 코드
마스터 시계 스케치 (C/C++)
/* Master Clock sketch. Created 26/03/14
Freetronics DMD를 출력 디스플레이로 사용하는 아두이노 프로그램.
알람 기능 포함. 요일, 날짜, 시간을 DMD에 표시.
알람 버튼: 핀 2(알람 설정), 3(스누즈), 4(알람 출력).
알람 시간/요일은 551, 552행에서 설정. Jed Hodson 2014 */
#include <SPI.h>
#include <DMD.h>
#include <TimerOne.h>
#include "SystemFont5x7.h"
#include "Wire.h"
#define DS1307_I2C_ADDRESS 0x68
// ... (이하 전체 코드 생략, 원본 참조) ...
회로도
