Skip to content

Commit 454ebe3

Browse files
committed
Fixed bugs around noon. Gave up on "noon" vs 12
1 parent 28ef6af commit 454ebe3

File tree

1 file changed

+41
-22
lines changed

1 file changed

+41
-22
lines changed

sevensegwordclock/sevensegwordclock.ino

+41-22
Original file line numberDiff line numberDiff line change
@@ -59,16 +59,41 @@ void setup() {
5959
}
6060

6161
void loop() {
62+
// loop2();
63+
loopOrig();
64+
}
65+
66+
void loopOrig() {
6267
present_timestamp = time(nullptr);
6368

6469
// convert the system (UNIX) time to a local date and time in a configurable format
6570
struct tm *now = localtime(&present_timestamp); // break down the timestamp
6671

6772
populateTimeStringAsNumbers(now);
6873
display.showTextScroll(dateTimeString);
74+
Serial.println(dateTimeString);
75+
6976
delay(4000);
7077
populateTimeStringAsWords(now);
7178
display.showTextScroll(dateTimeString);
79+
Serial.println(dateTimeString);
80+
}
81+
82+
void loop2() {
83+
for (int hr = 1; hr < 24; ++hr) {
84+
for (int min = 2; min < 60; min += 7) {
85+
struct tm testNow;
86+
testNow.tm_hour = hr;
87+
testNow.tm_min = min;
88+
populateTimeStringAsNumbers(&testNow);
89+
Serial.println(dateTimeString);
90+
display.showTextScroll(dateTimeString);
91+
92+
populateTimeStringAsWords(&testNow);
93+
Serial.println(dateTimeString);
94+
// display.showTextScroll(dateTimeString);
95+
}
96+
}
7297
}
7398

7499

@@ -123,14 +148,9 @@ void populateTimeStringAsWords(struct tm * dt) {
123148
char temp[BUFFER_SIZE];
124149

125150
if (minute >= 58 || minute <= 2 || (minute >= 33 && minute <= 42)) {
126-
if (hour == 0 || hour == 12 || hour == 24) {
127-
// don't show "noon o'clock" or "midnight o'clock"
128-
minuteStr = "";
129-
separator = "";
130-
} else {
131-
// swap; instead of "O'clock Ten" show "Ten O'clock".
132-
const char *swaptemp; swaptemp = hourStr; hourStr = minuteStr; minuteStr = swaptemp;
133-
}
151+
// swap; instead of "O'clock Ten" show "Ten O'clock".
152+
// similarly, 33 through 42 are "hour thirty five" and "hour forty"
153+
const char *swaptemp; swaptemp = hourStr; hourStr = minuteStr; minuteStr = swaptemp;
134154
}
135155
snprintf_P(temp,
136156
countof(temp),
@@ -170,26 +190,25 @@ const char *getHour(int hour) {
170190
case 9: case 21: return "Nine";
171191
case 10: case 22: return "Ten";
172192
case 11: case 23: return "Eleven";
173-
case 12: return "Noon";
174-
case 0: case 24: return "12";
193+
case 12: case 0: case 24: return "12";
175194
default: return "";
176195
}
177196
}
178197

179198
const char *getMinute(int minute) {
180199
switch (minute) {
181-
case 58: case 59: case 0: case 1: case 2: return "O'clocK";
182-
case 3: case 4: case 5: case 6: case 7: return "Five Past";
183-
case 8: case 9: case 10: case 11: case 12: return "Ten Past";
184-
case 13: case 14: case 15: case 16: case 17: return "a Quarter Past";
185-
case 18: case 19: case 20: case 21: case 22: return "20 Past";
186-
case 23: case 24: case 25: case 26: case 27: return "25 Past";
187-
case 28: case 29: case 30: case 31: case 32: return "Half Past";
188-
case 33: case 34: case 35: case 36: case 37: return "Thirty five";
189-
case 38: case 39: case 40: case 41: case 42: return "Forty";
190-
case 43: case 44: case 45: case 46: case 47: return "a Quarter to";
191-
case 48: case 49: case 50: case 51: case 52: return "Ten to";
192-
case 53: case 54: case 55: case 56: case 57: return "Five to";
200+
case 58: case 59: case 0: case 1: case 2: return "O'clocK"; // needs hour before
201+
case 3: case 4: case 5: case 6: case 7: return "Five Past"; // needs hour afterwards
202+
case 8: case 9: case 10: case 11: case 12: return "Ten Past"; // needs hour afterwards
203+
case 13: case 14: case 15: case 16: case 17: return "a Quarter Past"; // needs hour afterwards
204+
case 18: case 19: case 20: case 21: case 22: return "20 Past"; // needs hour afterwards
205+
case 23: case 24: case 25: case 26: case 27: return "25 Past"; // needs hour afterwards
206+
case 28: case 29: case 30: case 31: case 32: return "Half Past"; // needs hour afterwards
207+
case 33: case 34: case 35: case 36: case 37: return "Thirty five"; // needs hour before
208+
case 38: case 39: case 40: case 41: case 42: return "Forty"; // needs hour before
209+
case 43: case 44: case 45: case 46: case 47: return "a Quarter to"; // needs hour afterwards
210+
case 48: case 49: case 50: case 51: case 52: return "Ten to"; // needs hour afterwards
211+
case 53: case 54: case 55: case 56: case 57: return "Five to"; // needs hour afterwards
193212
default: return "";
194213
}
195214
}

0 commit comments

Comments
 (0)