산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

아두이노 RTC LED 시계: 신뢰할 수 있는 시간 표시 장치 만들기

부품 및 소모품

아두이노 UNO ×1
실시간 시계 모듈 (RTC) ×1
저항 1kΩ ×15
저항 120Ω ×15
리니어 레귤레이터 (7805) ×1
커패시터 22pF ×1
16MHz 크리스탈 ×1
커패시터 10µF ×1
코인 셀 배터리 CR2032 ×1
배터리 홀더 (CR2032용) ×1
5mm 녹색 LED ×190
바이폴라 NPN 트랜지스터 ×10
범용 PNP 트랜지스터 ×12
택타일 스위치 (상단 작동) ×4
12V 5A 전원 공급 장치 (60W) ×1

필요한 도구 및 장비

프로젝트 소개

먼저 다음 라이브러리를 다운로드하세요 (페이지 하단 링크 참조)

  1. Wire.h
  2. RTClib.h

부품 목록

아두이노 RTC LED 시계: 신뢰할 수 있는 시간 표시 장치 만들기

동영상 시청

RTC 시계 모듈

아두이노 RTC LED 시계: 신뢰할 수 있는 시간 표시 장치 만들기

아두이노 회로도

아두이노 RTC LED 시계: 신뢰할 수 있는 시간 표시 장치 만들기

RTC 배선 연결

아두이노 RTC LED 시계: 신뢰할 수 있는 시간 표시 장치 만들기

RTC 스위치

아두이노 RTC LED 시계: 신뢰할 수 있는 시간 표시 장치 만들기

애노드와 캐소드 식별

아두이노 RTC LED 시계: 신뢰할 수 있는 시간 표시 장치 만들기

회로도 (공통 애노드)

아두이노 RTC LED 시계: 신뢰할 수 있는 시간 표시 장치 만들기

공통 캐소드 LED 사용 시 변경 사항

공통 캐소드 LED를 사용하는 경우 다음 변경 사항을 적용하세요.

아두이노 RTC LED 시계: 신뢰할 수 있는 시간 표시 장치 만들기

전원 공급 장치

아두이노 RTC LED 시계: 신뢰할 수 있는 시간 표시 장치 만들기

코드

LED 시계 코드 Arduino

/* 4자리 7세그먼트 디스플레이: https://www.sparkfun.com/products/9483
   데이터시트: https://www.sparkfun.com/datasheets/Components/LED/7-Segment/YSD-439AR6B-35.pdf */
// niq_ro 수정: https://nicuflorica.blogspot.com
// 데이터시트: https://www.tme.eu/ro/Document/dfc2efde2e22005fd28615e298ea2655/KW4-563XSA.pdf
// BMIAK Basnayaka 수정: https://www.setnfix.com

int digit1 = 11, digit2 = 10, digit3 = 9, digit4 = 6, digit5 = 5, digit6 = 3;
int segA = 0, segB = 1, segC = 2, segD = 4, segE = 7, segF = 8, segG = 12, segDP = 13;

#include 
#include "RTClib.h"

RTC_DS1307 RTC;
byte SW0 = A0, SW1 = A2, SW2 = A1, SWT = A3;
int Adhr = 0, Admnt = 0, D = 0, Z = 0;
long zh, uh, ore, zm, um, miniti;

void setup() {
  Wire.begin();
  RTC.begin();
  // RTC.adjust(DateTime(F(__DATE__), F(__TIME__))); // 시간 설정 시 주석 해제
  
  // 1Hz SQW 출력 설정
  Wire.beginTransmission(0x68);
  Wire.write(0x07);
  Wire.write(0x10);  // 1Hz 사각파 출력
  Wire.endTransmission();
  
  // 핀 모드 설정
  pinMode(segA, OUTPUT); pinMode(segB, OUTPUT); pinMode(segC, OUTPUT);
  pinMode(segD, OUTPUT); pinMode(segE, OUTPUT); pinMode(segF, OUTPUT);
  pinMode(segG, OUTPUT); pinMode(segDP, OUTPUT);
  pinMode(digit1, OUTPUT); pinMode(digit2, OUTPUT); pinMode(digit3, OUTPUT);
  pinMode(digit4, OUTPUT); pinMode(digit5, OUTPUT); pinMode(digit6, OUTPUT);
  pinMode(SW0, INPUT_PULLUP); pinMode(SW1, INPUT_PULLUP);
  pinMode(SW2, INPUT_PULLUP); pinMode(SWT, INPUT_PULLUP);
  digitalWrite(segDP, LOW);
}

