a funy bracelet

Dependencies:   ADXL345_I2C PololuLedStrip USBDevice mbed

Fork of xadow_m0_accelerometer by Seeed

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?

UserRevisionLine numberNew 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 }