Light Show library for organic, calm, light display.
Dependencies: BLE_API mbed nRF51822
Fork of mbed_blinky by
rgb_led.cpp@23:4bb74b53e112, 2016-01-29 (annotated)
- Committer:
- nargetdev
- Date:
- Fri Jan 29 20:22:02 2016 +0000
- Revision:
- 23:4bb74b53e112
- Child:
- 24:52319c0a14b8
uggh
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nargetdev | 23:4bb74b53e112 | 1 | #include "rgb_led.h" |
nargetdev | 23:4bb74b53e112 | 2 | |
nargetdev | 23:4bb74b53e112 | 3 | |
nargetdev | 23:4bb74b53e112 | 4 | void Rgb::randomize_params() |
nargetdev | 23:4bb74b53e112 | 5 | { |
nargetdev | 23:4bb74b53e112 | 6 | float rand_seed = t.read(); |
nargetdev | 23:4bb74b53e112 | 7 | pc.printf("%f\n\r", rand_seed); |
nargetdev | 23:4bb74b53e112 | 8 | int rand_int = t.read() * 7919; |
nargetdev | 23:4bb74b53e112 | 9 | |
nargetdev | 23:4bb74b53e112 | 10 | time_t seconds = time(NULL); |
nargetdev | 23:4bb74b53e112 | 11 | pc.printf("Time as seconds since January 1, 1970 = %d\n\r", seconds); |
nargetdev | 23:4bb74b53e112 | 12 | |
nargetdev | 23:4bb74b53e112 | 13 | srand(rand_int); |
nargetdev | 23:4bb74b53e112 | 14 | pc.printf("A random %d\r\n", rand() ); |
nargetdev | 23:4bb74b53e112 | 15 | |
nargetdev | 23:4bb74b53e112 | 16 | // generate random values in 0.0 - 1.0 |
nargetdev | 23:4bb74b53e112 | 17 | uint8_t blah; |
nargetdev | 23:4bb74b53e112 | 18 | for (int j = 0; j < 3; j++){ |
nargetdev | 23:4bb74b53e112 | 19 | srand(rand_int+j); |
nargetdev | 23:4bb74b53e112 | 20 | blah = rand(); |
nargetdev | 23:4bb74b53e112 | 21 | SCALE[j] = (float) blah; |
nargetdev | 23:4bb74b53e112 | 22 | SCALE[j] /= (float) 0xff; |
nargetdev | 23:4bb74b53e112 | 23 | SCALE[j] = SCALE[j]*HPI + 1; |
nargetdev | 23:4bb74b53e112 | 24 | pc.printf("scale %d, %f\n\r", i, SCALE[i]); |
nargetdev | 23:4bb74b53e112 | 25 | srand(blah+j % 17 + 7); |
nargetdev | 23:4bb74b53e112 | 26 | blah = rand(); |
nargetdev | 23:4bb74b53e112 | 27 | WAIT[j] = (float) blah; |
nargetdev | 23:4bb74b53e112 | 28 | WAIT[j] /= (float) 0xff; |
nargetdev | 23:4bb74b53e112 | 29 | WAIT[j] *= HPI; |
nargetdev | 23:4bb74b53e112 | 30 | pc.printf("wait %d, %f\n\r", i, WAIT[i]); |
nargetdev | 23:4bb74b53e112 | 31 | } |
nargetdev | 23:4bb74b53e112 | 32 | rgb = 0x0; |
nargetdev | 23:4bb74b53e112 | 33 | printf("Params Initialized\r\n"); |
nargetdev | 23:4bb74b53e112 | 34 | } |
nargetdev | 23:4bb74b53e112 | 35 | |
nargetdev | 23:4bb74b53e112 | 36 | void Rgb::update_rgb_values () |
nargetdev | 23:4bb74b53e112 | 37 | { |
nargetdev | 23:4bb74b53e112 | 38 | // printf("Updating RGB values...\r\n"); |
nargetdev | 23:4bb74b53e112 | 39 | for (i=0; i<3; i++) { |
nargetdev | 23:4bb74b53e112 | 40 | if (!(rgb & (0x1 << i) )) { |
nargetdev | 23:4bb74b53e112 | 41 | if ( in > WAIT[i]) { |
nargetdev | 23:4bb74b53e112 | 42 | // printf("%d, %d, result: %d\r\n", rgb, (0x1 << i), (!(rgb & (0x1 << i)) ) ); |
nargetdev | 23:4bb74b53e112 | 43 | rgb_c[i] = -cos((in - WAIT[i])*SCALE[i]) + 1; |
nargetdev | 23:4bb74b53e112 | 44 | } else { |
nargetdev | 23:4bb74b53e112 | 45 | rgb_c[i] = 0.0; |
nargetdev | 23:4bb74b53e112 | 46 | } |
nargetdev | 23:4bb74b53e112 | 47 | } else |
nargetdev | 23:4bb74b53e112 | 48 | rgb_c[i] = 0.0; |
nargetdev | 23:4bb74b53e112 | 49 | pc.printf("%f\t",rgb_c[i]); |
nargetdev | 23:4bb74b53e112 | 50 | } |
nargetdev | 23:4bb74b53e112 | 51 | pc.printf("\n\r"); |
nargetdev | 23:4bb74b53e112 | 52 | // exit(0); |
nargetdev | 23:4bb74b53e112 | 53 | } |
nargetdev | 23:4bb74b53e112 | 54 | |
nargetdev | 23:4bb74b53e112 | 55 | void Rgb::write_rgb () |
nargetdev | 23:4bb74b53e112 | 56 | { |
nargetdev | 23:4bb74b53e112 | 57 | red.write(rgb_c[0]/2.0); |
nargetdev | 23:4bb74b53e112 | 58 | green.write(rgb_c[1]/2.0); |
nargetdev | 23:4bb74b53e112 | 59 | blue.write(rgb_c[2]/2.0); |
nargetdev | 23:4bb74b53e112 | 60 | } |
nargetdev | 23:4bb74b53e112 | 61 | |
nargetdev | 23:4bb74b53e112 | 62 | //public: |
nargetdev | 23:4bb74b53e112 | 63 | |
nargetdev | 23:4bb74b53e112 | 64 | void Rgb::show() |
nargetdev | 23:4bb74b53e112 | 65 | { |
nargetdev | 23:4bb74b53e112 | 66 | pc.printf("show\r\n"); |
nargetdev | 23:4bb74b53e112 | 67 | // randomize the delay and scale values |
nargetdev | 23:4bb74b53e112 | 68 | randomize_params(); |
nargetdev | 23:4bb74b53e112 | 69 | printf("params initialized:\n\r"); |
nargetdev | 23:4bb74b53e112 | 70 | printf("WAIT:\t%f\t%f\t%f\n\r", WAIT[0], WAIT[1], WAIT[2]); |
nargetdev | 23:4bb74b53e112 | 71 | printf("SCALE:\t%f\t%f\t%f\n\r", SCALE[0], SCALE[1], SCALE[2]); |
nargetdev | 23:4bb74b53e112 | 72 | for (in = 0; in < hysteresis || rgb != 0x7; in = in + INCREMENT) { |
nargetdev | 23:4bb74b53e112 | 73 | #ifdef MKIT |
nargetdev | 23:4bb74b53e112 | 74 | bool mov = motion; |
nargetdev | 23:4bb74b53e112 | 75 | #else |
nargetdev | 23:4bb74b53e112 | 76 | bool mov = !motion; |
nargetdev | 23:4bb74b53e112 | 77 | #endif |
nargetdev | 23:4bb74b53e112 | 78 | if (mov) { |
nargetdev | 23:4bb74b53e112 | 79 | hysteresis = in + HYSTERESIS_QUANTITY; |
nargetdev | 23:4bb74b53e112 | 80 | } |
nargetdev | 23:4bb74b53e112 | 81 | |
nargetdev | 23:4bb74b53e112 | 82 | // update rgb |
nargetdev | 23:4bb74b53e112 | 83 | update_rgb_values(); |
nargetdev | 23:4bb74b53e112 | 84 | |
nargetdev | 23:4bb74b53e112 | 85 | // write values |
nargetdev | 23:4bb74b53e112 | 86 | write_rgb(); |
nargetdev | 23:4bb74b53e112 | 87 | |
nargetdev | 23:4bb74b53e112 | 88 | |
nargetdev | 23:4bb74b53e112 | 89 | if (in > hysteresis) { |
nargetdev | 23:4bb74b53e112 | 90 | if (rgb_c[0] < 0.01) |
nargetdev | 23:4bb74b53e112 | 91 | rgb |= 0x1; |
nargetdev | 23:4bb74b53e112 | 92 | if (rgb_c[1] < 0.01) |
nargetdev | 23:4bb74b53e112 | 93 | rgb |= 0x2; |
nargetdev | 23:4bb74b53e112 | 94 | if (rgb_c[2] < 0.01) |
nargetdev | 23:4bb74b53e112 | 95 | rgb |= 0x4; |
nargetdev | 23:4bb74b53e112 | 96 | } |
nargetdev | 23:4bb74b53e112 | 97 | |
nargetdev | 23:4bb74b53e112 | 98 | } |
nargetdev | 23:4bb74b53e112 | 99 | } |
nargetdev | 23:4bb74b53e112 | 100 | }; |
nargetdev | 23:4bb74b53e112 | 101 | |
nargetdev | 23:4bb74b53e112 | 102 | |
nargetdev | 23:4bb74b53e112 | 103 | void channel_check() |
nargetdev | 23:4bb74b53e112 | 104 | { |
nargetdev | 23:4bb74b53e112 | 105 | |
nargetdev | 23:4bb74b53e112 | 106 | red.write(1.0f); |
nargetdev | 23:4bb74b53e112 | 107 | wait(.5); |
nargetdev | 23:4bb74b53e112 | 108 | red.write(0.0f); |
nargetdev | 23:4bb74b53e112 | 109 | |
nargetdev | 23:4bb74b53e112 | 110 | green.write(1.0f); |
nargetdev | 23:4bb74b53e112 | 111 | wait(.5); |
nargetdev | 23:4bb74b53e112 | 112 | green.write(0.0f); |
nargetdev | 23:4bb74b53e112 | 113 | |
nargetdev | 23:4bb74b53e112 | 114 | blue.write(1.0f); |
nargetdev | 23:4bb74b53e112 | 115 | wait(.5); |
nargetdev | 23:4bb74b53e112 | 116 | blue.write(0.0f); |
nargetdev | 23:4bb74b53e112 | 117 | } |