Anda di halaman 1dari 7

DMD Jam, Timer, Countdown dengan arduino – Semesin https://www.project.semesin.com/2020/02/21/dmd-jam-timer-countdown...

1 dari 7 16/03/2024 21:59


DMD Jam, Timer, Countdown dengan arduino – Semesin https://www.project.semesin.com/2020/02/21/dmd-jam-timer-countdown...

1 #define waktuHitungMundur 5 * 60// 5 menit

2 dari 7 16/03/2024 21:59


DMD Jam, Timer, Countdown dengan arduino – Semesin https://www.project.semesin.com/2020/02/21/dmd-jam-timer-countdown...

3 dari 7 16/03/2024 21:59


DMD Jam, Timer, Countdown dengan arduino – Semesin https://www.project.semesin.com/2020/02/21/dmd-jam-timer-countdown...

1 #define waktuHitungMundur 5 * 60// 5 me


2
3 #define pinTombol A0
4
5
6 #include "Sodaq_DS3231.h"
7 #include <DMD2.h>
8 #include <fonts/angka6x14.h>
9 #include <fonts/System_Min5x7.h>
10
11 enum Mode
12 {
13 modeJam,
14 modeHitungMaju,
15 modeHitungMundur,
16 jumlahMode,
17 };
18
19 DateTime now;
20 uint32_t hitungMundur;
21 uint32_t hitungMaju;
22 byte mode;
23 char buffer[10];
24 byte jam, menit, detik;
25 byte detikSebelumnya;
26
27 SPIDMD dmd(2, 1);
28
29 void setup() {
30
31 pinMode(pinTombol, INPUT_PULLUP);
32
33 Serial.begin(9600);
34 Serial.println("Jam, Hitung maju, Hitung
35 Serial.println("https://www.project.semes
36
37 rtc.begin();
38
39 //Set rtc untuk keperluan testing
40 DateTime dt(2020, 2, 20, 15, 30, 0, 1);
41 rtc.setDateTime(dt);
42
43 dmd.begin();
44
45 setMode();
46 }
47
48 void loop() {
49 now = rtc.now();
50 if (detikSebelumnya != now.second())
51 {
52 detikSebelumnya = now.second();
53
54 switch (mode)

4 dari 7 16/03/2024 21:59


DMD Jam, Timer, Countdown dengan arduino – Semesin https://www.project.semesin.com/2020/02/21/dmd-jam-timer-countdown...

55 {
56 case modeJam:
57 sprintf(buffer, "%02d%s%02d%s%02d",
58 dmd.drawString(8, 1, buffer);
59 break;
60
61 case modeHitungMaju:
62 jam = hitungMaju / (3600L);
63 menit = (hitungMaju % (3600L)) / 60
64 detik = hitungMaju % 60;
65 sprintf(buffer, "%02d%s%02d%s%02d",
66 dmd.drawString(8, 1, buffer);
67 hitungMaju++;
68 if(hitungMaju == 86400L)
69 {
70 hitungMaju = 0;
71 }
72
73 break;
74
75 case modeHitungMundur:
76 jam = hitungMundur / (3600L);
77 menit = (hitungMundur % (3600L)) /
78 detik = hitungMundur % 60;
79 sprintf(buffer, "%02d%s%02d%s%02d",
80 dmd.drawString(8, 1, buffer);
81
82 hitungMundur‐‐;
83 if (!hitungMundur)
84 {
85 mode = modeJam;
86 setMode();
87 }
88 break;
89 }
90 }
91 if (!digitalRead(pinTombol))
92 {
93 delay(100);
94 if (!digitalRead(pinTombol))
95 {
96 mode++;
97 mode %= jumlahMode;
98 setMode();
99
100 while (!digitalRead(pinTombol));
101 }
102 }
103 }
104
105 void setMode()
106 {
107 dmd.selectFont(System_Min5x7);
108 switch (mode)

5 dari 7 16/03/2024 21:59


DMD Jam, Timer, Countdown dengan arduino – Semesin https://www.project.semesin.com/2020/02/21/dmd-jam-timer-countdown...

109 {
110 case modeJam:
111 dmd.drawString(0, 0, "W");
112 break;
113
114 case modeHitungMaju:
115 dmd.drawString(0, 0, "T");
116 hitungMaju = 0;
117 break;
118
119 case modeHitungMundur:
120 dmd.drawString(0, 0, "C");
121 hitungMundur = waktuHitungMundur;
122 break;
123 }
124 dmd.selectFont(angka6x14);
125 dmd.fontHeader.fixedWidth = 2;
126 }

6 dari 7 16/03/2024 21:59


DMD Jam, Timer, Countdown dengan arduino – Semesin https://www.project.semesin.com/2020/02/21/dmd-jam-timer-countdown...

7 dari 7 16/03/2024 21:59

Anda mungkin juga menyukai