Class to display Time in words on WS2812B-LED-Stripe. * Drive LEDs with PixelArray * with 11x10 LED-Matrix and 4 minute-LEDS * GERMAN LAYOUT !!!!!!
Details and usage see https://os.mbed.com/users/charly/code/WordClock/wiki/Homepage
WordClock.h@1:dd9657c12de6, 2017-11-06 (annotated)
- Committer:
- charly
- Date:
- Mon Nov 06 20:45:54 2017 +0000
- Revision:
- 1:dd9657c12de6
- Parent:
- 0:0f571ea154f8
added sz() and wz() for display of DST-Info
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
charly | 0:0f571ea154f8 | 1 | #ifndef WORDCLOCK_H |
charly | 0:0f571ea154f8 | 2 | #define WORDCLOCK_H |
charly | 0:0f571ea154f8 | 3 | |
charly | 0:0f571ea154f8 | 4 | #include "mbed.h" |
charly | 0:0f571ea154f8 | 5 | #include "neopixel.h" |
charly | 0:0f571ea154f8 | 6 | |
charly | 0:0f571ea154f8 | 7 | /** class to display Time on WS2812B-LED-Stripe |
charly | 0:0f571ea154f8 | 8 | * Drive LEDs with PixelArray |
charly | 0:0f571ea154f8 | 9 | * with 11x10 LED-Matrix and 4 minute-LEDS |
charly | 0:0f571ea154f8 | 10 | * |
charly | 0:0f571ea154f8 | 11 | * GERMAN LAYOUT !!!!!! |
charly | 0:0f571ea154f8 | 12 | * |
charly | 0:0f571ea154f8 | 13 | |
charly | 0:0f571ea154f8 | 14 | ESKISTLFÜNF |
charly | 0:0f571ea154f8 | 15 | ZEHNZWANZIG |
charly | 0:0f571ea154f8 | 16 | DREIVIERTEL |
charly | 0:0f571ea154f8 | 17 | TGNACHVORJM |
charly | 0:0f571ea154f8 | 18 | HALBXZWÖLFP |
charly | 0:0f571ea154f8 | 19 | ZWEINSIEBEN |
charly | 0:0f571ea154f8 | 20 | KDREIRHFÜNF |
charly | 0:0f571ea154f8 | 21 | ELFNEUNVIER |
charly | 0:0f571ea154f8 | 22 | WACHTZEHNRS |
charly | 0:0f571ea154f8 | 23 | BSECHSFMUHR |
charly | 0:0f571ea154f8 | 24 | **** |
charly | 0:0f571ea154f8 | 25 | |
charly | 0:0f571ea154f8 | 26 | */ |
charly | 0:0f571ea154f8 | 27 | |
charly | 0:0f571ea154f8 | 28 | // Number of LEDS in Stripe |
charly | 0:0f571ea154f8 | 29 | #define NUMLEDS 114 |
charly | 0:0f571ea154f8 | 30 | |
charly | 0:0f571ea154f8 | 31 | //Number of different words |
charly | 0:0f571ea154f8 | 32 | #define NUMWORDS 28 |
charly | 0:0f571ea154f8 | 33 | |
charly | 1:dd9657c12de6 | 34 | /** Class: WorldClock |
charly | 0:0f571ea154f8 | 35 | * A class to show time in words with LED-Stripe |
charly | 0:0f571ea154f8 | 36 | */ |
charly | 0:0f571ea154f8 | 37 | class WordClock { |
charly | 0:0f571ea154f8 | 38 | |
charly | 0:0f571ea154f8 | 39 | public: |
charly | 0:0f571ea154f8 | 40 | |
charly | 0:0f571ea154f8 | 41 | /** Create a WordClock Object with WS2812B-LEDs connected to pin (must be a SPI-MOSI-pin) |
charly | 0:0f571ea154f8 | 42 | * |
charly | 0:0f571ea154f8 | 43 | * @param pin SPI-MOSI pin to connect LEDs |
charly | 0:0f571ea154f8 | 44 | */ |
charly | 0:0f571ea154f8 | 45 | WordClock (PinName pin); |
charly | 0:0f571ea154f8 | 46 | |
charly | 0:0f571ea154f8 | 47 | /** display_time(hour, minute, second) |
charly | 0:0f571ea154f8 | 48 | * |
charly | 0:0f571ea154f8 | 49 | * @param time time to display |
charly | 0:0f571ea154f8 | 50 | * |
charly | 0:0f571ea154f8 | 51 | */ |
charly | 0:0f571ea154f8 | 52 | void display_time(int hour,int minute, int second = 0); |
charly | 0:0f571ea154f8 | 53 | |
charly | 0:0f571ea154f8 | 54 | /** test_display(int option) |
charly | 0:0f571ea154f8 | 55 | * |
charly | 0:0f571ea154f8 | 56 | * @param option option for test |
charly | 1:dd9657c12de6 | 57 | * 1 color gradient from red to red through hsv colors. |
charly | 1:dd9657c12de6 | 58 | * 2 display one LED in White, full brightness. |
charly | 1:dd9657c12de6 | 59 | * 3 display a word. |
charly | 0:0f571ea154f8 | 60 | * @param index index for test. Which LED/word to set. 0..NUMLEDS, 0..NUMWORDS |
charly | 0:0f571ea154f8 | 61 | * |
charly | 0:0f571ea154f8 | 62 | */ |
charly | 0:0f571ea154f8 | 63 | void test_display(int option, int index = 0); |
charly | 0:0f571ea154f8 | 64 | |
charly | 0:0f571ea154f8 | 65 | /** Convert a color from the HSV representation to RGB. |
charly | 0:0f571ea154f8 | 66 | * |
charly | 0:0f571ea154f8 | 67 | * @param h hue 0.0 ... 1.0 |
charly | 0:0f571ea154f8 | 68 | * @param s saturation 0.0 ... 1.0 |
charly | 0:0f571ea154f8 | 69 | * @param v value 0.0 ... 1.0 |
charly | 0:0f571ea154f8 | 70 | */ |
charly | 0:0f571ea154f8 | 71 | neopixel::Pixel hsvToRgb(float h, float s, float v); |
charly | 0:0f571ea154f8 | 72 | |
charly | 0:0f571ea154f8 | 73 | private : |
charly | 0:0f571ea154f8 | 74 | //clear ledstripe (without displaying) |
charly | 0:0f571ea154f8 | 75 | void cls(); |
charly | 0:0f571ea154f8 | 76 | |
charly | 0:0f571ea154f8 | 77 | // all words |
charly | 0:0f571ea154f8 | 78 | void es_ist(); |
charly | 0:0f571ea154f8 | 79 | void fuenf_m(); |
charly | 0:0f571ea154f8 | 80 | void zehn_m(); |
charly | 0:0f571ea154f8 | 81 | void zwanzig(); |
charly | 0:0f571ea154f8 | 82 | void drei_m(); |
charly | 0:0f571ea154f8 | 83 | void vier_m(); |
charly | 0:0f571ea154f8 | 84 | void tel(); |
charly | 0:0f571ea154f8 | 85 | void nach(); |
charly | 0:0f571ea154f8 | 86 | void vor(); |
charly | 0:0f571ea154f8 | 87 | void halb(); |
charly | 0:0f571ea154f8 | 88 | void zwoelf(); |
charly | 0:0f571ea154f8 | 89 | void zwei(); |
charly | 0:0f571ea154f8 | 90 | void eins(); |
charly | 0:0f571ea154f8 | 91 | void ein(); |
charly | 0:0f571ea154f8 | 92 | void sieben(); |
charly | 0:0f571ea154f8 | 93 | void drei_h(); |
charly | 0:0f571ea154f8 | 94 | void fuenf_h(); |
charly | 0:0f571ea154f8 | 95 | void elf(); |
charly | 0:0f571ea154f8 | 96 | void neun(); |
charly | 0:0f571ea154f8 | 97 | void vier_h(); |
charly | 0:0f571ea154f8 | 98 | void acht(); |
charly | 0:0f571ea154f8 | 99 | void zehn_h(); |
charly | 0:0f571ea154f8 | 100 | void sechs(); |
charly | 0:0f571ea154f8 | 101 | void uhr(); |
charly | 0:0f571ea154f8 | 102 | void m1(int second = 59); |
charly | 0:0f571ea154f8 | 103 | void m2(int second = 59); |
charly | 0:0f571ea154f8 | 104 | void m3(int second = 59); |
charly | 0:0f571ea154f8 | 105 | void m4(int second = 59); |
charly | 1:dd9657c12de6 | 106 | |
charly | 1:dd9657c12de6 | 107 | public: |
charly | 1:dd9657c12de6 | 108 | /** display SZ for Sommerzeit |
charly | 1:dd9657c12de6 | 109 | */ |
charly | 1:dd9657c12de6 | 110 | void sz(); //Sommerzeit |
charly | 1:dd9657c12de6 | 111 | /** display WZ for Winterzeit |
charly | 1:dd9657c12de6 | 112 | */ |
charly | 1:dd9657c12de6 | 113 | void wz(); //Winterzeit |
charly | 1:dd9657c12de6 | 114 | private: |
charly | 0:0f571ea154f8 | 115 | |
charly | 0:0f571ea154f8 | 116 | //Digitalin for Pulldown |
charly | 0:0f571ea154f8 | 117 | DigitalIn di_pin_; |
charly | 0:0f571ea154f8 | 118 | |
charly | 0:0f571ea154f8 | 119 | // The pixel array control class. |
charly | 0:0f571ea154f8 | 120 | neopixel::PixelArray array_; |
charly | 0:0f571ea154f8 | 121 | |
charly | 0:0f571ea154f8 | 122 | // the array of leds |
charly | 0:0f571ea154f8 | 123 | neopixel::Pixel ledstripe_[NUMLEDS]; |
charly | 0:0f571ea154f8 | 124 | |
charly | 0:0f571ea154f8 | 125 | |
charly | 0:0f571ea154f8 | 126 | //Hue-Value (HSV)for LEDS |
charly | 0:0f571ea154f8 | 127 | float hue_; |
charly | 0:0f571ea154f8 | 128 | |
charly | 0:0f571ea154f8 | 129 | // Saturation (HSV)for LEDs |
charly | 0:0f571ea154f8 | 130 | float saturation_; |
charly | 0:0f571ea154f8 | 131 | |
charly | 0:0f571ea154f8 | 132 | //brightness/value(HSV) for LEDS |
charly | 0:0f571ea154f8 | 133 | float value_; |
charly | 0:0f571ea154f8 | 134 | |
charly | 0:0f571ea154f8 | 135 | }; |
charly | 0:0f571ea154f8 | 136 | |
charly | 0:0f571ea154f8 | 137 | #endif |