Skip to content

Commit

Permalink
Merge pull request #12 from tjfsteele/Dutch
Browse files Browse the repository at this point in the history
Add Dutch clock face
  • Loading branch information
t0mg authored Jan 5, 2024
2 parents cb75cc6 + 42497c6 commit 45dec4f
Showing 1 changed file with 210 additions and 0 deletions.
210 changes: 210 additions & 0 deletions software/wordclock/src/ClockFace.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -504,4 +504,214 @@ bool EnglishClockFace::stateForTime(int hour, int minute, int second, bool show_
break;
}
return true;
}

//
// Constants to match the Dutch ClockFace.
//
// Custom Dutch face. Letters in lowercase below are not used
// by the clock.

// HETkISaVIJF
// TIENatxVOOR
// OVERmeKWART
// HALFspmOVER
// VOORthgEENs
// TWEEamcDRIE
// VIERVIJFZES
// ZEVENoNEGEN
// ACHTTIENELF
// TWAALFpmUUR
//

// All the segments of words on the board. The first too numbers are the
// coordinate of the first letter of the word, the last is the length. A word
// must always be on one row.
#define NL_S_HET 0, 0, 3
#define NL_S_IS 4, 0, 2

#define NL_H_EEN 7, 4, 3
#define NL_H_TWEE 0, 5, 4
#define NL_H_DRIE 7, 5, 4
#define NL_H_VIER 0, 6, 4
#define NL_H_VIJF 4, 6, 4
#define NL_H_ZES 8, 6, 3
#define NL_H_ZEVEN 0, 7, 5
#define NL_H_ACHT 0, 8, 4
#define NL_H_NEGEN 6, 7, 5
#define NL_H_TIEN 4, 8, 4
#define NL_H_ELF 8, 8, 3
#define NL_H_TWAALF 0, 9, 6

#define NL_H_UUR 8, 9, 3

#define NL_M_VOOR 7, 1, 4
#define NL_M_VOOR2 0, 4, 4
#define NL_M_OVER 0, 2, 4
#define NL_M_OVER2 7, 3, 4
#define NL_M_KWART 6, 2, 5
#define NL_M_TIEN 0, 1, 4
#define NL_M_VIJF 7, 0, 4
#define NL_M_HALF 0, 3, 4

bool DutchClockFace::stateForTime(int hour, int minute, int second,
bool show_ampm)
{
if (hour == _hour && minute == _minute)
{
return false;
}
_hour = hour;
_minute = minute;

DLOGLN("update state");

// TODO move to a more convenient place
// Reset the board to all black
for (int i = 0; i < NEOPIXEL_COUNT; i++)
_state[i] = false;

int leftover = minute % 5;
minute = minute - leftover;

if (minute > 15)
hour = (hour + 1) % 24; // Switch to "TO" minutes the next hour

updateSegment(NL_S_HET);
updateSegment(NL_S_IS);

switch (hour)
{
case 1:
case 13:
updateSegment(NL_H_EEN);
break;
case 2:
case 14:
updateSegment(NL_H_TWEE);
break;
case 3:
case 15:
updateSegment(NL_H_DRIE);
break;
case 4:
case 16:
updateSegment(NL_H_VIER);
break;
case 5:
case 17:
updateSegment(NL_H_VIJF);
break;
case 6:
case 18:
updateSegment(NL_H_ZES);
break;
case 7:
case 19:
updateSegment(NL_H_ZEVEN);
break;
case 8:
case 20:
updateSegment(NL_H_ACHT);
break;
case 9:
case 21:
updateSegment(NL_H_NEGEN);
break;
case 10:
case 22:
updateSegment(NL_H_TIEN);
break;
case 11:
case 23:
updateSegment(NL_H_ELF);
break;
case 0:
case 12:
updateSegment(NL_H_TWAALF);
break;
default:
DLOG("Invalid hour ");
DLOGLN(hour);
}
switch (hour)
{
case 0:
case 12:
break;
default:
break;
}

switch (minute)
{
case 0:
updateSegment(NL_H_UUR);
break;
case 5:
updateSegment(NL_M_VIJF);
updateSegment(NL_M_OVER);
break;
case 10:
updateSegment(NL_M_TIEN);
updateSegment(NL_M_OVER);
break;
case 15:
updateSegment(NL_M_KWART);
updateSegment(NL_M_OVER2);
break;
case 20:
updateSegment(NL_M_TIEN);
updateSegment(NL_M_VOOR);
updateSegment(NL_M_HALF);
break;
case 25:
updateSegment(NL_M_VIJF);
updateSegment(NL_M_VOOR);
updateSegment(NL_M_HALF);
break;
case 30:
updateSegment(NL_M_HALF);
break;
case 35:
updateSegment(NL_M_VIJF);
updateSegment(NL_M_OVER);
updateSegment(NL_M_HALF);
break;
case 40:
updateSegment(NL_M_TIEN);
updateSegment(NL_M_OVER);
updateSegment(NL_M_HALF);
break;
case 45:
updateSegment(NL_M_KWART);
updateSegment(NL_M_VOOR2);
break;
case 50:
updateSegment(NL_M_VOOR);
updateSegment(NL_M_TIEN);
break;
case 55:
updateSegment(NL_M_VOOR);
updateSegment(NL_M_VIJF);
break;
default:
DLOG("Invalid minute ");
DLOGLN(minute);
}

switch (leftover)
{
case 4:
_state[113] = true;
case 3: // fall through
_state[101] = true;
case 2: // fall through
_state[12] = true;
case 1: // fall through
_state[0] = true;
case 0: // fall through
break;
}
return true;
}

0 comments on commit 45dec4f

Please sign in to comment.