cleaned up verison
Dependencies: mbed C12832_lcd LCD_fonts NeoStrip
main.cpp
- Committer:
- jasonberry
- Date:
- 2021-02-04
- Revision:
- 1:a9f32c0c835d
- Parent:
- 0:f38492690f0e
- Child:
- 2:a04589b1a088
File content as of revision 1:a9f32c0c835d:
/* * Adafruit NeoPixel example * * This program displays a couple simple patterns on an 8x8 NeoPixel matrix. * */ #include "mbed.h" #include "NeoStrip.h" #include "gt.h" #define N 5 //number of leds #define PATTERNS 3 //int hueToRGB(float h); //void pattern0(); //oid pattern1(); //void pattern2(); // array of function pointers to the various patterns //void (*patterns[])(void) = {&pattern0, &pattern1, &pattern2}; NeoStrip strip(p25, N); //DigitalIn b1(p20); // brightness up //DigitalIn b2(p19); // brightness down //DigitalIn b3(p22); // next pattern // timer used for debugging Timer timer; int main() { // b1.mode(PullDown); // b2.mode(PullDown); // b3.mode(PullDown); //int pattern = 0; //bool b3o = b3; // old copy of button 3 to poll for changes //int p = 0; float bright = 0.2; // 20% is plenty for indoor use int color = 0x122446; //0xFF0000; //red strip.setBrightness(bright); // set default brightness while(true) { //strip.setPixels(0, N, test_img); strip.clear(); strip.write(); wait_ms(1000); strip.setPixel(0,color); strip.write(); wait_ms(1000); strip.setPixel(1,color); strip.write(); wait_ms(1000); strip.setPixel(2,color); strip.write(); wait_ms(1000); strip.setPixel(3,color); strip.write(); wait_ms(1000); strip.setPixel(4,color); strip.write(); wait_ms(1000); } } /*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(0) //(b1 && bright < 1) { bright += 0.01; if (bright > 1) bright = 1; strip.setBrightness(bright); } // button 2 decreases brightness if (0)//(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 (0)//(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 float r, g, b; if (h > 360) h -= 360; if (h < 0) h += 360; int i = (int)(h / 60.0); float f = (h / 60.0) - i; float q = 1 - f; switch (i % 6) { case 0: r = 1; g = f; b = 0; break; case 1: r = q; g = 1; b = 0; break; case 2: r = 0; g = 1; b = f; break; case 3: r = 0; g = q; b = 1; break; case 4: r = f; g = 0; b = 1; break; 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); uint8_t B = (uint8_t)(b * 255); return (R << 16) | (G << 8) | B; } */