Joel Shearon
/
NeoPixels2_copy_2
final led
Fork of NeoPixels2 by
Diff: main.cpp
- Revision:
- 1:d235193680ab
- Parent:
- 0:f38492690f0e
- Child:
- 2:1a511cc48d0d
diff -r f38492690f0e -r d235193680ab main.cpp --- a/main.cpp Wed Mar 12 18:41:42 2014 +0000 +++ b/main.cpp Thu Apr 14 16:08:35 2016 +0000 @@ -1,152 +1,26 @@ -/* - * Adafruit NeoPixel 8x8 matrix example - * - * This program displays a couple simple patterns on an 8x8 NeoPixel matrix. - * - * 3 buttons are used for DigitalIns, 2 control the brightness up and down, - * and the third switches patterns - */ - #include "mbed.h" #include "NeoStrip.h" #include "gt.h" - #define N 64 #define PATTERNS 3 int hueToRGB(float h); -void pattern0(); -void pattern1(); -void pattern2(); + + -// array of function pointers to the various patterns -void (*patterns[])(void) = {&pattern0, &pattern1, &pattern2}; - +AnalogIn photocell(p16); +RawSerial dev(p28,p27); NeoStrip strip(p18, N); -DigitalIn b1(p20); // brightness up -DigitalIn b2(p19); // brightness down -DigitalIn b3(p21); // next pattern +DigitalOut myled(LED1); +DigitalIn vibration(p15); +Serial pc(USBTX,USBRX); +int count = 0; +int senseValCur; +int senseValPre = 1; // timer used for debugging Timer timer; -int main() -{ - b1.mode(PullDown); - b2.mode(PullDown); - b3.mode(PullDown); - - int pattern = 0; - float bright = 0.2; // 20% is plenty for indoor use - bool b3o = b3; // old copy of button 3 to poll for changes - - strip.setBrightness(bright); // set default brightness - - while (true) - { - timer.reset(); // use a timer to measure loop execution time for debugging purposes - timer.start(); // for this application, the main loop takes approximately 3ms to run - - // button 1 increases brightness - if (b1 && bright < 1) - { - bright += 0.01; - if (bright > 1) - bright = 1; - strip.setBrightness(bright); - } - - // button 2 decreases brightness - if (b2 && bright > 0) - { - bright -= 0.01; - if (bright < 0) - bright = 0; - strip.setBrightness(bright); - } - - // button 3 changes the pattern, only do stuff when its state has changed - if (b3 != b3o) - { - if (b3 && ++pattern == PATTERNS) - pattern = 0; - b3o = b3; - } - - // run the pattern update function which sets the strip's pixels - patterns[pattern](); - strip.write(); - - timer.stop(); - // print loop time if b3 is pressed - if (b3) - printf("Loop Time: %dus\n", timer.read_us()); - - wait_ms(10); - } -} - -// pattern0 displays a static image -void pattern0() -{ - strip.setPixels(0, N, gt_img); -} - -// display a shifting rainbow, all colors have maximum -// saturation and value, with evenly spaced hue -void pattern1() -{ - static float dh = 360.0 / N; - static float x = 0; - - for (int i = 0; i < N; i++) - strip.setPixel(i, hueToRGB((dh * i) - x)); - - x += 1; - if (x > 360) - x = 0; -} - -// display a shifting gradient between red and blue -void pattern2() -{ - // offset for each pixel to allow the pattern to move - static float x = 0; - - float r, b, y; - - for (int i = 0; i < N; i++) - { - // y is a scaled position between 0 (red) and 1.0 (blue) - y = 1.0 * i / (N - 1) + x; - if (y > 1) - y -= 1; - - // if on the left half, red is decreasing and blue is increasng - if (y < 0.5) - { - b = 2 * y; - r = 1 - b; - } - - // else red is increasing and blue is decreasing - else - { - r = 2 * (y - 0.5); - b = 1 - r; - } - - // scale to integers and set the pixel - strip.setPixel(i, (uint8_t)(r * 255), 0, (uint8_t)(b * 200)); - } - - x += 0.003; - if (x > 1) - x = 0; -} - -// Converts HSV to RGB with the given hue, assuming -// maximum saturation and value int hueToRGB(float h) { // lots of floating point magic from the internet and scratching my head @@ -169,7 +43,6 @@ case 5: r = 1; g = 0; b = q; break; default: r = 0; g = 0; b = 0; break; } - // scale to integers and return the packed value uint8_t R = (uint8_t)(r * 255); uint8_t G = (uint8_t)(g * 255); @@ -178,3 +51,53 @@ return (R << 16) | (G << 8) | B; } + +int main() +{ + vibration.mode(PullUp); + + + float bright = 0.2; // 20% is plenty for indoor use + + + strip.setBrightness(bright); // set default brightness + + while (true) + { + strip.setBrightness(photocell); + myled = vibration.read(); + senseValCur = vibration.read(); + timer.reset(); // use a timer to measure loop execution time for debugging purposes + timer.start(); // for this application, the main loop takes approximately 3ms to run + + + if(senseValCur == 0) + { + strip.setBrightness(photocell/4); + static float dh = 360.0 / N; + static float x = 0; + + for (int i = 0; i < N; i++) + {strip.setPixel(i, hueToRGB((dh * i) - x)); + + + x += 1; + if (x > 360) + x = 0; + strip.write(); + wait(0.01);} + + + strip.setPixels(0, N, gt_img2); + strip.write(); + wait(.005); + count++; + pc.printf("%i\n\r",count); + dev.printf("%i\n\r",count); + } + senseValPre = senseValCur; + } + } + + +