WordClock-Program to display time in words on WS2812B-LED-Stripe. With DS3231 RTC

Dependencies:   PixelArray WordClock_de ds3231 mbed

Fork of mbed_ws2812b by Yoshitaka Kuwata

WordClock

Yet another wordclock...

Program for displaying time in (german) words on WS2812B LED-Matrix. Uses DS3231 RTC .

/media/uploads/charly/20171105_220942.jpg

/media/uploads/charly/20171101_112354.jpg

More fotos see:

https://photos.app.goo.gl/mSN6G145IdupbKv13

Committer:
charly
Date:
Sun Nov 05 20:22:15 2017 +0000
Revision:
4:ed0ac1dd6ae4
Parent:
3:ebe0c4fa97b8
Child:
7:10b0f6ee5047
Full working:;  - display hours, minutes as words;  - display seconds as gradiants of 4 bottom ldes;  - change colour depending on hour;  - read time from RTC; ; optional:;  - set time;  - testdrivers

Who changed what in which revision?

UserRevisionLine numberNew contents of line
charly 1:23535cfbf924 1 // Wordclock with WS2812-LED-Stripe
charly 1:23535cfbf924 2 // with 11x10 LED-Matrix and 4 minute-LEDS
charly 4:ed0ac1dd6ae4 3 // and DS3231 RTC
morecat_lab 0:afb6ebe20c1f 4 /*
morecat_lab 0:afb6ebe20c1f 5
charly 1:23535cfbf924 6 ESKISTLFÜNF
charly 1:23535cfbf924 7 ZEHNZWANZIG
charly 1:23535cfbf924 8 DREIVIERTEL
charly 1:23535cfbf924 9 TGNACHVORJM
charly 1:23535cfbf924 10 HALBXZWÖLFP
charly 1:23535cfbf924 11 ZWEINSIEBEN
charly 1:23535cfbf924 12 KDREIRHFÜNF
charly 1:23535cfbf924 13 ELFNEUNVIER
charly 1:23535cfbf924 14 WACHTZEHNRS
charly 1:23535cfbf924 15 BSECHSFMUHR
charly 2:d39f37d64441 16 ****
charly 1:23535cfbf924 17 */
morecat_lab 0:afb6ebe20c1f 18
morecat_lab 0:afb6ebe20c1f 19
morecat_lab 0:afb6ebe20c1f 20 #include "mbed.h"
morecat_lab 0:afb6ebe20c1f 21 #include "neopixel.h"
charly 1:23535cfbf924 22 #include "WordClock.h"
charly 4:ed0ac1dd6ae4 23 #include "ds3231.h"
morecat_lab 0:afb6ebe20c1f 24
morecat_lab 0:afb6ebe20c1f 25
charly 2:d39f37d64441 26 // brigtness beween 0 and 1.0
charly 1:23535cfbf924 27 #define BRIGHTNESS 0.5
morecat_lab 0:afb6ebe20c1f 28
morecat_lab 0:afb6ebe20c1f 29
charly 2:d39f37d64441 30 int main()
charly 2:d39f37d64441 31 {
charly 1:23535cfbf924 32
charly 1:23535cfbf924 33 // WordClock object with leds connected to p5 (MOSI)
charly 2:d39f37d64441 34 WordClock clock(p5);
charly 1:23535cfbf924 35
charly 4:ed0ac1dd6ae4 36 //RTC with DS3231 : sda, scl
charly 4:ed0ac1dd6ae4 37 Ds3231 rtc(p9, p10);
charly 4:ed0ac1dd6ae4 38
charly 1:23535cfbf924 39 Timer timer;
charly 2:d39f37d64441 40
charly 4:ed0ac1dd6ae4 41 {
charly 4:ed0ac1dd6ae4 42 // set time and date
charly 4:ed0ac1dd6ae4 43 //time and calendar variables
charly 4:ed0ac1dd6ae4 44 ds3231_time_t time = {0, 47, 20, 0, 0}; //sec, min, hour, am/pm(1=pm), mode(1=12h)
charly 4:ed0ac1dd6ae4 45 ds3231_calendar_t calendar = {7, 5, 11, 2017}; //day(1=mon), date, month, year
charly 4:ed0ac1dd6ae4 46 uint16_t rtn_val;
charly 4:ed0ac1dd6ae4 47 // only set RTC when required!
charly 4:ed0ac1dd6ae4 48 //rtn_val = rtc.set_time(time);
charly 4:ed0ac1dd6ae4 49 //rtn_val = rtc.set_calendar(calendar);
charly 1:23535cfbf924 50
charly 4:ed0ac1dd6ae4 51 while (1) {
charly 4:ed0ac1dd6ae4 52 //read time an show on LED
charly 4:ed0ac1dd6ae4 53 rtn_val = rtc.get_time(&time);
charly 4:ed0ac1dd6ae4 54 clock.display_time(time.hours,time.minutes,time.seconds);
charly 4:ed0ac1dd6ae4 55 wait_ms(10);
charly 4:ed0ac1dd6ae4 56 }
charly 4:ed0ac1dd6ae4 57
charly 4:ed0ac1dd6ae4 58 //testprograms from here on
charly 2:d39f37d64441 59
charly 2:d39f37d64441 60 timer.start();
charly 2:d39f37d64441 61
charly 2:d39f37d64441 62 while(1) {
charly 3:ebe0c4fa97b8 63 // time fast forward
charly 3:ebe0c4fa97b8 64 for (int h=0; h<=23; h++) {
charly 3:ebe0c4fa97b8 65 for (int m=0; m<=59; m++) {
charly 4:ed0ac1dd6ae4 66 for (int s=0;s<=59;s++){
charly 4:ed0ac1dd6ae4 67 clock.display_time(h,m,s);
charly 4:ed0ac1dd6ae4 68 wait_ms(5);
charly 4:ed0ac1dd6ae4 69 }
charly 3:ebe0c4fa97b8 70 }
charly 3:ebe0c4fa97b8 71 }
charly 3:ebe0c4fa97b8 72
charly 2:d39f37d64441 73 // all words
charly 3:ebe0c4fa97b8 74 for (int i=1; i<=NUMWORDS; i++) {
charly 2:d39f37d64441 75 clock.test_display(3,i);
charly 3:ebe0c4fa97b8 76 wait_ms(800);
charly 3:ebe0c4fa97b8 77 }
charly 2:d39f37d64441 78 //all leds on with rainbow colors
charly 2:d39f37d64441 79 while ( int(timer.read()/10.0) %2 == 0) {
charly 2:d39f37d64441 80 clock.test_display(1);
charly 2:d39f37d64441 81 wait_ms(100);
charly 2:d39f37d64441 82 }
charly 2:d39f37d64441 83 // every led on for 250ms
charly 3:ebe0c4fa97b8 84 for (int i=0; i<NUMLEDS; i++) {
charly 3:ebe0c4fa97b8 85 clock.test_display(2,i);
charly 3:ebe0c4fa97b8 86 wait_ms(250);
charly 3:ebe0c4fa97b8 87 }
charly 2:d39f37d64441 88 timer.reset();
charly 1:23535cfbf924 89 }
morecat_lab 0:afb6ebe20c1f 90 }
charly 2:d39f37d64441 91
morecat_lab 0:afb6ebe20c1f 92 }