First of all let me thank Adafruit for making available on Github the EagleCAD designs of their PCB for the 14 segment Featherwing. Using that I was able to make modifications to accommodate 2 different types of 4 character alphanumeric displays.
First a little background.
Starting with the clock example in the Adafruit LCD display library package I developed a digital alarm clock and then further implemented automatic correction for daylight saving time. My next step was to make a “talking” clock which, at the push of a button, announces the time. This was a gift for my 91 year old mother-in-law who has almost completely lost her sight.
Recently I decided that I wanted some way in which the date and time parameters could be set without attaching the clock to a computer. Once this was achieved I realised the limitations of the 7 segment Featherwings that I was using however I was not happy with the Adafruit 14 segment displays which do not have a colon.
To this end I was able to obtain a small number of displays (see the attached photos). One, from Lucky Light, has 4 characters plus the central colon, and the other, from LightBo (Shenzhen Guangzhibao Technology CO., LTD) has 4 characters with decimal points and the central colon.
The printed circuit boards
My original intention was to use a breakout board and somehow piggyback it onto a prototype Featherwing board but I soon realised that this was impractical and decided to design some Feather compatible boards.
I could not come to grips with Eagle and found the limitations of the free version made it almost impossible to do what I wanted so I imported and modified the designs in CircuitMaker and then had the boards made by PCBWay.
There are some small design issues that I have since corrected. A couple of the tracks are now better, one of the vias is moved away from the pin solder pad, and any future boards to this design will be made with tented vias, that is to say covered with the green solder resist coating.
This board is for the LightBo display which has 20 pins. The display must be fitted with the decimal points as shown on the board or it will not work. The board for the Lucky Light display only has 18 pins and pin 6 is not fitted so it is impossible to mount incorrectly.
I then had to add the two types of display the the Arduino library.
Both work quite satisfactorily however the LightBo remains quite bright even at the lowest setting. It has to be said that the wider segments make the LightBo display a little easier to read and a polarising film placed in front of the display does help, not only to reduce the brightness but to hide the unlit segements.
As a finishing touch I had some frames 3D printed for the displays which make them easier to mount and gives a more finished appearance to the project.
The arduino code is listed on the Code page and can be downloaded together with the modified library as a zip file. LCD_Alarm_M4_alphanum.zip
Update 07/08/2024: A small bug has been fixed that kept the alarm playing even when the button was depressed. In the process a small improvement has been made to the code.
Included in the zip file is also a modified copy, a fork, of the Adafruit RTClib library (variations are awaiting approval and merging with the Adafruit master, and, for convenience, a copy of the DST_RTC daylight saving time library and the OneButton library.
The fork of the Adafruit RTClib library contains an example file pcf8523_calibrate.ino which is useful for calibrating the PCF8523 RTC.
I have also made available a download with the audio files that I have used on both the Alarm and the “Talk-the-Time” version of the clock. The zip file can be downloaded at M4 Alarm.zip.
Note: All standard libraries must be loaded in the normal mode from the repositories.
Note this code is completely functional with an Adafruit 7 segment display but some of the alpha characters will look a little strange.