-
Notifications
You must be signed in to change notification settings - Fork 4
Home
The Multi Face GPS Clock is an Arduino Mega with a 20 x 4 LCD taking time and position data from a GPS. The user can change between 40+ different screens showing local time, UTC, position, solar and lunar position, their rise and set times, moon phase, date for Easter Sunday in Gregorian and Julian calendars and more. A more in-depth description is found in the form of several blog posts.
The different clock faces are shown according to the variable in the code that selects them. This variable is always prefixed with ‘Screen’ and then a few words that describe the screen.
-
ScreenLocalUTC:
-
ScreenUTCLocator:
-
ScreenLocalSun:
-
ScreenLocalSunMoon:
-
ScreenLocalMoon:
-
ScreenMoonRiseSet:
-
ScreenTimeZones:
-
ScreenBinary;
-
ScreenBinaryHorBCD:
-
ScreenBinaryVertBCD:
-
ScreenBar:
-
ScreenMengenLehrUhr, link:
-
ScreenLinearUhr, link:
-
ScreenInternalTime
-
ScreenCodeStatus
New in v 2.1 is PPS (pulse per second) interrupt 1 or 0. More documentation on blog.
-
ScreenUTCPosition:
-
ScreenNCDXFBeacons2, link:
-
ScreenNCDXFBeacons1:
-
ScreenWSPRsequence, link:
-
ScreenHex
-
ScreenOctal
-
ScreenHexOctalClock:
-
ScreenEasterDates:
-
ScreenLocalSunSimpler:
-
ScreenLocalSunAzEl:
-
ScreenMathClockAdd, link:
-
ScreenMathClockSubtract:
-
ScreenMathClockMultiply:
-
ScreenMathClockDivide:
-
ScreenLunarEclipse:
-
ScreenRoman:
-
ScreenMorse:
-
ScreenWordClock:
-
ScreenSidereal:
-
ScreenLocalUTCWeek
-
ScreenPlanetsInner
-
ScreenPlanetsOuter
-
ScreenISOHebIslam
-
ScreenGPSInfo
-
ScreenChemical
-
ScreenBigNumbers2
-
ScreenBigNumbers2UTC
-
ScreenBigNumbers3
-
ScreenBigNumbers3UTC
-
ScreenReminder
Screen shown before and after the program 'EEPROMReminder' has been run
-
ScreenEquinoxes
-
ScreenSolarEclipse
-
ScreenNextEvents
-
ScreenDemoClock
Demo of all screens in "Random" order (may increment or decrement also), and with 10 seconds per screen.
Here's a YouTube video showing 24 screens of the Favorites subset of clock faces, using the Demo mode with 10 seconds per screen: https://youtu.be/AJEWBOJmE1E
The numbers 1, 2, 3, … are assigned in clock_defines.h
The day name when local time is displayed may be shown in one of the following languages in addition to English.
-
English:
-
Norwegian (and Danish) with display of ø:
-
French:
-
German:
-
Spanish, supporting display of á and é:
-
Swedish with display of ö and å:
-
Icelandic, with display of á, ð, and Þ:
In the file clock_options.h, choose only one of these and comment out the other one
- #define FEATURE_LCD_I2C for serial interface to 20x4 LCD on 0x27 I2C address.
- #define FEATURE_LCD_4BIT for parallel interface to 20x4 LCD.
Note that starting with ver 2 of the software, there is no need to edit any of the files for an ordinary user, except the kind of LCD (above), and pin numbers (see below). All other parameters can be set by using the rotary encoder.
Version 1.0.0 of the code used two push buttons to increase/decrease the screen number to be displayed. Starting from version 1.1.0, a rotary encoder with a push button is also supported which can be used by itself or in addition to the push buttons. The variables in clock_options.h are:
- #define FEATURE_ROTARY_ENCODER // enable rotary encoder with push button
- #define FEATURE_BUTTONS // two push buttons increase/decrease screen number
Either the rotary encoder or push buttons are needed (or both). The menu system which was new in version 2, requires the rotary encoder.
Assign pin numbers for the rotary encoder, analog button string, parallel interface to LCD if chosen, and PWM output for LCD backlight in clock_pin_settings.h
Starting from version 2., it can be set from the menu system, by a short press on the rotary encoder push button.
Menu+ grounds the analog input and Menu- provides a voltage of 5V * 1/11 = 0.46 Volts. The function analogbuttonread() in clock_helper_routines.h counts values in a range 0...1023 corresponding to 0...5 Volts. If the value is less than 50 (corresponding to 5 Volts * 50/1023 = 0.24 Volts) it returns Menu+ and if the value is between 51 and 130 (0.25-0.63 Volts) it returns Menu-.
The Arduino Mega expects 5 Volts logic as from the QRPLabs QLG1 and QLG2, and will not read GPS properly if the GPS has a 3.3 V output.
Starting with version 2 of the software, an ordinary user does not need to edit any of the files for choosing options. [See link to YouTube video on main page for setup] (https://github.com/la3za/Multi-Face-GPS-Clock) of GPS baudrate, PPS interrupt on/off (v 2.1 software), timezone, date format, local language, backlight level,
These libraries need to be installed properly according to how the Arduino environment expects them.:
- TinyGPS++.h - for GPS data interpretation
- Timelib.h - timekeeping functionality
- Timezone_Generic.h - for time zones and automatic handling of daylight saving
- moon2.h - lunar position from K3NG rotator controller
- rotary.h - rotary encoder library with push-button feature controller
- Versions 2.2.2 and later:
- [xxx]
- Versions 2.2.0 and later:
- SolarCalculator.h - for predicting sun rise/set times and solar position
Obsolete:
- Versions 1.0-2.2.1:
- Versions 1.0-2.1.0:
Some screens made with online LCD Display Screenshot Generator - LCD over I2C
Arduino Multi Face GPS Clock by LA3ZA