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

마스터 시계

구성품 및 소모품

Arduino UNO
× 1
Freetronics DMD 디스플레이
× 1
RTC 모듈
× 1
순간 푸시 버튼
× 1
켜기/끄기 스위치
× 1

앱 및 온라인 서비스

Arduino IDE

이 프로젝트 정보

이것은 12미터에서 또는 가까이에서 볼 수 있는 멋진 큰 시계를 원하는 모든 사람을 위한 프로젝트입니다. 원하는 만큼 크게 만들 수 있습니다. 또한 이벤트 핸들러로 사용할 수 있는 내장 알람 시계가 통합되어 있습니다. 예를 들어 정원을 위한 자동 급수 시스템, 가려고 하는 주간 모임 또는 릴레이에 연결할 수 있는 모든 것에 대해 알려줍니다. .

필요한 것:

● 프리트로닉스 DMD 디스플레이

● Arduino용 실시간 클록 모듈

● 부저(선택 사항 – 아침에 잠을 깨울 만큼 큰 소리)

● 일시적인 푸시 버튼

● 2x On-Off 버튼(전원 1개는 선택 사항)

● Arduino UNO 또는 Arduino 호환 보드

● Arduino용 프로토쉴드(옵션)

● Arduino용 전원 공급 장치

● 4 ~ 30A를 지원하는 5VDC 조정 전원 공급 장치(고휘도의 경우 옵션 – 정상 작동에는 필요하지 않음)

건설:

1부 – 전자 제품:

1단계:부저, 무음 버튼 및 알람 설정 스위치를 브레드보드에 연결

2단계:각 스위치 핀 중 하나를 접지에 연결하고 버저 GND 핀을 Arduino의 GND 핀에 연결합니다(다이어그램 참조).

3단계:알람 설정 스위치의 다른 핀을 D2에, 무음 핀을 D3에, 부저를 D4에 연결

4단계:RTC 모듈을 해당 유형에 따라 Arduino에 연결합니다(제조 데이터 읽기 – 대부분의 경우 다이어그램 참조).

5단계:DMDCON을 Arduino에 연결하고 DMD를 연결합니다.

6단계:DMD의 전체 밝기를 위해 5V 소스를 고휘도 단자에 연결합니다.

7단계:프로토 쉴드에서 이것을 만들려면 모든 부품을 쉴드에 납땜하고 적절하게 연결하십시오.

2부 – 소프트웨어:

먼저 여기에서 사용 가능한 DMD 라이브러리를 설치하고 라이브러리 폴더에 설치해야 합니다.

소프트웨어는 Prototyping Corner 또는 이 페이지 하단에서 다운로드할 수 있습니다. 여기에는 마스터 클럭의 기본 작업이 포함됩니다.

RTC 모듈의 시간을 설정하려면 117~124행을 찾아 현재 시간으로 조정합니다. 이제 124행의 주석을 제거하고 Arduino에 업로드하십시오. 이제 124행을 다시 주석 처리하고 다시 업로드하십시오. 이것이 완료되지 않으면 RTC는 동일한 시간에 유지됩니다.

593번과 594번 줄에서 알람이 울리길 원하는 시간과 요일을 설정합니다. 593행은 원하는 요일입니다. 날짜는 다음과 같은 숫자에 해당합니다.

1 =일요일

2 =월요일

3 =화요일

4 =수요일

5 =목요일

6 =금요일

7 =토요일

그런 다음 594행에서 알람이 울리는 시간을 24시간제로 설정합니다.

더 나아가기:

디스플레이 추가:

더 많은 DMD 디스플레이를 추가하여 시계를 더 크게 만들 수 있습니다. 자세한 내용은 여기를 읽어보세요.

알람 추가:

더 많은 알람을 추가하려면 스케치에 다음 코드 줄을 추가하고 메인 루프에서 void를 호출합니다.

