Class to display Time in words on WS2812B-LED-Stripe. * Drive LEDs with PixelArray * with 11x10 LED-Matrix and 4 minute-LEDS * GERMAN LAYOUT !!!!!!

Dependents:   WordClock

Details and usage see https://os.mbed.com/users/charly/code/WordClock/wiki/Homepage

Committer:
charly
Date:
Tue Nov 07 18:27:32 2017 +0000
Revision:
2:284c13980da8
Parent:
1:dd9657c12de6
"UHR" only on full hours

Who changed what in which revision?

UserRevisionLine numberNew contents of line
charly 0:0f571ea154f8 1 #include "mbed.h"
charly 0:0f571ea154f8 2 #include "WordClock.h"
charly 0:0f571ea154f8 3 #include "neopixel.h"
charly 0:0f571ea154f8 4
charly 0:0f571ea154f8 5 WordClock::WordClock (PinName pin) : di_pin_(pin, PullDown), array_(pin)
charly 0:0f571ea154f8 6 {
charly 0:0f571ea154f8 7
charly 0:0f571ea154f8 8 // Create a temporary DigitalIn so we can configure the pull-down resistor.
charly 0:0f571ea154f8 9 // (The mbed API doesn't provide any other way to do this.)
charly 0:0f571ea154f8 10 // An alternative is to connect an external pull-down resistor.
charly 0:0f571ea154f8 11 //DigitalIn(pin, PullDown);
charly 0:0f571ea154f8 12 // The pixel array control class.
charly 0:0f571ea154f8 13 //neopixel::PixelArray array(pin);
charly 0:0f571ea154f8 14
charly 0:0f571ea154f8 15 // initialize hsv
charly 0:0f571ea154f8 16 //hue_ = 0.0; //red
charly 0:0f571ea154f8 17 hue_ = 0.2917; //limett-green
charly 0:0f571ea154f8 18 saturation_ = 1.0; //full color
charly 0:0f571ea154f8 19 value_ = 1.0; //brightness
charly 0:0f571ea154f8 20
charly 0:0f571ea154f8 21 }
charly 0:0f571ea154f8 22
charly 0:0f571ea154f8 23 /** Convert a color from the HSV representation to RGB.
charly 0:0f571ea154f8 24 *
charly 0:0f571ea154f8 25 * @param h hue 0.0 ... 1.0
charly 0:0f571ea154f8 26 * @param s saturation 0.0 ... 1.0
charly 0:0f571ea154f8 27 * @param v value 0.0 ... 1.0
charly 0:0f571ea154f8 28 */
charly 0:0f571ea154f8 29 neopixel::Pixel WordClock::hsvToRgb(float h, float s, float v)
charly 0:0f571ea154f8 30 {
charly 0:0f571ea154f8 31 int i = floor(h * 6);
charly 0:0f571ea154f8 32 float f = h * 6 - i;
charly 0:0f571ea154f8 33 float p = v * (1 - s);
charly 0:0f571ea154f8 34 float q = v * (1 - f * s);
charly 0:0f571ea154f8 35 float t = v * (1 - (1 - f) * s);
charly 0:0f571ea154f8 36 float r = 0, g = 0, b = 0;
charly 0:0f571ea154f8 37 switch(i % 6) {
charly 0:0f571ea154f8 38 case 0:
charly 0:0f571ea154f8 39 r = v;
charly 0:0f571ea154f8 40 g = t;
charly 0:0f571ea154f8 41 b = p;
charly 0:0f571ea154f8 42 break;
charly 0:0f571ea154f8 43 case 1:
charly 0:0f571ea154f8 44 r = q;
charly 0:0f571ea154f8 45 g = v;
charly 0:0f571ea154f8 46 b = p;
charly 0:0f571ea154f8 47 break;
charly 0:0f571ea154f8 48 case 2:
charly 0:0f571ea154f8 49 r = p;
charly 0:0f571ea154f8 50 g = v;
charly 0:0f571ea154f8 51 b = t;
charly 0:0f571ea154f8 52 break;
charly 0:0f571ea154f8 53 case 3:
charly 0:0f571ea154f8 54 r = p;
charly 0:0f571ea154f8 55 g = q;
charly 0:0f571ea154f8 56 b = v;
charly 0:0f571ea154f8 57 break;
charly 0:0f571ea154f8 58 case 4:
charly 0:0f571ea154f8 59 r = t;
charly 0:0f571ea154f8 60 g = p;
charly 0:0f571ea154f8 61 b = v;
charly 0:0f571ea154f8 62 break;
charly 0:0f571ea154f8 63 case 5:
charly 0:0f571ea154f8 64 r = v;
charly 0:0f571ea154f8 65 g = p;
charly 0:0f571ea154f8 66 b = q;
charly 0:0f571ea154f8 67 break;
charly 0:0f571ea154f8 68 }
charly 0:0f571ea154f8 69 return (neopixel::Pixel) {
charly 0:0f571ea154f8 70 r * 255, g * 255, b * 255
charly 0:0f571ea154f8 71 };
charly 0:0f571ea154f8 72 }
charly 0:0f571ea154f8 73
charly 0:0f571ea154f8 74 void WordClock::cls()
charly 0:0f571ea154f8 75 {
charly 0:0f571ea154f8 76 int i;
charly 0:0f571ea154f8 77 for (i=0; i<NUMLEDS; i++) {
charly 0:0f571ea154f8 78 ledstripe_[i].red=0;
charly 0:0f571ea154f8 79 ledstripe_[i].green=0;
charly 0:0f571ea154f8 80 ledstripe_[i].blue=0;
charly 0:0f571ea154f8 81 }
charly 0:0f571ea154f8 82 }
charly 0:0f571ea154f8 83
charly 0:0f571ea154f8 84 void WordClock::es_ist()
charly 0:0f571ea154f8 85 {
charly 0:0f571ea154f8 86 ledstripe_[0] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 87 ledstripe_[1] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 88 ledstripe_[3] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 89 ledstripe_[4] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 90 ledstripe_[5] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 91 }
charly 0:0f571ea154f8 92 void WordClock::fuenf_m()
charly 0:0f571ea154f8 93 {
charly 0:0f571ea154f8 94 ledstripe_[7] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 95 ledstripe_[8] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 96 ledstripe_[9] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 97 ledstripe_[10]= hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 98 }
charly 0:0f571ea154f8 99 void WordClock::zehn_m()
charly 0:0f571ea154f8 100 {
charly 0:0f571ea154f8 101 ledstripe_[21] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 102 ledstripe_[20] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 103 ledstripe_[19] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 104 ledstripe_[18] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 105 }
charly 0:0f571ea154f8 106
charly 0:0f571ea154f8 107 void WordClock::zwanzig()
charly 0:0f571ea154f8 108 {
charly 0:0f571ea154f8 109 ledstripe_[17] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 110 ledstripe_[16] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 111 ledstripe_[15] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 112 ledstripe_[14] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 113 ledstripe_[13] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 114 ledstripe_[12] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 115 ledstripe_[11] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 116 }
charly 0:0f571ea154f8 117
charly 0:0f571ea154f8 118 void WordClock::drei_m()
charly 0:0f571ea154f8 119 {
charly 0:0f571ea154f8 120 ledstripe_[22] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 121 ledstripe_[23] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 122 ledstripe_[24] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 123 ledstripe_[25] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 124 }
charly 0:0f571ea154f8 125
charly 0:0f571ea154f8 126 void WordClock::vier_m()
charly 0:0f571ea154f8 127 {
charly 0:0f571ea154f8 128 ledstripe_[26] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 129 ledstripe_[27] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 130 ledstripe_[28] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 131 ledstripe_[29] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 132 }
charly 0:0f571ea154f8 133
charly 0:0f571ea154f8 134 void WordClock::tel()
charly 0:0f571ea154f8 135 {
charly 0:0f571ea154f8 136 ledstripe_[30] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 137 ledstripe_[31] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 138 ledstripe_[32] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 139 }
charly 0:0f571ea154f8 140
charly 0:0f571ea154f8 141 void WordClock::nach()
charly 0:0f571ea154f8 142 {
charly 0:0f571ea154f8 143 ledstripe_[41] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 144 ledstripe_[40] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 145 ledstripe_[39] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 146 ledstripe_[38] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 147 }
charly 0:0f571ea154f8 148
charly 0:0f571ea154f8 149 void WordClock::vor()
charly 0:0f571ea154f8 150 {
charly 0:0f571ea154f8 151 ledstripe_[37] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 152 ledstripe_[36] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 153 ledstripe_[35] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 154 }
charly 0:0f571ea154f8 155
charly 0:0f571ea154f8 156 void WordClock::halb()
charly 0:0f571ea154f8 157 {
charly 0:0f571ea154f8 158 ledstripe_[44] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 159 ledstripe_[45] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 160 ledstripe_[46] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 161 ledstripe_[47] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 162 }
charly 0:0f571ea154f8 163
charly 0:0f571ea154f8 164 void WordClock::zwoelf()
charly 0:0f571ea154f8 165 {
charly 0:0f571ea154f8 166 ledstripe_[49] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 167 ledstripe_[50] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 168 ledstripe_[51] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 169 ledstripe_[52] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 170 ledstripe_[53] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 171 }
charly 0:0f571ea154f8 172
charly 0:0f571ea154f8 173 void WordClock::zwei()
charly 0:0f571ea154f8 174 {
charly 0:0f571ea154f8 175 ledstripe_[65] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 176 ledstripe_[64] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 177 ledstripe_[63] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 178 ledstripe_[62] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 179 }
charly 0:0f571ea154f8 180
charly 0:0f571ea154f8 181 void WordClock::eins()
charly 0:0f571ea154f8 182 {
charly 0:0f571ea154f8 183 ledstripe_[63] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 184 ledstripe_[62] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 185 ledstripe_[61] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 186 ledstripe_[60] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 187 }
charly 0:0f571ea154f8 188
charly 0:0f571ea154f8 189 void WordClock::ein()
charly 0:0f571ea154f8 190 {
charly 0:0f571ea154f8 191 ledstripe_[63] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 192 ledstripe_[62] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 193 ledstripe_[61] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 194 }
charly 0:0f571ea154f8 195
charly 0:0f571ea154f8 196 void WordClock::sieben()
charly 0:0f571ea154f8 197 {
charly 0:0f571ea154f8 198 ledstripe_[60] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 199 ledstripe_[59] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 200 ledstripe_[58] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 201 ledstripe_[57] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 202 ledstripe_[56] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 203 ledstripe_[55] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 204
charly 0:0f571ea154f8 205 }
charly 0:0f571ea154f8 206
charly 0:0f571ea154f8 207 void WordClock::drei_h()
charly 0:0f571ea154f8 208 {
charly 0:0f571ea154f8 209 ledstripe_[67] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 210 ledstripe_[68] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 211 ledstripe_[69] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 212 ledstripe_[70] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 213 }
charly 0:0f571ea154f8 214
charly 0:0f571ea154f8 215 void WordClock::fuenf_h()
charly 0:0f571ea154f8 216 {
charly 0:0f571ea154f8 217 ledstripe_[73] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 218 ledstripe_[74] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 219 ledstripe_[75] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 220 ledstripe_[76] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 221 }
charly 0:0f571ea154f8 222
charly 0:0f571ea154f8 223 void WordClock::elf()
charly 0:0f571ea154f8 224 {
charly 0:0f571ea154f8 225 ledstripe_[87] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 226 ledstripe_[86] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 227 ledstripe_[85] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 228 }
charly 0:0f571ea154f8 229
charly 0:0f571ea154f8 230 void WordClock::neun()
charly 0:0f571ea154f8 231 {
charly 0:0f571ea154f8 232 ledstripe_[84] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 233 ledstripe_[83] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 234 ledstripe_[82] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 235 ledstripe_[81] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 236 }
charly 0:0f571ea154f8 237
charly 0:0f571ea154f8 238 void WordClock::vier_h()
charly 0:0f571ea154f8 239 {
charly 0:0f571ea154f8 240 ledstripe_[80] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 241 ledstripe_[79] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 242 ledstripe_[78] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 243 ledstripe_[77] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 244 }
charly 0:0f571ea154f8 245
charly 0:0f571ea154f8 246 void WordClock::acht()
charly 0:0f571ea154f8 247 {
charly 0:0f571ea154f8 248 ledstripe_[89] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 249 ledstripe_[90] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 250 ledstripe_[91] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 251 ledstripe_[92] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 252 }
charly 0:0f571ea154f8 253
charly 0:0f571ea154f8 254 void WordClock::zehn_h()
charly 0:0f571ea154f8 255 {
charly 0:0f571ea154f8 256 ledstripe_[93] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 257 ledstripe_[94] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 258 ledstripe_[95] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 259 ledstripe_[96] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 260 }
charly 0:0f571ea154f8 261
charly 0:0f571ea154f8 262 void WordClock::sechs()
charly 0:0f571ea154f8 263 {
charly 0:0f571ea154f8 264 ledstripe_[108] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 265 ledstripe_[107] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 266 ledstripe_[106] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 267 ledstripe_[105] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 268 ledstripe_[104] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 269 }
charly 0:0f571ea154f8 270
charly 0:0f571ea154f8 271 void WordClock::uhr()
charly 0:0f571ea154f8 272 {
charly 0:0f571ea154f8 273 ledstripe_[101] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 274 ledstripe_[100] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 275 ledstripe_[99] = hsvToRgb(hue_, saturation_, value_);
charly 0:0f571ea154f8 276 }
charly 0:0f571ea154f8 277
charly 0:0f571ea154f8 278 void WordClock::m1(int second)
charly 0:0f571ea154f8 279 {
charly 0:0f571ea154f8 280 ledstripe_[110] = hsvToRgb(hue_, saturation_, float(second)/60);
charly 0:0f571ea154f8 281 }
charly 0:0f571ea154f8 282
charly 0:0f571ea154f8 283 void WordClock::m2(int second)
charly 0:0f571ea154f8 284 {
charly 0:0f571ea154f8 285 ledstripe_[111] = hsvToRgb(hue_, saturation_, float(second)/60);
charly 0:0f571ea154f8 286 }
charly 0:0f571ea154f8 287
charly 0:0f571ea154f8 288 void WordClock::m3(int second)
charly 0:0f571ea154f8 289 {
charly 0:0f571ea154f8 290 ledstripe_[112] = hsvToRgb(hue_, saturation_, float(second)/60);
charly 0:0f571ea154f8 291 }
charly 0:0f571ea154f8 292
charly 0:0f571ea154f8 293 void WordClock::m4(int second)
charly 0:0f571ea154f8 294 {
charly 0:0f571ea154f8 295 ledstripe_[113] = hsvToRgb(hue_, saturation_, float(second)/60);
charly 0:0f571ea154f8 296 }
charly 0:0f571ea154f8 297
charly 1:dd9657c12de6 298 void WordClock::sz()
charly 1:dd9657c12de6 299 {
charly 1:dd9657c12de6 300 cls();
charly 1:dd9657c12de6 301 ledstripe_[4] = hsvToRgb(hue_, saturation_, value_);
charly 1:dd9657c12de6 302 ledstripe_[17] = hsvToRgb(hue_, saturation_, value_);
charly 1:dd9657c12de6 303 array_.update(ledstripe_,NUMLEDS);
charly 1:dd9657c12de6 304 }
charly 1:dd9657c12de6 305
charly 1:dd9657c12de6 306 void WordClock::wz()
charly 1:dd9657c12de6 307 {
charly 1:dd9657c12de6 308 cls();
charly 1:dd9657c12de6 309 ledstripe_[16] = hsvToRgb(hue_, saturation_, value_);
charly 1:dd9657c12de6 310 ledstripe_[13] = hsvToRgb(hue_, saturation_, value_);
charly 1:dd9657c12de6 311 array_.update(ledstripe_,NUMLEDS);
charly 1:dd9657c12de6 312 }
charly 0:0f571ea154f8 313
charly 0:0f571ea154f8 314 void WordClock::test_display(int option, int index)
charly 0:0f571ea154f8 315 {
charly 0:0f571ea154f8 316 cls();
charly 0:0f571ea154f8 317 //build and display the content of ledarray
charly 0:0f571ea154f8 318 switch (option) {
charly 0:0f571ea154f8 319 case 1 : {
charly 0:0f571ea154f8 320 // color gradient from red to red through hsv colors
charly 0:0f571ea154f8 321 for (int i=0; i<NUMLEDS; i++) {
charly 0:0f571ea154f8 322 ledstripe_[i] = hsvToRgb(1.0*i/NUMLEDS, saturation_, value_);
charly 0:0f571ea154f8 323 }
charly 0:0f571ea154f8 324 array_.update(ledstripe_,NUMLEDS);
charly 0:0f571ea154f8 325 break;
charly 0:0f571ea154f8 326 }
charly 0:0f571ea154f8 327 case 2 : {
charly 1:dd9657c12de6 328 //display one LED in White, full brightness
charly 0:0f571ea154f8 329 ledstripe_[index] = hsvToRgb(1.0, 0.0, 1.0);//white
charly 0:0f571ea154f8 330 array_.update(ledstripe_,NUMLEDS);
charly 0:0f571ea154f8 331 break;
charly 0:0f571ea154f8 332 }
charly 0:0f571ea154f8 333 case 3 : {
charly 0:0f571ea154f8 334 //display a word
charly 0:0f571ea154f8 335 cls();
charly 0:0f571ea154f8 336 switch (index) {
charly 0:0f571ea154f8 337 case 1: {
charly 0:0f571ea154f8 338 es_ist();
charly 0:0f571ea154f8 339 break;
charly 0:0f571ea154f8 340 }
charly 0:0f571ea154f8 341 case 2: {
charly 0:0f571ea154f8 342 fuenf_m();
charly 0:0f571ea154f8 343 break;
charly 0:0f571ea154f8 344 }
charly 0:0f571ea154f8 345 case 3: {
charly 0:0f571ea154f8 346 zehn_m();
charly 0:0f571ea154f8 347 break;
charly 0:0f571ea154f8 348 }
charly 0:0f571ea154f8 349 case 4: {
charly 0:0f571ea154f8 350 zwanzig();
charly 0:0f571ea154f8 351 break;
charly 0:0f571ea154f8 352 }
charly 0:0f571ea154f8 353 case 5: {
charly 0:0f571ea154f8 354 drei_m();
charly 0:0f571ea154f8 355 break;
charly 0:0f571ea154f8 356 }
charly 0:0f571ea154f8 357 case 6: {
charly 0:0f571ea154f8 358 vier_m();
charly 0:0f571ea154f8 359 break;
charly 0:0f571ea154f8 360 }
charly 0:0f571ea154f8 361 case 7: {
charly 0:0f571ea154f8 362 tel();
charly 0:0f571ea154f8 363 break;
charly 0:0f571ea154f8 364 }
charly 0:0f571ea154f8 365 case 8: {
charly 0:0f571ea154f8 366 nach();
charly 0:0f571ea154f8 367 break;
charly 0:0f571ea154f8 368 }
charly 0:0f571ea154f8 369 case 9: {
charly 0:0f571ea154f8 370 vor();
charly 0:0f571ea154f8 371 break;
charly 0:0f571ea154f8 372 }
charly 0:0f571ea154f8 373 case 10: {
charly 0:0f571ea154f8 374 halb();
charly 0:0f571ea154f8 375 break;
charly 0:0f571ea154f8 376 }
charly 0:0f571ea154f8 377 case 11: {
charly 0:0f571ea154f8 378 zwoelf();
charly 0:0f571ea154f8 379 break;
charly 0:0f571ea154f8 380 }
charly 0:0f571ea154f8 381 case 12: {
charly 0:0f571ea154f8 382 zwei();
charly 0:0f571ea154f8 383 break;
charly 0:0f571ea154f8 384 }
charly 0:0f571ea154f8 385 case 13: {
charly 0:0f571ea154f8 386 eins();
charly 0:0f571ea154f8 387 break;
charly 0:0f571ea154f8 388 }
charly 0:0f571ea154f8 389 case 14: {
charly 0:0f571ea154f8 390 sieben();
charly 0:0f571ea154f8 391 break;
charly 0:0f571ea154f8 392 }
charly 0:0f571ea154f8 393 case 15: {
charly 0:0f571ea154f8 394 drei_h();
charly 0:0f571ea154f8 395 break;
charly 0:0f571ea154f8 396 }
charly 0:0f571ea154f8 397 case 16: {
charly 0:0f571ea154f8 398 fuenf_h();
charly 0:0f571ea154f8 399 break;
charly 0:0f571ea154f8 400 }
charly 0:0f571ea154f8 401 case 17: {
charly 0:0f571ea154f8 402 elf();
charly 0:0f571ea154f8 403 break;
charly 0:0f571ea154f8 404 }
charly 0:0f571ea154f8 405 case 18: {
charly 0:0f571ea154f8 406 neun();
charly 0:0f571ea154f8 407 break;
charly 0:0f571ea154f8 408 }
charly 0:0f571ea154f8 409 case 19: {
charly 0:0f571ea154f8 410 vier_h();
charly 0:0f571ea154f8 411 break;
charly 0:0f571ea154f8 412 }
charly 0:0f571ea154f8 413 case 20: {
charly 0:0f571ea154f8 414 acht();
charly 0:0f571ea154f8 415 break;
charly 0:0f571ea154f8 416 }
charly 0:0f571ea154f8 417 case 21: {
charly 0:0f571ea154f8 418 zehn_h();
charly 0:0f571ea154f8 419 break;
charly 0:0f571ea154f8 420 }
charly 0:0f571ea154f8 421 case 22: {
charly 0:0f571ea154f8 422 sechs();
charly 0:0f571ea154f8 423 break;
charly 0:0f571ea154f8 424 }
charly 0:0f571ea154f8 425 case 23: {
charly 0:0f571ea154f8 426 uhr();
charly 0:0f571ea154f8 427 break;
charly 0:0f571ea154f8 428 }
charly 0:0f571ea154f8 429 case 24: {
charly 0:0f571ea154f8 430 m1();
charly 0:0f571ea154f8 431 break;
charly 0:0f571ea154f8 432 }
charly 0:0f571ea154f8 433 case 25: {
charly 0:0f571ea154f8 434 m2();
charly 0:0f571ea154f8 435 break;
charly 0:0f571ea154f8 436 }
charly 0:0f571ea154f8 437 case 26: {
charly 0:0f571ea154f8 438 m3();
charly 0:0f571ea154f8 439 break;
charly 0:0f571ea154f8 440 }
charly 0:0f571ea154f8 441 case 27: {
charly 0:0f571ea154f8 442 m4();
charly 0:0f571ea154f8 443 break;
charly 0:0f571ea154f8 444 }
charly 0:0f571ea154f8 445 case 28: {
charly 0:0f571ea154f8 446 ein();
charly 0:0f571ea154f8 447 break;
charly 0:0f571ea154f8 448 }
charly 0:0f571ea154f8 449
charly 0:0f571ea154f8 450
charly 0:0f571ea154f8 451 }//switch
charly 0:0f571ea154f8 452 array_.update(ledstripe_,NUMLEDS);
charly 0:0f571ea154f8 453 break;
charly 0:0f571ea154f8 454 }
charly 0:0f571ea154f8 455 }//switch
charly 0:0f571ea154f8 456 }
charly 0:0f571ea154f8 457
charly 0:0f571ea154f8 458 void WordClock::display_time(int hour,int minute, int second)
charly 0:0f571ea154f8 459 {
charly 0:0f571ea154f8 460 //display the time in words
charly 0:0f571ea154f8 461 if (hour < 0 ) hour = 0;
charly 0:0f571ea154f8 462 if (hour > 23 ) hour = 23;
charly 0:0f571ea154f8 463 if (minute < 0) minute = 0;
charly 0:0f571ea154f8 464 if (minute > 59) minute = 59;
charly 0:0f571ea154f8 465 if (second < 0) second = 0;
charly 0:0f571ea154f8 466 if (second > 59) second = 59;
charly 0:0f571ea154f8 467
charly 0:0f571ea154f8 468 //set the color depending on the hour
charly 0:0f571ea154f8 469 hue_ = float(hour)/24;
charly 0:0f571ea154f8 470
charly 0:0f571ea154f8 471 cls();
charly 0:0f571ea154f8 472 es_ist();
charly 0:0f571ea154f8 473 //minutes
charly 0:0f571ea154f8 474 if (minute >=5 and minute <10) {
charly 0:0f571ea154f8 475 fuenf_m();
charly 0:0f571ea154f8 476 nach();
charly 0:0f571ea154f8 477 }
charly 0:0f571ea154f8 478 if (minute >=10 and minute <15) {
charly 0:0f571ea154f8 479 zehn_m();
charly 0:0f571ea154f8 480 nach();
charly 0:0f571ea154f8 481 }
charly 0:0f571ea154f8 482 if (minute >=15 and minute <20) {
charly 0:0f571ea154f8 483 vier_m();
charly 0:0f571ea154f8 484 tel();
charly 0:0f571ea154f8 485 nach();
charly 0:0f571ea154f8 486 }
charly 0:0f571ea154f8 487 if (minute >=20 and minute <25) {
charly 0:0f571ea154f8 488 zwanzig();
charly 0:0f571ea154f8 489 nach();
charly 0:0f571ea154f8 490 }
charly 0:0f571ea154f8 491 if (minute >=25 and minute <30) {
charly 0:0f571ea154f8 492 fuenf_m();
charly 0:0f571ea154f8 493 vor();
charly 0:0f571ea154f8 494 halb();
charly 0:0f571ea154f8 495 hour++;
charly 0:0f571ea154f8 496 }
charly 0:0f571ea154f8 497 if (minute >= 30 and minute<35) {
charly 0:0f571ea154f8 498 halb();
charly 0:0f571ea154f8 499 hour++;
charly 0:0f571ea154f8 500 }
charly 0:0f571ea154f8 501 if (minute >=35 and minute<40) {
charly 0:0f571ea154f8 502 fuenf_m();
charly 0:0f571ea154f8 503 nach();
charly 0:0f571ea154f8 504 halb();
charly 0:0f571ea154f8 505 hour++;
charly 0:0f571ea154f8 506 }
charly 0:0f571ea154f8 507 if (minute >=40 and minute<45) {
charly 0:0f571ea154f8 508 zwanzig();
charly 0:0f571ea154f8 509 vor();
charly 0:0f571ea154f8 510 hour++;
charly 0:0f571ea154f8 511 }
charly 0:0f571ea154f8 512 if (minute >=45 and minute<50) {
charly 0:0f571ea154f8 513 drei_m();
charly 0:0f571ea154f8 514 vier_m();
charly 0:0f571ea154f8 515 tel();
charly 0:0f571ea154f8 516 hour++;
charly 0:0f571ea154f8 517 }
charly 0:0f571ea154f8 518 if (minute >=50 and minute<55) {
charly 0:0f571ea154f8 519 zehn_m();
charly 0:0f571ea154f8 520 vor();
charly 0:0f571ea154f8 521 hour++;
charly 0:0f571ea154f8 522 }
charly 0:0f571ea154f8 523 if (minute >=55 and minute<60) {
charly 0:0f571ea154f8 524 fuenf_m();
charly 0:0f571ea154f8 525 vor();
charly 0:0f571ea154f8 526 hour++;
charly 0:0f571ea154f8 527 }
charly 0:0f571ea154f8 528 //hours
charly 0:0f571ea154f8 529 if (hour >=13) hour -= 12;
charly 0:0f571ea154f8 530 switch (hour){
charly 0:0f571ea154f8 531 case 0:{
charly 0:0f571ea154f8 532 zwoelf();
charly 0:0f571ea154f8 533 break;
charly 0:0f571ea154f8 534 }
charly 0:0f571ea154f8 535 case 1:{
charly 2:284c13980da8 536 if (minute < 5) {
charly 2:284c13980da8 537 ein();
charly 2:284c13980da8 538 }else{
charly 2:284c13980da8 539 eins();
charly 2:284c13980da8 540 }
charly 0:0f571ea154f8 541 break;
charly 0:0f571ea154f8 542 }
charly 0:0f571ea154f8 543 case 2:{
charly 0:0f571ea154f8 544 zwei();
charly 0:0f571ea154f8 545 break;
charly 0:0f571ea154f8 546 }
charly 0:0f571ea154f8 547 case 3:{
charly 0:0f571ea154f8 548 drei_h();
charly 0:0f571ea154f8 549 break;
charly 0:0f571ea154f8 550 }
charly 0:0f571ea154f8 551 case 4:{
charly 0:0f571ea154f8 552 vier_h();
charly 0:0f571ea154f8 553 break;
charly 0:0f571ea154f8 554 }
charly 0:0f571ea154f8 555 case 5:{
charly 0:0f571ea154f8 556 fuenf_h();
charly 0:0f571ea154f8 557 break;
charly 0:0f571ea154f8 558 }
charly 0:0f571ea154f8 559 case 6:{
charly 0:0f571ea154f8 560 sechs();
charly 0:0f571ea154f8 561 break;
charly 0:0f571ea154f8 562 }
charly 0:0f571ea154f8 563 case 7:{
charly 0:0f571ea154f8 564 sieben();
charly 0:0f571ea154f8 565 break;
charly 0:0f571ea154f8 566 }
charly 0:0f571ea154f8 567 case 8:{
charly 0:0f571ea154f8 568 acht();
charly 0:0f571ea154f8 569 break;
charly 0:0f571ea154f8 570 }
charly 0:0f571ea154f8 571 case 9:{
charly 0:0f571ea154f8 572 neun();
charly 0:0f571ea154f8 573 break;
charly 0:0f571ea154f8 574 }
charly 0:0f571ea154f8 575 case 10:{
charly 0:0f571ea154f8 576 zehn_h();
charly 0:0f571ea154f8 577 break;
charly 0:0f571ea154f8 578 }
charly 0:0f571ea154f8 579 case 11:{
charly 0:0f571ea154f8 580 elf();
charly 0:0f571ea154f8 581 break;
charly 0:0f571ea154f8 582 }
charly 0:0f571ea154f8 583 case 12:{
charly 0:0f571ea154f8 584 zwoelf();
charly 0:0f571ea154f8 585 break;
charly 0:0f571ea154f8 586 }
charly 0:0f571ea154f8 587 }//switch hour
charly 2:284c13980da8 588
charly 2:284c13980da8 589 //only on full hours
charly 2:284c13980da8 590 if (minute < 5) {
charly 2:284c13980da8 591 uhr();
charly 2:284c13980da8 592 }
charly 0:0f571ea154f8 593
charly 0:0f571ea154f8 594 //minutes 0..4 and seconds in brigtness
charly 0:0f571ea154f8 595 switch (minute%5){
charly 0:0f571ea154f8 596 case 0:{
charly 0:0f571ea154f8 597 m1(second);
charly 0:0f571ea154f8 598 break;
charly 0:0f571ea154f8 599 }
charly 0:0f571ea154f8 600 case 1:{
charly 0:0f571ea154f8 601 m1();
charly 0:0f571ea154f8 602 m2(second);
charly 0:0f571ea154f8 603 break;
charly 0:0f571ea154f8 604 }
charly 0:0f571ea154f8 605 case 2:{
charly 0:0f571ea154f8 606 m1();
charly 0:0f571ea154f8 607 m2();
charly 0:0f571ea154f8 608 m3(second);
charly 0:0f571ea154f8 609 break;
charly 0:0f571ea154f8 610 }
charly 0:0f571ea154f8 611 case 3:{
charly 0:0f571ea154f8 612 m1();
charly 0:0f571ea154f8 613 m2();
charly 0:0f571ea154f8 614 m3();
charly 0:0f571ea154f8 615 m4(second);
charly 0:0f571ea154f8 616 break;
charly 0:0f571ea154f8 617 }
charly 0:0f571ea154f8 618 case 4:{
charly 0:0f571ea154f8 619 // we don't have a 5th led for minute 4..5
charly 0:0f571ea154f8 620 // dim down all 4 LEDs
charly 0:0f571ea154f8 621 m1(59-second);
charly 0:0f571ea154f8 622 m2(59-second);
charly 0:0f571ea154f8 623 m3(59-second);
charly 0:0f571ea154f8 624 m4(59-second);
charly 0:0f571ea154f8 625 break;
charly 0:0f571ea154f8 626 }
charly 0:0f571ea154f8 627 }//switch minute%5
charly 0:0f571ea154f8 628 //display the LED-Array
charly 0:0f571ea154f8 629 array_.update(ledstripe_,NUMLEDS);
charly 0:0f571ea154f8 630 }