@@ -10,6 +10,10 @@ struct Time {
10
10
int sec;
11
11
};
12
12
13
+ // ==== LDR SETTING ====
14
+ #define LDR_PIN A3
15
+ unsigned int analogValue;
16
+
13
17
// ==== OLED SETTING ====
14
18
#define OLED_RESET -1
15
19
#define SCREEN_WIDTH 128
@@ -60,6 +64,7 @@ Time alarm = { 0, 0, 0 };
60
64
Time alarmSave = { 0 , 0 , 0 };
61
65
int onAlarm = 0 ;
62
66
67
+
63
68
// ==== MODE SETTING ====
64
69
#define CLOCK_MODE 0
65
70
#define COUNTER_UP_MODE 1
@@ -120,16 +125,22 @@ void timer() {
120
125
clock .hour += clock .min / 60 ;
121
126
clock .min %= 60 ;
122
127
clock .hour %= 24 ;
128
+ if (clock .sec == 0 ) {
129
+ EEPROM.update (20 , clock .hour );
130
+ EEPROM.update (21 , clock .min );
131
+ }
123
132
}
124
133
125
134
void change_hour () {
126
135
clock .hour += 1 ;
136
+ EEPROM.update (20 , clock .hour );
127
137
clock .hour %= 24 ;
128
138
}
129
139
130
140
void change_min () {
131
141
clock .min += 1 ;
132
142
clock .hour += clock .min / 60 ;
143
+ EEPROM.update (21 , clock .min );
133
144
clock .min %= 60 ;
134
145
}
135
146
@@ -198,8 +209,8 @@ void change_mode() {
198
209
}
199
210
200
211
// ==== Time Text ====
201
- String timerText = " 00 : 00 : 00 " ;
202
- String countUpText = " 00 : 00 : 00 " ;
212
+ String timerText = " 00 : 00" ;
213
+ String countUpText = " 00 : 00" ;
203
214
// String countDownText = "00 : 00 : 00";
204
215
String alarmText = " 00 : 00" ;
205
216
String saveAlarmText = " 00 : 00" ;
@@ -210,17 +221,17 @@ void time_text() {
210
221
timerText[5 ] = (clock .min / 10 ) + ' 0' ;
211
222
timerText[6 ] = (clock .min % 10 ) + ' 0' ;
212
223
213
- timerText[10 ] = (clock .sec / 10 ) + ' 0' ;
214
- timerText[11 ] = (clock .sec % 10 ) + ' 0' ;
224
+ // timerText[10] = (clock.sec / 10) + '0';
225
+ // timerText[11] = (clock.sec % 10) + '0';
215
226
216
- countUpText[0 ] = (countUp.hour / 10 ) + ' 0' ;
217
- countUpText[1 ] = (countUp.hour % 10 ) + ' 0' ;
227
+ // countUpText[0] = (countUp.hour / 10) + '0';
228
+ // countUpText[1] = (countUp.hour % 10) + '0';
218
229
219
- countUpText[5 ] = (countUp.min / 10 ) + ' 0' ;
220
- countUpText[6 ] = (countUp.min % 10 ) + ' 0' ;
230
+ countUpText[0 ] = (countUp.min / 10 ) + ' 0' ;
231
+ countUpText[1 ] = (countUp.min % 10 ) + ' 0' ;
221
232
222
- countUpText[10 ] = (countUp.sec / 10 ) + ' 0' ;
223
- countUpText[11 ] = (countUp.sec % 10 ) + ' 0' ;
233
+ countUpText[5 ] = (countUp.sec / 10 ) + ' 0' ;
234
+ countUpText[6 ] = (countUp.sec % 10 ) + ' 0' ;
224
235
225
236
// countDownText[0] = (countDown.hour / 10) + '0';
226
237
// countDownText[1] = (countDown.hour % 10) + '0';
@@ -245,13 +256,27 @@ void time_text() {
245
256
}
246
257
247
258
void display_text (int x1, int y1, String name, int x2, int y2, String timer) {
259
+ OLED.setTextSize (1 );
248
260
OLED.setCursor (x1, y1 );
249
261
OLED.println (name);
262
+ OLED.setTextSize (2 );
250
263
OLED.setCursor (x2, y2);
251
264
OLED.println (timer);
252
265
}
253
266
254
-
267
+ void display_alarm () {
268
+ OLED.clearDisplay ();
269
+ OLED.setTextColor (WHITE);
270
+ if (analogValue > 900 ) {
271
+ OLED.dim (true );
272
+ } else {
273
+ OLED.dim (false );
274
+ }
275
+ OLED.setCursor (10 , 10 );
276
+ OLED.setTextSize (2 );
277
+ OLED.print (" WAKE UP!!" );
278
+ OLED.display ();
279
+ }
255
280
256
281
void setup () {
257
282
Serial.begin (9600 );
@@ -265,10 +290,28 @@ void setup() {
265
290
}
266
291
Timer1.initialize (1000000 );
267
292
Timer1.attachInterrupt (interruptClock);
293
+ // ==== WRITE EEPROM ====
294
+ // EEPROM.write(20, clock.hour);
295
+ // EEPROM.write(21, clock.min);
296
+
297
+ // ==== READ EEPROM ====
298
+ clock .hour = EEPROM.read (20 );
299
+ clock .min = EEPROM.read (21 );
268
300
}
269
301
270
302
void loop () {
271
303
304
+ unsigned int analogValue = analogRead (LDR_PIN);
305
+
306
+ OLED.clearDisplay ();
307
+ OLED.setTextColor (WHITE);
308
+
309
+ if (analogValue > 900 ) {
310
+ OLED.dim (true );
311
+ } else {
312
+ OLED.dim (false );
313
+ }
314
+
272
315
if (debounce (0 )) {
273
316
if (!digitalRead (button[0 ])) {
274
317
switch (MODE) {
@@ -332,11 +375,19 @@ void loop() {
332
375
}
333
376
334
377
if (onAlarm && alarmSave.hour == clock .hour && alarmSave.min == clock .min && clock .sec == 0 ) {
335
- tone (BUZZER_PIN, 440 , 100 );
336
- onAlarm = 0 ;
378
+ while (1 ) {
379
+ // tone(BUZZER_PIN, 440, 100);
380
+ display_alarm ();
381
+ if (debounce (0 )) {
382
+ if (!digitalRead (button[0 ])) {
383
+ OLED.clearDisplay ();
384
+ onAlarm = 0 ;
385
+ break ;
386
+ }
387
+ }
388
+ }
337
389
}
338
390
339
-
340
391
// Serial.print(get_x());
341
392
// Serial.print(" ");
342
393
// Serial.print(get_y());
@@ -345,8 +396,12 @@ void loop() {
345
396
346
397
time_text ();
347
398
348
- OLED.clearDisplay ();
349
- OLED.setTextColor (WHITE);
399
+
400
+ if (get_x () > 360 ) {
401
+ OLED.setRotation (2 );
402
+ } else {
403
+ OLED.setRotation (0 );
404
+ }
350
405
351
406
switch (MODE) {
352
407
case CLOCK_MODE:
@@ -360,9 +415,12 @@ void loop() {
360
415
// break;
361
416
case ALARM_MODE:
362
417
display_text (10 , 0 , " Alarm" , 10 , 12 , alarmText);
363
- display_text (10 , 24 , saveAlarmText, 70 , 24 , onAlarm == 0 ? " OFF" : " ON" );
418
+ OLED.setTextSize (1 );
419
+ OLED.setCursor (80 , 0 );
420
+ OLED.println (onAlarm == 0 ? " OFF" : " ON" );
421
+ // display_text(10, 24, saveAlarmText, 70, 24, onAlarm == 0 ? "OFF" : "ON");
364
422
break ;
365
423
}
366
- OLED. setTextSize ( 1 );
424
+
367
425
OLED.display ();
368
426
}
0 commit comments