CheckAlarm-ALARM-NO-() 무효 {

AlarmSet =digitalRead(AlarmSetPin);

다시 알림 =digitalRead(SnoozePin);

바이트 초, 분, 시, dayOfWeek, dayOfMonth, 월, 연도;

getDateDs1307(&second, &분, &hour, &dayOfWeek, &dayOfMonth, &month, &year);

/* 아래 나열된 요일인 경우에만 알람을 트리거합니다. 숫자를 다음 중 하나로 변경하여 변경할 수 있습니다.

1 =일요일

2 =월요일

3 =화요일

4 =수요일

5 =목요일

6 =금요일

7 =토요일

<코드> */

if(dayOfWeek ==2 || dayOfWeek ==3 || dayOfWeek ==4 || dayOfWeek ==5 ||dayOfWeek ==6) { //알람을 울릴 수 있는 날짜입니다.

if(hour ==18 &&min ==05 ) { //여기에 시간 설정(24시간 기준)

if(AlarmSet ==LOW) { //알람 핀이 켜져 있는 경우

다시 알림 =digitalRead(SnoozePin);

동안(다시 알림 ==높음)

<코드> {

다시 알림 =digitalRead(SnoozePin);

//여기서 일어나는 일 추가

<코드> }

<코드> }

<코드> }

<코드> }

<섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

코드

<울>
  • 마스터 클록용 코드
  • 마스터 클록용 코드C/C++
    /* 마스터 클럭 스케치. Created 26/03/14 이것은 디스플레이용 출력으로 Freetronics DMD를 사용하는 arduino 프로그램입니다. 알람 기능이 포함되어 있습니다. 요일, 날짜 및 시간은 DMD에 인쇄됩니다. 알람 기능 버튼은 알람 설정용 핀 2, 스누즈용 핀 3, 출력 알람용 핀 4에 있습니다. 알람 시간과 요일은 라인 551과 552에서 설정할 수 있습니다. Jed Hodson 2014 */byte dayOfWeek=4;byte dayOfMonth=1;#include  //SPI.h는 DMD가 작성될 때 포함되어야 합니다. by SPI(IDE는 그렇지 않으면 불평함)#include  //#include  //#include "SystemFont5x7.h#include "Wire.h#define DS1307_I2C_ADDRESS 0x68int AlarmSetPin =2;int SnoozePin =3;int Alarm =4;int AlarmSet =0;int Snooze =0;// 일반 십진수를 이진 코드 십진수로 변환byte decToBcd(byte val){ return ( (val/10*16) + (val%10) );}// 이진 코드 십진수를 일반 십진수로 변환byte bcdToDec(byte val){ return ( (val/16*10) + (val%16) );}// 1) ds1307//의 날짜와 시간을 설정합니다. 2) 시계 시작// 3) 시간 모드를 24시간 시계로 설정// 유효한 숫자를 전달한다고 가정합니다.void setDateDs1307(byte second, // 0-59byte min, // 0-59byte hour, // 1-23byte dayOfWeek, // 1-7byte dayOfMonth, // 1-28/29/30/31byte 월, // 1-12byte 연도) // 0-99{ Wire.beginTransmission(DS1307_I2C_AD 드레스); Wire.write(0); Wire.write(decToBcd(초)); // 0 ~ 비트 7은 시계를 시작합니다. Wire.write(decToBcd(분)); Wire.write(decToBcd(시간)); Wire.write(decToBcd(dayOfWeek)); Wire.write(decToBcd(dayOfMonth)); Wire.write(decToBcd(월)); Wire.write(decToBcd(년)); Wire.write(00010000); // 0x10(hex) 00010000(binary)을 제어 레지스터로 전송 - 구형파를 켭니다. Wire.endTransmission();}// ds1307void getDateDs1307(byte *second,byte *분,byte *hour, byte *dayOfWeek,byte *dayOfMonth,byte *month,byte *year){ // 레지스터 포인터 재설정 Wire.beginTransmission(DS1307_I2C_ADDRESS); Wire.write(0); Wire.endTransmission(); Wire.requestFrom(DS1307_I2C_ADDRESS, 7); // 이들 중 일부는 특정 비트가 제어 비트이기 때문에 마스크가 필요합니다. *second =bcdToDec(Wire.read() &0x7f); *분 =bcdToDec(Wire.read()); *시간 =bcdToDec(Wire.read() &0x3f); // 오전/오후 12시인 경우 이를 변경해야 함 *dayOfWeek =bcdToDec(Wire.read()); *dayOfMonth =bcdToDec(Wire.read()); *월 =bcdToDec(Wire.read()); *year =bcdToDec(Wire.read());}//DMD 라이브러리를 dmdDMD로 실행 dmd(1,1);void ScanDMD(){ dmd.scanDisplayBySPI();}void setup(){ 바이트 초, 분 , 시간, dayOfWeek, dayOfMonth, 월, 연도; //디스플레이를 스캔하고 새로 고치는 데 사용되는 TimerOne의 인터럽트/CPU 사용량을 초기화합니다. Timer1.initialize( 5000 ); // ScanDMD를 호출하기 위한 마이크로초 단위의 기간. 5000(5ms)보다 길면 깜박임을 볼 수 있습니다. Timer1.attachInterrupt(ScanDMD); // dmd.scanDisplayBySPI()로 이동하는 ScanDMD에 Timer1 인터럽트를 연결합니다. //RAM에 있는 DMD 픽셀을 지우거나 초기화합니다. dmd.clearScreen( true ); //true는 정상(모든 픽셀 꺼짐)이고 false는 음수(모든 픽셀 켜짐) dmd.selectFont(System5x7); Wire.begin(); // 이 값을 시계를 설정하려는 값으로 변경합니다. // 시계를 한 번만 설정하고 // setDateDs1307 호출을 제거하고 싶을 것입니다. 초 =0; 분 =35; 시간 =11; // 24시간제 시간을 사용하지 않으면 요일/날짜 계산이 해제됩니다. dayOfWeek =1; dayOfMonth =23; 월 =3; 연도 =14; // 아래의 setDateDs1307 호출 주석을 제거하여 시간을 위의 간격으로 설정합니다. 시간을 설정했다면 //아래 라인의 주석을 다시 제거해야 한다는 것을 기억하세요. 그렇지 않으면 스케치는 설정된 시간에만 유지됩니다. //setDateDs1307(초, 분, 시, dayOfWeek, dayOfMonth, 월, 년); 핀모드(AlarmSetPin, INPUT_PULLUP); 핀모드(스누즈핀, INPUT_PULLUP); 핀모드(알람, 출력); digitalWrite(Alarm, LOW);}void drawDay()// 요일 표시{ 바이트 초, 분, 시, dayOfWeek, dayOfMonth, 월, 년; getDateDs1307(&초, &분, &시간, &dayOfWeek, &dayOfMonth, &month, &year); switch(dayOfWeek) { 사례 1:dmd.drawString( 1,0, "태양,", 3, GRAPHICS_NORMAL ); 부서지다; 사례 2:dmd.drawString( 1,0, "월,", 3, GRAPHICS_NORMAL ); 부서지다; 사례 3:dmd.drawString( 1,0, "화,", 3, GRAPHICS_NORMAL ); 부서지다; 사례 4:dmd.drawString( 1,0, "수,", 3, GRAPHICS_NORMAL ); 부서지다; 사례 5:dmd.drawString( 1,0, "목,", 3, GRAPHICS_NORMAL ); 부서지다; 사례 6:dmd.drawString( 1,0, "금요일,", 3, GRAPHICS_NORMAL ); 부서지다; 사례 7:dmd.drawString( 1,0, "토,", 3, GRAPHICS_NORMAL ); 부서지다; }}void drawDate()// 숫자로 날짜 표시{ 바이트 초, 분, 시, dayOfWeek, dayOfMonth, 월, 연도; getDateDs1307(&초, &분, &시간, &dayOfWeek, &dayOfMonth, &month, &year); switch(dayOfMonth) { 사례 1:dmd.drawString( 20,0, "01", 2, GRAPHICS_NORMAL ); 부서지다; 사례 2:dmd.drawString( 20,0, "02", 2, GRAPHICS_NORMAL ); 부서지다; 사례 3:dmd.drawString( 20,0, "03", 2, GRAPHICS_NORMAL ); 부서지다; 사례 4:dmd.drawString( 20,0, "04", 2, GRAPHICS_NORMAL ); 부서지다; 사례 5:dmd.drawString( 20,0, "05", 2, GRAPHICS_NORMAL ); 부서지다; 사례 6:dmd.drawString( 20,0, "06", 2, GRAPHICS_NORMAL ); 부서지다; 사례 7:dmd.drawString( 20,0, "07", 2, GRAPHICS_NORMAL ); 부서지다; 사례 8:dmd.drawString( 20,0, "08", 2, GRAPHICS_NORMAL ); 부서지다; 사례 9:dmd.drawString( 20,0, "09", 2, GRAPHICS_NORMAL ); 부서지다; 사례 10:dmd.drawString( 20,0, "10", 2, GRAPHICS_NORMAL ); 부서지다; 사례 11:dmd.drawString( 20,0, "11", 2, GRAPHICS_NORMAL ); 부서지다; 사례 12:dmd.drawString( 20,0, "12", 2, GRAPHICS_NORMAL ); 부서지다; 사례 13:dmd.drawString( 20,0, "13", 2, GRAPHICS_NORMAL ); 부서지다; 사례 14:dmd.drawString( 20,0, "14", 2, GRAPHICS_NORMAL ); 부서지다; 사례 15:dmd.drawString( 20,0, "15", 2, GRAPHICS_NORMAL ); 부서지다; 사례 16:dmd.drawString( 20,0, "16", 2, GRAPHICS_NORMAL ); 부서지다; 사례 17:dmd.drawString( 20,0, "17", 2, GRAPHICS_NORMAL ); 부서지다; 사례 18:dmd.drawString( 20,0, "18", 2, GRAPHICS_NORMAL ); 부서지다; 사례 19:dmd.drawString( 20,0, "19", 2, GRAPHICS_NORMAL ); 부서지다; 사례 20:dmd.drawString( 20,0, "20", 2, GRAPHICS_NORMAL ); 부서지다; 사례 21:dmd.drawString( 20,0, "21", 2, GRAPHICS_NORMAL ); 부서지다; 사례 22:dmd.drawString( 20,0, "22", 2, GRAPHICS_NORMAL ); 부서지다; 사례 23:dmd.drawString( 20,0, "23", 2, GRAPHICS_NORMAL ); 부서지다; 사례 24:dmd.drawString( 20,0, "24", 2, GRAPHICS_NORMAL ); 부서지다; 사례 25:dmd.drawString( 20,0, "25", 2, GRAPHICS_NORMAL ); 부서지다; 사례 26:dmd.drawString( 20,0, "26", 2, GRAPHICS_NORMAL ); 부서지다; 사례 27:dmd.drawString( 20,0, "27", 2, GRAPHICS_NORMAL ); 부서지다; 사례 28:dmd.drawString( 20,0, "28", 2, GRAPHICS_NORMAL ); 부서지다; 사례 29:dmd.drawString( 20,0, "29", 2, GRAPHICS_NORMAL ); 부서지다; 사례 30:dmd.drawString( 20,0, "30", 2, GRAPHICS_NORMAL ); 부서지다; 사례 31:dmd.drawString( 20,0, "31", 2, GRAPHICS_NORMAL ); 부서지다; }}void drawHour()// 시침을 그립니다{ 바이트 초, 분, 시, dayOfWeek, dayOfMonth, 월, 년; getDateDs1307(&초, &분, &시간, &dayOfWeek, &dayOfMonth, &month, &year); if (hour>12) //24시간 동안 if 명령을 제거합니다. { hour=hour-12; // 이것은 12시간 시계입니다. } switch(hour) { case 1:dmd.drawString( 1,8, "01", 2, GRAPHICS_NORMAL ); 부서지다; 사례 2:dmd.drawString( 1,8, "02", 2, GRAPHICS_NORMAL ); 부서지다; 사례 3:dmd.drawString( 1,8, "03", 2, GRAPHICS_NORMAL ); 부서지다; 사례 4:dmd.drawString( 1,8, "04", 2, GRAPHICS_NORMAL ); 부서지다; 사례 5:dmd.drawString( 1,8, "05", 2, GRAPHICS_NORMAL ); 부서지다; 사례 6:dmd.drawString( 1,8, "06", 2, GRAPHICS_NORMAL ); 부서지다; 사례 7:dmd.drawString( 1,8, "07", 2, GRAPHICS_NORMAL ); 부서지다; 사례 8:dmd.drawString( 1,8, "08", 2, GRAPHICS_NORMAL ); 부서지다; 사례 9:dmd.drawString( 1,8, "09", 2, GRAPHICS_NORMAL ); 부서지다; 사례 10:dmd.drawString( 1,8, "10", 2, GRAPHICS_NORMAL ); 부서지다; 사례 11:dmd.drawString( 1,8, "11", 2, GRAPHICS_NORMAL ); 부서지다; 사례 12:dmd.drawString( 1,8, "12", 2, GRAPHICS_NORMAL ); 부서지다; 사례 13:dmd.drawString( 1,8, "13", 2, GRAPHICS_NORMAL ); 부서지다; 사례 14:dmd.drawString( 1,8, "14", 2, GRAPHICS_NORMAL ); 부서지다; 사례 15:dmd.drawString( 1,8, "15", 2, GRAPHICS_NORMAL ); 부서지다; 사례 16:dmd.drawString( 1,8, "16", 2, GRAPHICS_NORMAL ); 부서지다; 사례 17:dmd.drawString( 1,8, "17", 2, GRAPHICS_NORMAL ); 부서지다; 사례 18:dmd.drawString( 1,8, "18", 2, GRAPHICS_NORMAL ); 부서지다; 사례 19:dmd.drawString( 1,8, "19", 2, GRAPHICS_NORMAL ); 부서지다; 사례 20:dmd.drawString( 1,8, "20", 2, GRAPHICS_NORMAL ); 부서지다; 사례 21:dmd.drawString( 1,8, "21", 2, GRAPHICS_NORMAL ); 부서지다; 사례 22:dmd.drawString( 1,8, "22", 2, GRAPHICS_NORMAL ); 부서지다; 사례 23:dmd.drawString( 1,8, "23", 2, GRAPHICS_NORMAL ); 부서지다; 사례 24:dmd.drawString( 1,8, "24", 2, GRAPHICS_NORMAL ); 부서지다; }}void drawMinute(){ 바이트 초, 분, 시간, dayOfWeek, dayOfMonth, 월, 년; getDateDs1307(&초, &분, &시간, &dayOfWeek, &dayOfMonth, &month, &year); 스위치(분) { 경우 0:dmd.drawString( 20,8, "00", 2, GRAPHICS_NORMAL ); 부서지다; 사례 1:dmd.drawString( 20,8, "01", 2, GRAPHICS_NORMAL ); 부서지다; 사례 2:dmd.drawString( 20,8, "02", 2, GRAPHICS_NORMAL ); 부서지다; 사례 3:dmd.drawString( 20,8, "03", 2, GRAPHICS_NORMAL ); 부서지다; 사례 4:dmd.drawString( 20,8, "04", 2, GRAPHICS_NORMAL ); 부서지다; 사례 5:dmd.drawString( 20,8, "05", 2, GRAPHICS_NORMAL ); 부서지다; 사례 6:dmd.drawString( 20,8, "06", 2, GRAPHICS_NORMAL ); 부서지다; 사례 7:dmd.drawString( 20,8, "07", 2, GRAPHICS_NORMAL ); 부서지다; 사례 8:dmd.drawString( 20,8, "08", 2, GRAPHICS_NORMAL ); 부서지다; 사례 9:dmd.drawString( 20,8, "09", 2, GRAPHICS_NORMAL ); 부서지다; 사례 10:dmd.drawString( 20,8, "10", 2, GRAPHICS_NORMAL ); 부서지다; 사례 11:dmd.drawString( 20,8, "11", 2, GRAPHICS_NORMAL ); 부서지다; 사례 12:dmd.drawString( 20,8, "12", 2, GRAPHICS_NORMAL ); 부서지다; 사례 13:dmd.drawString( 20,8, "13", 2, GRAPHICS_NORMAL ); 부서지다; 사례 14:dmd.drawString( 20,8, "14", 2, GRAPHICS_NORMAL ); 부서지다; 사례 15:dmd.drawString( 20,8, "15", 2, GRAPHICS_NORMAL ); 부서지다; 사례 16:dmd.drawString( 20,8, "16", 2, GRAPHICS_NORMAL ); 부서지다; 사례 17:dmd.drawString( 20,8, "17", 2, GRAPHICS_NORMAL ); 부서지다; 사례 18:dmd.drawString( 20,8, "18", 2, GRAPHICS_NORMAL ); 부서지다; 사례 19:dmd.drawString( 20,8, "19", 2, GRAPHICS_NORMAL ); 부서지다; 사례 20:dmd.drawString( 20,8, "20", 2, GRAPHICS_NORMAL ); 부서지다; 사례 21:dmd.drawString( 20,8, "21", 2, GRAPHICS_NORMAL ); 부서지다; 사례 22:dmd.drawString( 20,8, "22", 2, GRAPHICS_NORMAL ); 부서지다; 사례 23:dmd.drawString( 20,8, "23", 2, GRAPHICS_NORMAL ); 부서지다; 사례 24:dmd.drawString( 20,8, "24", 2, GRAPHICS_NORMAL ); 부서지다; 사례 25:dmd.drawString( 20,8, "25", 2, GRAPHICS_NORMAL ); 부서지다; 사례 26:dmd.drawString( 20,8, "26", 2, GRAPHICS_NORMAL ); 부서지다; 사례 27:dmd.drawString( 20,8, "27", 2, GRAPHICS_NORMAL ); 부서지다; 사례 28:dmd.drawString( 20,8, "28", 2, GRAPHICS_NORMAL ); 부서지다; 사례 29:dmd.drawString( 20,8, "29", 2, GRAPHICS_NORMAL ); 부서지다; 사례 30:dmd.drawString( 20,8, "30", 2, GRAPHICS_NORMAL ); 부서지다; 사례 31:dmd.drawString( 20,8, "31", 2, GRAPHICS_NORMAL ); 부서지다; 사례 32:dmd.drawString( 20,8, "32", 2, GRAPHICS_NORMAL ); 부서지다; 사례 33:dmd.drawString( 20,8, "33", 2, GRAPHICS_NORMAL ); 부서지다; 사례 34:dmd.drawString( 20,8, "34", 2, GRAPHICS_NORMAL ); 부서지다; 사례 35:dmd.drawString( 20,8, "35", 2, GRAPHICS_NORMAL ); 부서지다; 사례 36:dmd.drawString( 20,8, "36", 2, GRAPHICS_NORMAL ); 부서지다; 사례 37:dmd.drawString( 20,8, "37", 2, GRAPHICS_NORMAL ); 부서지다; 사례 38:dmd.drawString(20,8, "38", 2, GRAPHICS_NORMAL); 부서지다; 사례 39:dmd.drawString( 20,8, "39", 2, GRAPHICS_NORMAL ); 부서지다; 사례 40:dmd.drawString( 20,8, "40", 2, GRAPHICS_NORMAL ); 부서지다; 사례 41:dmd.drawString( 20,8, "41", 2, GRAPHICS_NORMAL ); 부서지다; 사례 42:dmd.drawString( 20,8, "42", 2, GRAPHICS_NORMAL ); 부서지다; 사례 43:dmd.drawString( 20,8, "43", 2, GRAPHICS_NORMAL ); 부서지다; 사례 44:dmd.drawString( 20,8, "44", 2, GRAPHICS_NORMAL ); 부서지다; 사례 45:dmd.drawString( 20,8, "45", 2, GRAPHICS_NORMAL ); 부서지다; 사례 46:dmd.drawString(20,8, "46", 2, GRAPHICS_NORMAL); 부서지다; 사례 47:dmd.drawString( 20,8, "47", 2, GRAPHICS_NORMAL ); 부서지다; 사례 48:dmd.drawString( 20,8, "48", 2, GRAPHICS_NORMAL ); 부서지다; 사례 49:dmd.drawString( 20,8, "49", 2, GRAPHICS_NORMAL ); 부서지다; 사례 50:dmd.drawString( 20,8, "50", 2, GRAPHICS_NORMAL ); 부서지다; 사례 51:dmd.drawString( 20,8, "51", 2, GRAPHICS_NORMAL ); 부서지다; 사례 52:dmd.drawString( 20,8, "52", 2, GRAPHICS_NORMAL ); 부서지다; 사례 53:dmd.drawString( 20,8, "53", 2, GRAPHICS_NORMAL ); 부서지다; 사례 54:dmd.drawString( 20,8, "54", 2, GRAPHICS_NORMAL ); 부서지다; 사례 55:dmd.drawString( 20,8, "55", 2, GRAPHICS_NORMAL ); 부서지다; 사례 56:dmd.drawString( 20,8, "56", 2, GRAPHICS_NORMAL ); 부서지다; 사례 57:dmd.drawString( 20,8, "57", 2, GRAPHICS_NORMAL ); 부서지다; 사례 58:dmd.drawString( 20,8, "58", 2, GRAPHICS_NORMAL ); 부서지다; 사례 59:dmd.drawString( 20,8, "59", 2, GRAPHICS_NORMAL ); 부서지다; }}무효 drawCol(){ dmd.drawString( 14,8, ":", 1, GRAPHICS_NORMAL );}무효 runClock(){ drawDay(); 그리기 날짜(); 그리기 시간(); 드로콜(); 무승부(); CheckAlarm();} 무효 AlarmSequence() { drawDay(); 그리기 날짜(); 그리기 시간(); 드로콜(); 무승부(); digitalWrite(알람, 높음); 지연(1000); dmd.clearScreen( 참 ); digitalWrite(경보, 낮음); delay(1000);} 무효 CheckAlarm() { AlarmSet =digitalRead(AlarmSetPin); 스누즈 =digitalRead(스누즈핀); 바이트 초, 분, 시간, dayOfWeek, dayOfMonth, 월, 년; getDateDs1307(&초, &분, &시간, &dayOfWeek, &dayOfMonth, &month, &year); /* 아래의 날짜일 경우에만 알람을 발생시킵니다. 이것은 숫자를 다음 중 하나로 변경하여 변경할 수 있습니다. 1 =일요일 2 =월요일 3 =화요일 4 =수요일 5 =목요일 6 =금요일 7 =토요일 */ if(dayOfWeek ==2 || dayOfWeek ==3 | | dayOfWeek ==4 || dayOfWeek ==5 ||dayOfWeek ==6) { //알람을 울릴 수 있는 날짜입니다. if(hour ==18 &&min ==05 ) { //여기에 시간 설정(24시간) 시간) if(AlarmSet ==LOW) { //알람 핀이 켜져 있으면 Snooze =digitalRead(SnoozePin); while(다시 알림 ==높음) { 다시 알림 =digitalRead(SnoozePin); 알람 시퀀스(); } } } }} 루프(){ runClock(); }

    회로도


    제조공정

    1. 뻐꾸기 시계
    2. Arduino 관점 시계
    3. Arduino로 DIY 가장 간단한 IV9 Numitron 시계
    4. 단순 워드 클럭(Arduino)
    5. 이슬람 기도 시간이 있는 Arduino 시계
    6. Arduino 스파이봇
    7. FlickMote
    8. 수제 TV B-Gone
    9. Arduino Temp. 3.2 디스플레이가 있는 모니터 및 실시간 시계
    10. DS1302 RTC가 있는 간단한 알람 시계