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
WordClock
Yet another wordclock...
Program for displaying time in (german) words on WS2812B LED-Matrix. Uses DS3231 RTC .
More fotos see:
https://photos.app.goo.gl/mSN6G145IdupbKv13
main.cpp@4:ed0ac1dd6ae4, 2017-11-05 (annotated)
- 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?
User | Revision | Line number | New 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 | } |