a funy bracelet
Dependencies: ADXL345_I2C PololuLedStrip USBDevice mbed
Fork of xadow_m0_accelerometer by
main.cpp@3:549899585cf1, 2014-07-23 (annotated)
- Committer:
- jacob_yan
- Date:
- Wed Jul 23 05:44:44 2014 +0000
- Revision:
- 3:549899585cf1
- Parent:
- 1:daff562098ac
usbserial change
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
seeed | 0:b017c907d53d | 1 | #include "ADXL345_I2C.h" |
jacob_yan | 1:daff562098ac | 2 | #include "mbed.h" |
jacob_yan | 1:daff562098ac | 3 | #include "PololuLedStrip.h" |
seeed | 0:b017c907d53d | 4 | |
seeed | 0:b017c907d53d | 5 | #define DEBUG |
seeed | 0:b017c907d53d | 6 | |
seeed | 0:b017c907d53d | 7 | #ifdef DEBUG |
seeed | 0:b017c907d53d | 8 | #include "USBSerial.h" // To use USB virtual serial, a driver is needed, check http://mbed.org/handbook/USBSerial |
seeed | 0:b017c907d53d | 9 | #define LOG(args...) pc.printf(args) |
seeed | 0:b017c907d53d | 10 | USBSerial pc; |
seeed | 0:b017c907d53d | 11 | #else |
seeed | 0:b017c907d53d | 12 | #define LOG(args...) |
seeed | 0:b017c907d53d | 13 | #endif |
jacob_yan | 1:daff562098ac | 14 | PololuLedStrip ledStrip(P0_8); |
jacob_yan | 1:daff562098ac | 15 | ADXL345_I2C accelerometer(P0_5, P0_4); |
seeed | 0:b017c907d53d | 16 | |
jacob_yan | 1:daff562098ac | 17 | |
jacob_yan | 1:daff562098ac | 18 | #define LED_COUNT 6 |
jacob_yan | 1:daff562098ac | 19 | rgb_color colors[LED_COUNT]; |
jacob_yan | 1:daff562098ac | 20 | Timer timer; |
jacob_yan | 1:daff562098ac | 21 | rgb_color color; |
jacob_yan | 1:daff562098ac | 22 | |
jacob_yan | 1:daff562098ac | 23 | DigitalOut led_white(P0_23); |
jacob_yan | 1:daff562098ac | 24 | DigitalOut led_blue(P0_20); |
jacob_yan | 1:daff562098ac | 25 | DigitalOut led_strip(P0_8); |
jacob_yan | 1:daff562098ac | 26 | int x,y,z,val; |
jacob_yan | 1:daff562098ac | 27 | |
jacob_yan | 1:daff562098ac | 28 | rgb_color hsvToRgb(float h, float s, float v) //claim object hsvToRbg |
jacob_yan | 1:daff562098ac | 29 | { |
jacob_yan | 1:daff562098ac | 30 | int i = floor(h * 6); |
jacob_yan | 1:daff562098ac | 31 | float f = h * 6 - i; |
jacob_yan | 1:daff562098ac | 32 | float p = v * (1 - s); |
jacob_yan | 1:daff562098ac | 33 | float q = v * (1 - f * s); |
jacob_yan | 1:daff562098ac | 34 | float t = v * (1 - (1 - f) * s); |
jacob_yan | 1:daff562098ac | 35 | float r = 0, g = 0, b = 0; |
jacob_yan | 1:daff562098ac | 36 | switch(i % 6){ |
jacob_yan | 1:daff562098ac | 37 | case 0: r = v; g = t; b = p; break; |
jacob_yan | 1:daff562098ac | 38 | case 1: r = q; g = v; b = p; break; |
jacob_yan | 1:daff562098ac | 39 | case 2: r = p; g = v; b = t; break; |
jacob_yan | 1:daff562098ac | 40 | case 3: r = p; g = q; b = v; break; |
jacob_yan | 1:daff562098ac | 41 | case 4: r = t; g = p; b = v; break; |
jacob_yan | 1:daff562098ac | 42 | case 5: r = v; g = p; b = q; break; |
jacob_yan | 1:daff562098ac | 43 | } |
jacob_yan | 1:daff562098ac | 44 | return (rgb_color){r * 255, g * 255, b * 255}; |
jacob_yan | 1:daff562098ac | 45 | } |
seeed | 0:b017c907d53d | 46 | |
seeed | 0:b017c907d53d | 47 | int main() |
seeed | 0:b017c907d53d | 48 | { |
jacob_yan | 1:daff562098ac | 49 | |
jacob_yan | 1:daff562098ac | 50 | |
jacob_yan | 1:daff562098ac | 51 | led_white=0; |
jacob_yan | 1:daff562098ac | 52 | led_blue=0; |
jacob_yan | 1:daff562098ac | 53 | |
seeed | 0:b017c907d53d | 54 | int readings[3] = {0, 0, 0}; |
seeed | 0:b017c907d53d | 55 | |
seeed | 0:b017c907d53d | 56 | accelerometer.setPowerControl(0x00); |
seeed | 0:b017c907d53d | 57 | accelerometer.setDataFormatControl(0x0B); |
seeed | 0:b017c907d53d | 58 | accelerometer.setDataRate(ADXL345_3200HZ); |
seeed | 0:b017c907d53d | 59 | accelerometer.setPowerControl(0x08); |
seeed | 0:b017c907d53d | 60 | |
seeed | 0:b017c907d53d | 61 | while (1) { |
seeed | 0:b017c907d53d | 62 | accelerometer.getOutput(readings); |
jacob_yan | 1:daff562098ac | 63 | |
jacob_yan | 1:daff562098ac | 64 | x=abs((int16_t)readings[2]); |
jacob_yan | 1:daff562098ac | 65 | y=abs((int16_t)readings[2]); |
jacob_yan | 1:daff562098ac | 66 | z=abs((int16_t)readings[2]); |
seeed | 0:b017c907d53d | 67 | |
jacob_yan | 1:daff562098ac | 68 | val=x; |
jacob_yan | 1:daff562098ac | 69 | if (val<y)val=y; |
jacob_yan | 1:daff562098ac | 70 | if (val<z)val=z; |
jacob_yan | 1:daff562098ac | 71 | if (val>1100)val=1100; |
jacob_yan | 1:daff562098ac | 72 | |
jacob_yan | 1:daff562098ac | 73 | if (val>300) |
jacob_yan | 1:daff562098ac | 74 | { |
jacob_yan | 1:daff562098ac | 75 | |
jacob_yan | 1:daff562098ac | 76 | color.red =0; |
jacob_yan | 1:daff562098ac | 77 | color.green = char((val-300)*255/800); |
jacob_yan | 1:daff562098ac | 78 | color.blue = 0; |
jacob_yan | 1:daff562098ac | 79 | |
jacob_yan | 1:daff562098ac | 80 | |
jacob_yan | 1:daff562098ac | 81 | for(uint16_t i = 0; i < LED_COUNT; i++) |
jacob_yan | 1:daff562098ac | 82 | { |
jacob_yan | 1:daff562098ac | 83 | colors[i] = color; |
jacob_yan | 1:daff562098ac | 84 | } |
jacob_yan | 1:daff562098ac | 85 | |
jacob_yan | 1:daff562098ac | 86 | ledStrip.write(colors, LED_COUNT); |
jacob_yan | 1:daff562098ac | 87 | wait_ms (100); |
jacob_yan | 1:daff562098ac | 88 | } |
jacob_yan | 1:daff562098ac | 89 | |
jacob_yan | 1:daff562098ac | 90 | else{ |
jacob_yan | 1:daff562098ac | 91 | |
jacob_yan | 1:daff562098ac | 92 | rgb_color colors[LED_COUNT]={}; |
jacob_yan | 1:daff562098ac | 93 | ledStrip.write(colors, LED_COUNT); |
jacob_yan | 1:daff562098ac | 94 | |
jacob_yan | 1:daff562098ac | 95 | } |
jacob_yan | 1:daff562098ac | 96 | |
jacob_yan | 1:daff562098ac | 97 | |
seeed | 0:b017c907d53d | 98 | } |
seeed | 0:b017c907d53d | 99 | |
seeed | 0:b017c907d53d | 100 | } |