Light Show library for organic, calm, light display.
Dependencies: BLE_API mbed nRF51822
Fork of mbed_blinky by
main.cpp@21:3960e3b8ca7b, 2015-12-06 (annotated)
- Committer:
- nargetdev
- Date:
- Sun Dec 06 01:21:20 2015 +0000
- Revision:
- 21:3960e3b8ca7b
- Parent:
- 20:fa23847fbfef
- Child:
- 22:b618d55e9c9b
MVP classie
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nargetdev | 18:7c05ef6a639c | 1 | #include "mbed.h" |
nargetdev | 18:7c05ef6a639c | 2 | #include "BLE.h" |
nargetdev | 19:fabe9521b0a1 | 3 | #include "ButtonService.h" |
nargetdev | 19:fabe9521b0a1 | 4 | //#include "UARTService.h" |
nargetdev | 18:7c05ef6a639c | 5 | #include <string> |
nargetdev | 18:7c05ef6a639c | 6 | |
nargetdev | 21:3960e3b8ca7b | 7 | #define NEED_CONSOLE_OUTPUT 1 /* Set this if you need debug messages on the console; |
nargetdev | 18:7c05ef6a639c | 8 | * it will have an impact on code-size and power consumption. */ |
nargetdev | 11:2d3cc5459d5b | 9 | |
nargetdev | 18:7c05ef6a639c | 10 | #if NEED_CONSOLE_OUTPUT |
nargetdev | 21:3960e3b8ca7b | 11 | #define DEBUG(...) { printf(__VA_ARGS__); } |
nargetdev | 18:7c05ef6a639c | 12 | #else |
nargetdev | 21:3960e3b8ca7b | 13 | #define DEBUG(STR) { if (uartServicePtr) uartServicePtr->write(STR, strlen(STR)); } |
nargetdev | 21:3960e3b8ca7b | 14 | //#else |
nargetdev | 21:3960e3b8ca7b | 15 | //#define DEBUG(...) /* nothing */ |
nargetdev | 21:3960e3b8ca7b | 16 | #endif /* #if NEED_CONSOLE_OUxTPUT */ |
nargetdev | 18:7c05ef6a639c | 17 | |
nargetdev | 18:7c05ef6a639c | 18 | //#define NRFDK |
nargetdev | 18:7c05ef6a639c | 19 | #define MKIT |
nargetdev | 18:7c05ef6a639c | 20 | |
nargetdev | 19:fabe9521b0a1 | 21 | #define CALIBRATION_TIME 3 |
nargetdev | 11:2d3cc5459d5b | 22 | |
nargetdev | 19:fabe9521b0a1 | 23 | //#define HPI 1.571 |
nargetdev | 19:fabe9521b0a1 | 24 | //#define PI 3.1416 |
nargetdev | 19:fabe9521b0a1 | 25 | //#define HYSTERESIS_QUANTITY PI/4 |
nargetdev | 19:fabe9521b0a1 | 26 | // |
nargetdev | 19:fabe9521b0a1 | 27 | //#define RWAIT 0 |
nargetdev | 19:fabe9521b0a1 | 28 | //#define GWAIT PI/8 |
nargetdev | 19:fabe9521b0a1 | 29 | //#define BWAIT PI/4 |
nargetdev | 11:2d3cc5459d5b | 30 | |
nargetdev | 19:fabe9521b0a1 | 31 | |
nargetdev | 19:fabe9521b0a1 | 32 | //UARTService *uartServicePtr; |
nargetdev | 19:fabe9521b0a1 | 33 | const static char DEVICE_NAME[] = "Bathroom"; |
nargetdev | 19:fabe9521b0a1 | 34 | static const uint16_t uuid16_list[] = {ButtonService::BUTTON_SERVICE_UUID}; |
nargetdev | 18:7c05ef6a639c | 35 | |
nargetdev | 19:fabe9521b0a1 | 36 | uint8_t motionState = 0; |
nargetdev | 19:fabe9521b0a1 | 37 | ButtonService *buttonServicePtr; |
nargetdev | 18:7c05ef6a639c | 38 | |
nargetdev | 19:fabe9521b0a1 | 39 | |
nargetdev | 21:3960e3b8ca7b | 40 | unsigned long seed = 151; |
dan | 0:7dec7e9ac085 | 41 | |
nargetdev | 9:1bd0f7a2ee71 | 42 | typedef unsigned char byte; |
nargetdev | 9:1bd0f7a2ee71 | 43 | typedef unsigned int uint; |
nargetdev | 9:1bd0f7a2ee71 | 44 | |
nargetdev | 18:7c05ef6a639c | 45 | #ifdef NRFDK |
nargetdev | 18:7c05ef6a639c | 46 | InterruptIn motion(p20); |
nargetdev | 18:7c05ef6a639c | 47 | PwmOut red(p21); |
nargetdev | 18:7c05ef6a639c | 48 | PwmOut green(p22); |
nargetdev | 18:7c05ef6a639c | 49 | PwmOut blue(p23); |
nargetdev | 18:7c05ef6a639c | 50 | #endif |
nargetdev | 18:7c05ef6a639c | 51 | |
nargetdev | 18:7c05ef6a639c | 52 | #ifdef MKIT |
nargetdev | 9:1bd0f7a2ee71 | 53 | PwmOut red(p18); |
nargetdev | 9:1bd0f7a2ee71 | 54 | PwmOut green(p19); |
nargetdev | 9:1bd0f7a2ee71 | 55 | PwmOut blue(p20); |
nargetdev | 18:7c05ef6a639c | 56 | InterruptIn motion(p1); |
nargetdev | 18:7c05ef6a639c | 57 | #endif |
nargetdev | 18:7c05ef6a639c | 58 | |
nargetdev | 19:fabe9521b0a1 | 59 | // get some randomness |
nargetdev | 19:fabe9521b0a1 | 60 | Timer t; |
nargetdev | 9:1bd0f7a2ee71 | 61 | |
nargetdev | 9:1bd0f7a2ee71 | 62 | Serial pc(USBTX, USBRX); // tx, rx |
nargetdev | 9:1bd0f7a2ee71 | 63 | |
nargetdev | 18:7c05ef6a639c | 64 | |
nargetdev | 18:7c05ef6a639c | 65 | BLEDevice ble; |
nargetdev | 18:7c05ef6a639c | 66 | |
nargetdev | 18:7c05ef6a639c | 67 | void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *params) |
nargetdev | 18:7c05ef6a639c | 68 | { |
nargetdev | 18:7c05ef6a639c | 69 | DEBUG("Disconnected!\n\r"); |
nargetdev | 18:7c05ef6a639c | 70 | DEBUG("Restarting the advertising process\n\r"); |
nargetdev | 18:7c05ef6a639c | 71 | ble.startAdvertising(); |
nargetdev | 18:7c05ef6a639c | 72 | } |
nargetdev | 18:7c05ef6a639c | 73 | |
nargetdev | 18:7c05ef6a639c | 74 | |
nargetdev | 18:7c05ef6a639c | 75 | |
nargetdev | 9:1bd0f7a2ee71 | 76 | unsigned int hash(unsigned int x) { |
nargetdev | 9:1bd0f7a2ee71 | 77 | x = ((x >> 16) ^ x) * 0x45d9f3b; |
nargetdev | 9:1bd0f7a2ee71 | 78 | x = ((x >> 16) ^ x) * 0x45d9f3b; |
nargetdev | 9:1bd0f7a2ee71 | 79 | x = ((x >> 16) ^ x); |
nargetdev | 9:1bd0f7a2ee71 | 80 | seed*=2; |
nargetdev | 9:1bd0f7a2ee71 | 81 | seed+=17; |
nargetdev | 9:1bd0f7a2ee71 | 82 | return x%100; |
dan | 0:7dec7e9ac085 | 83 | } |
nargetdev | 8:5ed23e276c8a | 84 | |
nargetdev | 21:3960e3b8ca7b | 85 | void zero_out() { |
nargetdev | 21:3960e3b8ca7b | 86 | red.write(0); |
nargetdev | 21:3960e3b8ca7b | 87 | green.write(0); |
nargetdev | 21:3960e3b8ca7b | 88 | blue.write(0); |
nargetdev | 21:3960e3b8ca7b | 89 | printf("zero_out()\r\n"); |
nargetdev | 21:3960e3b8ca7b | 90 | } |
nargetdev | 21:3960e3b8ca7b | 91 | |
nargetdev | 9:1bd0f7a2ee71 | 92 | void identify(unsigned int m){ |
nargetdev | 21:3960e3b8ca7b | 93 | DEBUG("IDENTIFYING as: "); |
nargetdev | 9:1bd0f7a2ee71 | 94 | unsigned int hashable; |
nargetdev | 9:1bd0f7a2ee71 | 95 | float write_me; |
nargetdev | 9:1bd0f7a2ee71 | 96 | |
nargetdev | 21:3960e3b8ca7b | 97 | int r, g, b; |
nargetdev | 21:3960e3b8ca7b | 98 | |
nargetdev | 9:1bd0f7a2ee71 | 99 | hashable = hash(m + seed); |
nargetdev | 9:1bd0f7a2ee71 | 100 | write_me = hashable/100.0; |
nargetdev | 21:3960e3b8ca7b | 101 | r = hashable >= 50; |
nargetdev | 21:3960e3b8ca7b | 102 | red.write(r); |
nargetdev | 9:1bd0f7a2ee71 | 103 | |
nargetdev | 9:1bd0f7a2ee71 | 104 | hashable = hash(m + seed); |
nargetdev | 9:1bd0f7a2ee71 | 105 | write_me = hashable/100.0; |
nargetdev | 21:3960e3b8ca7b | 106 | g = hashable >= 50; |
nargetdev | 21:3960e3b8ca7b | 107 | green.write(g); |
nargetdev | 9:1bd0f7a2ee71 | 108 | |
nargetdev | 9:1bd0f7a2ee71 | 109 | hashable = hash(m + seed); |
nargetdev | 9:1bd0f7a2ee71 | 110 | write_me = hashable/100.0; |
nargetdev | 21:3960e3b8ca7b | 111 | b = hashable >= 50; |
nargetdev | 21:3960e3b8ca7b | 112 | blue.write(b); |
nargetdev | 21:3960e3b8ca7b | 113 | |
nargetdev | 21:3960e3b8ca7b | 114 | char* STR; |
nargetdev | 21:3960e3b8ca7b | 115 | // sprintf(STR, "r, g, b: %f\t\r\n", write_me); |
nargetdev | 21:3960e3b8ca7b | 116 | // DEBUG(STR); |
nargetdev | 21:3960e3b8ca7b | 117 | DEBUG("%d%d%d\r\n",r,g,b); |
nargetdev | 8:5ed23e276c8a | 118 | } |
nargetdev | 8:5ed23e276c8a | 119 | |
nargetdev | 9:1bd0f7a2ee71 | 120 | void calibrate(){ |
nargetdev | 9:1bd0f7a2ee71 | 121 | |
nargetdev | 9:1bd0f7a2ee71 | 122 | //give the sensor some time to calibrate |
nargetdev | 21:3960e3b8ca7b | 123 | pc.printf("calibrating sensor\n\r"); |
nargetdev | 19:fabe9521b0a1 | 124 | for(int i = 0; i < CALIBRATION_TIME; i++){ |
nargetdev | 9:1bd0f7a2ee71 | 125 | pc.printf("."); |
nargetdev | 19:fabe9521b0a1 | 126 | identify(CALIBRATION_TIME); |
nargetdev | 15:ee94af1f90a0 | 127 | wait(.5); |
nargetdev | 9:1bd0f7a2ee71 | 128 | } |
nargetdev | 21:3960e3b8ca7b | 129 | DEBUG(" done\n\r"); |
nargetdev | 21:3960e3b8ca7b | 130 | zero_out(); |
nargetdev | 21:3960e3b8ca7b | 131 | |
nargetdev | 21:3960e3b8ca7b | 132 | DEBUG("SENSOR ACTIVE\n\r"); |
nargetdev | 9:1bd0f7a2ee71 | 133 | wait(0.05); |
nargetdev | 9:1bd0f7a2ee71 | 134 | } |
nargetdev | 9:1bd0f7a2ee71 | 135 | |
nargetdev | 19:fabe9521b0a1 | 136 | void motionIRQ(){ |
nargetdev | 19:fabe9521b0a1 | 137 | motionState = 1; |
nargetdev | 19:fabe9521b0a1 | 138 | } |
nargetdev | 10:fc61583e9e8f | 139 | |
nargetdev | 19:fabe9521b0a1 | 140 | class Rgb { |
nargetdev | 19:fabe9521b0a1 | 141 | private: |
nargetdev | 19:fabe9521b0a1 | 142 | // PI macros |
nargetdev | 21:3960e3b8ca7b | 143 | static const float INCREMENT = 0.00628*4; |
nargetdev | 19:fabe9521b0a1 | 144 | static const float HPI = 1.571; |
nargetdev | 19:fabe9521b0a1 | 145 | static const float PI = 3.1416; |
nargetdev | 19:fabe9521b0a1 | 146 | static const float HYSTERESIS_QUANTITY = PI/4; |
nargetdev | 9:1bd0f7a2ee71 | 147 | |
nargetdev | 19:fabe9521b0a1 | 148 | static const float RWAIT = 0; |
nargetdev | 19:fabe9521b0a1 | 149 | static const float GWAIT = PI/8; |
nargetdev | 19:fabe9521b0a1 | 150 | static const float BWAIT = PI/4; |
nargetdev | 19:fabe9521b0a1 | 151 | float WAIT [3]; |
nargetdev | 19:fabe9521b0a1 | 152 | float SCALE [3]; |
nargetdev | 19:fabe9521b0a1 | 153 | |
nargetdev | 19:fabe9521b0a1 | 154 | // static const float SCALE[3] = { |
nargetdev | 19:fabe9521b0a1 | 155 | |
nargetdev | 19:fabe9521b0a1 | 156 | // channel operators |
nargetdev | 19:fabe9521b0a1 | 157 | float rgb_c[3]; |
nargetdev | 19:fabe9521b0a1 | 158 | float in; |
nargetdev | 19:fabe9521b0a1 | 159 | uint8_t rgb; |
nargetdev | 19:fabe9521b0a1 | 160 | float hysteresis; |
nargetdev | 19:fabe9521b0a1 | 161 | |
nargetdev | 19:fabe9521b0a1 | 162 | uint8_t i; |
nargetdev | 19:fabe9521b0a1 | 163 | bool mov; |
nargetdev | 19:fabe9521b0a1 | 164 | |
nargetdev | 21:3960e3b8ca7b | 165 | void randomize_params() { |
nargetdev | 19:fabe9521b0a1 | 166 | float rand_seed = t.read(); |
nargetdev | 21:3960e3b8ca7b | 167 | pc.printf("%f\n\r", rand_seed); |
nargetdev | 21:3960e3b8ca7b | 168 | int rand_int = t.read() * 7919; |
nargetdev | 19:fabe9521b0a1 | 169 | |
nargetdev | 21:3960e3b8ca7b | 170 | time_t seconds = time(NULL); |
nargetdev | 21:3960e3b8ca7b | 171 | pc.printf("Time as seconds since January 1, 1970 = %d\n\r", seconds); |
nargetdev | 20:fa23847fbfef | 172 | |
nargetdev | 21:3960e3b8ca7b | 173 | srand(rand_int); |
nargetdev | 21:3960e3b8ca7b | 174 | pc.printf("A random %d\r\n", rand() ); |
nargetdev | 20:fa23847fbfef | 175 | |
nargetdev | 20:fa23847fbfef | 176 | // generate random values in 0.0 - 1.0 |
nargetdev | 20:fa23847fbfef | 177 | uint8_t blah; |
nargetdev | 20:fa23847fbfef | 178 | for (int j = 0; j < 3; j++) { |
nargetdev | 21:3960e3b8ca7b | 179 | srand(rand_int+j); |
nargetdev | 20:fa23847fbfef | 180 | blah = rand(); |
nargetdev | 21:3960e3b8ca7b | 181 | SCALE[j] = (float) blah; |
nargetdev | 21:3960e3b8ca7b | 182 | SCALE[j] /= (float) 0xff; |
nargetdev | 21:3960e3b8ca7b | 183 | SCALE[j] = SCALE[j]*HPI + 1; |
nargetdev | 21:3960e3b8ca7b | 184 | pc.printf("scale %d, %f\n\r", i, SCALE[i]); |
nargetdev | 20:fa23847fbfef | 185 | srand(blah+j % 17 + 7); |
nargetdev | 20:fa23847fbfef | 186 | blah = rand(); |
nargetdev | 21:3960e3b8ca7b | 187 | WAIT[j] = (float) blah; |
nargetdev | 21:3960e3b8ca7b | 188 | WAIT[j] /= (float) 0xff; |
nargetdev | 21:3960e3b8ca7b | 189 | WAIT[j] *= HPI; |
nargetdev | 21:3960e3b8ca7b | 190 | pc.printf("wait %d, %f\n\r", i, WAIT[i]); |
nargetdev | 20:fa23847fbfef | 191 | } |
nargetdev | 21:3960e3b8ca7b | 192 | rgb = 0x0; |
nargetdev | 21:3960e3b8ca7b | 193 | printf("Params Initialized\r\n"); |
nargetdev | 8:5ed23e276c8a | 194 | } |
nargetdev | 19:fabe9521b0a1 | 195 | |
nargetdev | 19:fabe9521b0a1 | 196 | void update_rgb_values () { |
nargetdev | 21:3960e3b8ca7b | 197 | // printf("Updating RGB values...\r\n"); |
nargetdev | 19:fabe9521b0a1 | 198 | for (i=0; i<3; i++){ |
nargetdev | 19:fabe9521b0a1 | 199 | if (!(rgb & (0x1 << i) )){ |
nargetdev | 21:3960e3b8ca7b | 200 | if ( in > WAIT[i]){ |
nargetdev | 21:3960e3b8ca7b | 201 | // printf("%d, %d, result: %d\r\n", rgb, (0x1 << i), (!(rgb & (0x1 << i)) ) ); |
nargetdev | 21:3960e3b8ca7b | 202 | rgb_c[i] = -cos((in - WAIT[i])*SCALE[i]) + 1; |
nargetdev | 19:fabe9521b0a1 | 203 | } |
nargetdev | 19:fabe9521b0a1 | 204 | else { |
nargetdev | 19:fabe9521b0a1 | 205 | rgb_c[i] = 0.0; |
nargetdev | 19:fabe9521b0a1 | 206 | } |
nargetdev | 19:fabe9521b0a1 | 207 | } |
nargetdev | 19:fabe9521b0a1 | 208 | else |
nargetdev | 19:fabe9521b0a1 | 209 | rgb_c[i] = 0.0; |
nargetdev | 19:fabe9521b0a1 | 210 | pc.printf("%f\t",rgb_c[i]); |
nargetdev | 19:fabe9521b0a1 | 211 | } |
nargetdev | 21:3960e3b8ca7b | 212 | pc.printf("\n\r"); |
nargetdev | 21:3960e3b8ca7b | 213 | // exit(0); |
nargetdev | 19:fabe9521b0a1 | 214 | } |
nargetdev | 19:fabe9521b0a1 | 215 | |
nargetdev | 19:fabe9521b0a1 | 216 | void write_rgb (){ |
nargetdev | 19:fabe9521b0a1 | 217 | red.write(rgb_c[0]/2.0); |
nargetdev | 19:fabe9521b0a1 | 218 | green.write(rgb_c[1]/2.0); |
nargetdev | 19:fabe9521b0a1 | 219 | blue.write(rgb_c[2]/2.0); |
nargetdev | 19:fabe9521b0a1 | 220 | } |
nargetdev | 19:fabe9521b0a1 | 221 | |
nargetdev | 19:fabe9521b0a1 | 222 | public: |
nargetdev | 21:3960e3b8ca7b | 223 | //Rgb(); |
nargetdev | 18:7c05ef6a639c | 224 | |
nargetdev | 9:1bd0f7a2ee71 | 225 | |
nargetdev | 19:fabe9521b0a1 | 226 | void show() { |
nargetdev | 21:3960e3b8ca7b | 227 | pc.printf("show\r\n"); |
nargetdev | 20:fa23847fbfef | 228 | // randomize the delay and scale values |
nargetdev | 21:3960e3b8ca7b | 229 | randomize_params(); |
nargetdev | 21:3960e3b8ca7b | 230 | printf("params initialized:\n\r"); |
nargetdev | 21:3960e3b8ca7b | 231 | printf("WAIT:\t%f\t%f\t%f\n\r", WAIT[0], WAIT[1], WAIT[2]); |
nargetdev | 21:3960e3b8ca7b | 232 | printf("SCALE:\t%f\t%f\t%f\n\r", SCALE[0], SCALE[1], SCALE[2]); |
nargetdev | 19:fabe9521b0a1 | 233 | for (in = 0; in < hysteresis || rgb != 0x7; in = in + INCREMENT){ |
nargetdev | 19:fabe9521b0a1 | 234 | #ifdef MKIT |
nargetdev | 19:fabe9521b0a1 | 235 | bool mov = motion; |
nargetdev | 19:fabe9521b0a1 | 236 | #else |
nargetdev | 19:fabe9521b0a1 | 237 | bool mov = !motion; |
nargetdev | 19:fabe9521b0a1 | 238 | #endif |
nargetdev | 19:fabe9521b0a1 | 239 | if (mov){ |
nargetdev | 19:fabe9521b0a1 | 240 | hysteresis = in + HYSTERESIS_QUANTITY; |
nargetdev | 19:fabe9521b0a1 | 241 | } |
nargetdev | 19:fabe9521b0a1 | 242 | |
nargetdev | 19:fabe9521b0a1 | 243 | // update rgb |
nargetdev | 19:fabe9521b0a1 | 244 | update_rgb_values(); |
nargetdev | 19:fabe9521b0a1 | 245 | |
nargetdev | 19:fabe9521b0a1 | 246 | // write values |
nargetdev | 19:fabe9521b0a1 | 247 | write_rgb(); |
nargetdev | 10:fc61583e9e8f | 248 | |
nargetdev | 19:fabe9521b0a1 | 249 | |
nargetdev | 19:fabe9521b0a1 | 250 | if (in > hysteresis){ |
nargetdev | 19:fabe9521b0a1 | 251 | if (rgb_c[0] < 0.01) |
nargetdev | 19:fabe9521b0a1 | 252 | rgb |= 0x1; |
nargetdev | 19:fabe9521b0a1 | 253 | if (rgb_c[1] < 0.01) |
nargetdev | 19:fabe9521b0a1 | 254 | rgb |= 0x2; |
nargetdev | 19:fabe9521b0a1 | 255 | if (rgb_c[2] < 0.01) |
nargetdev | 19:fabe9521b0a1 | 256 | rgb |= 0x4; |
nargetdev | 19:fabe9521b0a1 | 257 | } |
nargetdev | 19:fabe9521b0a1 | 258 | |
nargetdev | 21:3960e3b8ca7b | 259 | } |
nargetdev | 10:fc61583e9e8f | 260 | } |
nargetdev | 19:fabe9521b0a1 | 261 | }; |
nargetdev | 21:3960e3b8ca7b | 262 | |
nargetdev | 9:1bd0f7a2ee71 | 263 | |
nargetdev | 14:e8a1fe69b048 | 264 | void channel_check(){ |
nargetdev | 14:e8a1fe69b048 | 265 | |
nargetdev | 14:e8a1fe69b048 | 266 | red.write(1.0f); |
nargetdev | 14:e8a1fe69b048 | 267 | wait(.5); |
nargetdev | 14:e8a1fe69b048 | 268 | red.write(0.0f); |
nargetdev | 14:e8a1fe69b048 | 269 | |
nargetdev | 14:e8a1fe69b048 | 270 | green.write(1.0f); |
nargetdev | 14:e8a1fe69b048 | 271 | wait(.5); |
nargetdev | 14:e8a1fe69b048 | 272 | green.write(0.0f); |
nargetdev | 14:e8a1fe69b048 | 273 | |
nargetdev | 14:e8a1fe69b048 | 274 | blue.write(1.0f); |
nargetdev | 14:e8a1fe69b048 | 275 | wait(.5); |
nargetdev | 14:e8a1fe69b048 | 276 | blue.write(0.0f); |
nargetdev | 14:e8a1fe69b048 | 277 | } |
nargetdev | 14:e8a1fe69b048 | 278 | |
nargetdev | 19:fabe9521b0a1 | 279 | |
nargetdev | 19:fabe9521b0a1 | 280 | |
nargetdev | 9:1bd0f7a2ee71 | 281 | int main() { |
nargetdev | 21:3960e3b8ca7b | 282 | DEBUG("Start Main.\r\n"); |
nargetdev | 21:3960e3b8ca7b | 283 | |
nargetdev | 19:fabe9521b0a1 | 284 | // Set RTC time to Wed, 28 Oct 2009 11:35:37 |
nargetdev | 19:fabe9521b0a1 | 285 | set_time(1256729737); |
nargetdev | 19:fabe9521b0a1 | 286 | t.start(); |
nargetdev | 18:7c05ef6a639c | 287 | red.period(0.01f); |
nargetdev | 18:7c05ef6a639c | 288 | green.period(0.01f); |
nargetdev | 18:7c05ef6a639c | 289 | blue.period(0.01f); |
nargetdev | 21:3960e3b8ca7b | 290 | |
nargetdev | 21:3960e3b8ca7b | 291 | |
nargetdev | 21:3960e3b8ca7b | 292 | calibrate(); |
nargetdev | 19:fabe9521b0a1 | 293 | |
nargetdev | 19:fabe9521b0a1 | 294 | ble.init(); |
nargetdev | 19:fabe9521b0a1 | 295 | ble.gap().onDisconnection(disconnectionCallback); |
nargetdev | 19:fabe9521b0a1 | 296 | |
nargetdev | 19:fabe9521b0a1 | 297 | ButtonService buttonService(ble, false /* initial value for button pressed */); |
nargetdev | 19:fabe9521b0a1 | 298 | buttonServicePtr = &buttonService; |
nargetdev | 19:fabe9521b0a1 | 299 | |
nargetdev | 19:fabe9521b0a1 | 300 | /* setup advertising */ |
nargetdev | 19:fabe9521b0a1 | 301 | ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE); |
nargetdev | 19:fabe9521b0a1 | 302 | ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_16BIT_SERVICE_IDS, (uint8_t *)uuid16_list, sizeof(uuid16_list)); |
nargetdev | 19:fabe9521b0a1 | 303 | ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LOCAL_NAME, (uint8_t *)DEVICE_NAME, sizeof(DEVICE_NAME)); |
nargetdev | 19:fabe9521b0a1 | 304 | ble.gap().setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED); |
nargetdev | 19:fabe9521b0a1 | 305 | ble.gap().setAdvertisingInterval(1000); /* 1000ms. */ |
nargetdev | 19:fabe9521b0a1 | 306 | ble.gap().startAdvertising(); |
nargetdev | 14:e8a1fe69b048 | 307 | |
nargetdev | 21:3960e3b8ca7b | 308 | DEBUG("Instantiate strip.\r\n"); |
nargetdev | 21:3960e3b8ca7b | 309 | Rgb strip; |
nargetdev | 21:3960e3b8ca7b | 310 | DEBUG("I have a strip.\r\n"); |
nargetdev | 18:7c05ef6a639c | 311 | |
nargetdev | 9:1bd0f7a2ee71 | 312 | while(1){ |
nargetdev | 18:7c05ef6a639c | 313 | #ifdef MKIT |
nargetdev | 19:fabe9521b0a1 | 314 | motion.rise(&motionIRQ); |
nargetdev | 19:fabe9521b0a1 | 315 | if (motionState){ |
nargetdev | 21:3960e3b8ca7b | 316 | pc.printf("Motion detected.\r\n"); |
nargetdev | 19:fabe9521b0a1 | 317 | buttonServicePtr->updateButtonState(motionState); |
nargetdev | 19:fabe9521b0a1 | 318 | strip.show(); |
nargetdev | 19:fabe9521b0a1 | 319 | motionState = 0; |
nargetdev | 19:fabe9521b0a1 | 320 | buttonServicePtr->updateButtonState(motionState); |
nargetdev | 19:fabe9521b0a1 | 321 | red.write(0.0f); |
nargetdev | 19:fabe9521b0a1 | 322 | green.write(0.0f); |
nargetdev | 19:fabe9521b0a1 | 323 | blue.write(0.0f); |
nargetdev | 19:fabe9521b0a1 | 324 | } |
nargetdev | 18:7c05ef6a639c | 325 | #endif |
nargetdev | 18:7c05ef6a639c | 326 | #ifdef NRFDK |
nargetdev | 19:fabe9521b0a1 | 327 | motion.fall(&strip.show()); |
nargetdev | 18:7c05ef6a639c | 328 | #endif |
nargetdev | 18:7c05ef6a639c | 329 | // red.write(0.0f); |
nargetdev | 18:7c05ef6a639c | 330 | // green.write(0.0f); |
nargetdev | 18:7c05ef6a639c | 331 | // blue.write(0.0f); |
nargetdev | 18:7c05ef6a639c | 332 | ble.waitForEvent(); |
nargetdev | 9:1bd0f7a2ee71 | 333 | } |
nargetdev | 8:5ed23e276c8a | 334 | } |