void loop() {
  DateTime now = RTC.now();
  long HR = now.hour() * 1000;
  long timp = (HR * 10) + now.minute() * 100 + now.second();
  Adhr = now.hour(); Admnt = now.minute();
  int DIM = 0;
  
  if (timp >= 250000) timp -= 240000;
  
  // 12/24시간 전환
  if (timp < 130000) digitalWrite(segDP, LOW);
  if (digitalRead(SWT) == 0) { delay(300); D = (D == 0) ? 1 : 0; }
  
  if (D == 0) {
    if (timp >= 130000) { timp -= 120000; digitalWrite(segDP, HIGH); }
  }
  if (timp >= 130000) digitalWrite(segDP, LOW);
  if ((D == 1) && (timp < 130000)) digitalWrite(segDP, LOW);
  
  // 디스플레이 멀티플렉싱
  for (int i = 100; i > 0; i--) {
    if (timp >= 100000) displayNumber01(timp); else displayNumber02(timp);
  }
  for (int i = 100; i > 0; i--) {
    if (timp >= 100000) displayNumber03(timp); else displayNumber04(timp);
  }
  for (int i = 100; i > 0; i--) {
    if (timp >= 100000) displayNumber05(timp); else displayNumber06(timp);
  }
  
  if (digitalRead(SW0) == 0) { delay(100); Z = 1; set_time(); }
}

void set_time() {
  byte minutes = Admnt, hours = Adhr;
  // 16진법→10진법 변환 및 시간 설정 로직
  // SW2: 시간 증가, SW1: 분 증가, SW0: 저장/종료
  while (Z != 0) {
    // 시간/분 설정 루프
    // RTC에 시간 쓰기
    Wire.beginTransmission(0x68);
    Wire.write(0); Wire.write(0x00); Wire.write(minutes);
    Wire.write(0x80 | hours); Wire.write(0x06); Wire.write(0x01);
    Wire.write(0x05); Wire.write(0x09); Wire.write(0x10);
    Wire.endTransmission();
    if (digitalRead(SW0) == 0) Z = 0;
    delay(300);
  }
}

// displayNumber01~06: 6자리 디스플레이 멀티플렉싱 함수들
// lightNumber: 숫자에 해당하는 세그먼트 점등 (공통 애노드/캐소드 대응)

전체 코드는 원본 프로젝트에서 다운로드 가능합니다.

회로도

SSD와 LED 배선도

아두이노 RTC LED 시계: 신뢰할 수 있는 시간 표시 장치 만들기

제조공정

  1. 아두이노 POV 클락: 퍼시스턴스 오브 비전 LED 디스플레이 제작
  2. DIY 아두이노 워드 클럭 – 세련된 실시간 텍스트 시계 만들기
  3. 아두이노 나노와 노키아 5110 LCD로 20kHz 오실로스코프 만들기: 쉬운 DIY 가이드
  4. 아두이노로 만드는 대형 LED 마스터 시계 (알람 기능 포함, 12m 거리에서도 식별 가능)
  5. 스마트 블라인드: 아두이노와 태양광으로 자동 조명 제어
  6. 이탈리안 워드 클럭(Word Clock) 제작: 아두이노 나노 + 네오픽셀 + LCD + RTC
  7. 아두이노 블루투스로 LED 제어하기 - HC-05 & MIT App Inventor 입문 가이드
  8. 스마트 아두이노 4족 보행 로봇 제작: 단계별 완벽 가이드
  9. 아두이노 프로 미니 & DS1302 RTC로 정밀 7세그먼트 시계 만들기
  10. 아두이노용 절연 아날로그 입력 회로 만들기