![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
shiftlightws2818bcoilxrpm
Dependencies: mbed NeoStrip PinDetect
Diff: main.cpp
- Revision:
- 1:b1ec0b8dbde5
- Parent:
- 0:a26aca3e4760
--- a/main.cpp Tue Nov 10 21:28:51 2015 +0000 +++ b/main.cpp Mon May 06 14:08:03 2019 +0000 @@ -1,251 +1,848 @@ #include "mbed.h" -#include "BitmapFile.h" #include <string> #include "PinDetect.h" #include "NeoStrip.h" -# define MAX_FILE 30 +//# define MAX_FILE 30 #define N 32 -NeoStrip strip(p5, N); -float bright = 0.2; // 20% is plenty for indoor use +NeoStrip strip(p5, 13); +float bright = 0.1; PinDetect b1(p25, PullUp); -PinDetect b2(p29, PullUp); -PinDetect b3(p22, PullUp); -PinDetect b4(p27, PullUp); +PinDetect b2(p27, PullUp); +PinDetect b3(p26, PullUp); +//PinDetect b4(p26, PullUp); LocalFileSystem local("local"); // Create the local filesystem under the name "local" Serial pc(USBTX, USBRX); // tx, rx -BitmapFile *MyBitmap; - -char *f_list[MAX_FILE]; -int file_index = 0; // get the index of file being displayed -unsigned max_file = 0; // register how many files there are - -char * get_file_name() { - char *fn = NULL; - unsigned i = 0; // index in the file list; - DIR *d = opendir("/local"); // Opens the root directory of the local file system - struct dirent *p; - while((p = readdir(d)) != NULL) { // Print the names of the files in the local file system - int l = strlen(p->d_name); - if (strcmp(&(p->d_name[l-3]), "BMP") == 0) { - i++; - if (file_index == i) { - fn = (char *) malloc(50); - strcpy(fn, p->d_name); - break; - } - } - } - closedir(d); - - return fn; -} void strip_off() { for (int i=0; i<N; i++) { strip.setPixel(i, 0); - } - strip.write(); -} -void display_number(float f) { - for (int i=0; i<N; i++) { - if (i<(f*N)) - strip.setPixel(i, 0xffffff); } strip.write(); - wait(0.2); - strip_off(); -} - -void brightnessUp(void) { - if (bright < 1) - { - bright += 0.01; - if (bright > 1) - bright = 1; - printf("increase brightness\r\n"); - strip.setBrightness(bright); - display_number(bright); - } -} - -void brightnessDown(void) { - if (bright > 0) - { - bright -= 0.01; - if (bright < 0) - bright = 0; - printf("decrease brightness\r\n"); - strip.setBrightness(bright); - display_number(bright); - } -} - -void fileDown(void) { - file_index--; - if (file_index < 0) - file_index = max_file; - printf("fileDown to %i:%s\r\n", file_index, f_list[file_index]); - display_number(file_index/float(N)); -} - -void fileUp(void) { - file_index++; - if (file_index > max_file) - file_index = 0; - printf("fileUp to %i:%s\r\n", file_index, f_list[file_index]); - display_number(file_index/float(N)); -} - - -// 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; -} - - -void pattern1() -{ - static float dh = 360.0 / N; - static float x = 0; - printf("%f\r\n",x); - - for (int i = 0; i < N; i++) { - int c = hueToRGB((dh * i) - x); - //printf("R %i, G %i, B %i\r\n", (c>>16)&0xff, (c>>8)&0xff, c&0xff); - strip.setPixel(i, c); - } - - x += 1; - if (x > 360) - x = 0; -} - - -void patternStart(void) { - printf("file_index: %i\r\n", file_index); - if (file_index == 0) { - for ( int j=0; j<100; j++ ){ - pattern1(); - strip.write(); - wait_ms(20); - } - return; - } - - printf("fn: %s\r\n", f_list[file_index]); - - char *fn = get_file_name(); - - unsigned l = strlen(fn); - char *path = (char *) malloc(l+7); - path[0] = 0; - strcat(path, "/local/"); - strcat(path, fn); - printf("path: %s\r\n", path); - - MyBitmap = new BitmapFile(path); - for(int row = 0; row < MyBitmap->getHeight(); row++) - { - int *row_color = MyBitmap->getRow(row, false); - for(int col = 0; col < MyBitmap->getWidth(); col++) - { - unsigned c = row_color[col] & 0xffffff; - strip.setPixel(col, c); - if ( c > 0xfff ) - printf(" "); - else - printf("*"); - } - strip.write(); - wait_ms(20); - printf("\r\n"); - delete [] row_color; - } - printf("closing\r\n"); - MyBitmap->close(); - printf("closed\r\n"); - free(fn); - free(path); - strip_off(); } +AnalogIn V(p20); //interuppted for Voltage reader + +DigitalOut led1(LED1); //mbedLED1 +DigitalOut led2(LED2); //mbedLED2 +DigitalOut led3(LED3); //mbedLED3 +DigitalOut led4(LED4); //mbedLED4 + +PwmOut led_g1(p21); //PWMout for led1 +PwmOut led_g2(p22); //PWMout for led2 +PwmOut led_y1(p23); //PWMout for led3 +PwmOut led_y2(p23); //PWMout for led4 +PwmOut led_r1(p24); //PWMout for led5 +PwmOut led_r2(p24); //PWMout for led6 + + +Timer t; // counts the time from beginning of main loop +InterruptIn beat(p8); // beat is the name for a interrupt on pin 8 + +Ticker mscnt; // this is used to create a ms counter + +int count,CNT,displayBPMFlag;//initialize global variables +float v; //variable for Volts +int BPM; // variable for RPM + +void ms_counter() { //this interrupt routine starts every 1ms + count++; //the counter is increased with 1 + if (count>1999) { //when no heart beat is detected for >2sec, then display "-" in the main loop + CNT=count; // copy counter value to CNT + displayBPMFlag = 1; // set flag that the BPM can be put to LCD in the main loop + count=0; // reset counter value + } +} + +void flip() { //this interrupt routine starts on every heart beat + CNT = count; // copy counter value to CNT + count = 0 ; // reset counter value + displayBPMFlag = 1; // set flag that the BPM can be put to LCD in the main loop +} + +void brightnessUp(void) { + + if (bright > 0) + { + bright += 0.02; + strip.setBrightness(bright); + strip.setPixel(0, 0x000000); + strip.setPixel(1, 0x000000); + strip.setPixel(2, 0x000000); + strip.setPixel(3, 0x000000); + strip.setPixel(4, 0x000000); + strip.setPixel(5, 0x000000); + strip.setPixel(6, 0x000000); + strip.setPixel(7, 0x000000); + strip.setPixel(8, 0x000000); + strip.setPixel(9, 0x000000); + strip.setPixel(10, 0x000000); + strip.setPixel(11, 0x000000); + strip.setPixel(12, 0x000000); + strip.write(); + strip_off(); + wait(0.25); + strip.setPixel(0, 0x00ff00); + strip.setPixel(1, 0x00ff00); + strip.setPixel(2, 0x99ff00); + strip.setPixel(3, 0x99ff00); + strip.setPixel(4, 0xccff00); + strip.setPixel(5, 0xccff00); + strip.setPixel(6, 0xccff00); + strip.setPixel(7, 0xffcc00); + strip.setPixel(8, 0xffcc00); + strip.setPixel(9, 0xff6600); + strip.setPixel(10, 0xff6600); + strip.setPixel(11, 0xff0000); + strip.setPixel(12, 0xff0000); + strip.write(); + strip_off(); + } + } + +void brightnessDown(void) { + + if (bright > 0) + { + bright -= 0.02; + strip.setBrightness(bright); + strip.setPixel(0, 0x000000); + strip.setPixel(1, 0x000000); + strip.setPixel(2, 0x000000); + strip.setPixel(3, 0x000000); + strip.setPixel(4, 0x000000); + strip.setPixel(5, 0x000000); + strip.setPixel(6, 0x000000); + strip.setPixel(7, 0x000000); + strip.setPixel(8, 0x000000); + strip.setPixel(9, 0x000000); + strip.setPixel(10, 0x000000); + strip.setPixel(11, 0x000000); + strip.setPixel(12, 0x000000); + strip.write(); + strip_off(); + wait(0.25); + strip.setPixel(0, 0x00ff00); + strip.setPixel(1, 0x00ff00); + strip.setPixel(2, 0x99ff00); + strip.setPixel(3, 0x99ff00); + strip.setPixel(4, 0xccff00); + strip.setPixel(5, 0xccff00); + strip.setPixel(6, 0xccff00); + strip.setPixel(7, 0xffcc00); + strip.setPixel(8, 0xffcc00); + strip.setPixel(9, 0xff6600); + strip.setPixel(10, 0xff6600); + strip.setPixel(11, 0xff0000); + strip.setPixel(12, 0xff0000); + strip.write(); + strip_off(); + } + } + +void clearLED(void) { + if (bright > 0) + { + + strip.setPixel(0, 0x000000); + strip.setPixel(1, 0x000000); + strip.setPixel(2, 0x000000); + strip.setPixel(3, 0x000000); + strip.setPixel(4, 0x000000); + strip.setPixel(5, 0x000000); + strip.setPixel(6, 0x000000); + strip.setPixel(7, 0x000000); + strip.setPixel(8, 0x000000); + strip.setPixel(9, 0x000000); + strip.setPixel(10, 0x000000); + strip.setPixel(11, 0x000000); + strip.setPixel(12, 0x000000); + strip.write(); + //strip_off(); + led_g1=0, led_g2=0, led_y1=0, led_y2=0, led_r1=0, led_r2=0, led1=0, led2=0, led3=0, led4=0; + } +} + int main() { + + b1.setAssertValue( 0 ); b2.setAssertValue( 0 ); b3.setAssertValue( 0 ); - b4.setAssertValue( 0 ); + - b1.attach_asserted( &brightnessDown ); - b2.attach_asserted( &patternStart ); - b3.attach_asserted( &brightnessUp ); - - b1.attach_asserted_held( &fileDown ); - b3.attach_asserted_held( &fileUp ); + b1.attach_asserted( &clearLED ); + b2.attach_asserted( &brightnessUp); + b3.attach_asserted( &brightnessDown ); + strip.setBrightness(bright); // set default brightness - - // build a list of files - for (unsigned i=0; i<MAX_FILE; i++) - f_list[i] = NULL; - - unsigned i = 0; // index in the file list; - DIR *d = opendir("/local"); // Opens the root directory of the local file system - struct dirent *p; - while((p = readdir(d)) != NULL) { // Print the names of the files in the local file system - int l = strlen(p->d_name); - if (strcmp(&(p->d_name[l-3]), "BMP") == 0) { - char *tmp_str = (char *) malloc(l+1); - strcpy(tmp_str, p->d_name); - i++; - f_list[i] = tmp_str; - printf("f_list: %i:%s\r\n", i, tmp_str); - } - } - closedir(d); - - max_file = i; b1.setSampleFrequency(); b2.setSampleFrequency(); b3.setSampleFrequency(); - b4.setSampleFrequency(); + - while(1) - __WFI(); -} \ No newline at end of file + //routine that tests all light by flicking them all on once + led_g1=1, led_g2=0, led_y1=0, led_y2=0, led_r1=0, led_r2=0; + wait(0.1); + led_g1=0, led_g2=1, led_y1=0, led_y2=0, led_r1=0, led_r2=0; + wait(0.1); + //led_g1=0, led_g2=0, led_y1=1, led_y2=0, led_r1=0, led_r2=0; + wait(0.1); + led_g1=0, led_g2=0, led_y1=0, led_y2=1, led_r1=0, led_r2=0; + wait(0.1); + //led_g1=0, led_g2=0, led_y1=0, led_y2=0, led_r1=1, led_r2=0; + wait(0.1); + led_g1=0, led_g2=0, led_y1=0, led_y2=0, led_r1=0, led_r2=1; + wait(0.1); + led_g1=0, led_g2=0, led_y1=0, led_y2=0, led_r1=0, led_r2=0, led1=1, led2=0, led3=0, led4=0; + wait(0.1); + led_g1=0, led_g2=0, led_y1=0, led_y2=0, led_r1=0, led_r2=0, led1=0, led2=1, led3=0, led4=0; + wait(0.1); + led_g1=0, led_g2=0, led_y1=0, led_y2=0, led_r1=0, led_r2=0, led1=0, led2=0, led3=1, led4=0; + wait(0.1); + led_g1=0, led_g2=0, led_y1=0, led_y2=0, led_r1=0, led_r2=0, led1=0, led2=0, led3=0, led4=1; + wait(0.1); + led4=0; + strip.setPixel(0, 0x000000); + strip.setPixel(1, 0x000000); + strip.setPixel(2, 0x000000); + strip.setPixel(3, 0x000000); + strip.setPixel(4, 0x000000); + strip.setPixel(5, 0x000000); + strip.setPixel(6, 0x000000); + strip.setPixel(7, 0x000000); + strip.setPixel(8, 0x000000); + strip.setPixel(9, 0x000000); + strip.setPixel(10, 0x000000); + strip.setPixel(11, 0x000000); + strip.setPixel(12, 0x000000); + strip.write(); + strip_off(); + wait(0.05); + + + strip.setPixel(0, 0x00ff00); + strip.setPixel(1, 0x000000); + strip.setPixel(2, 0x000000); + strip.setPixel(3, 0x000000); + strip.setPixel(4, 0x000000); + strip.setPixel(5, 0x000000); + strip.setPixel(6, 0x000000); + strip.setPixel(7, 0x000000); + strip.setPixel(8, 0x000000); + strip.setPixel(9, 0x000000); + strip.setPixel(10, 0x000000); + strip.setPixel(11, 0x000000); + strip.setPixel(12, 0x000000); + strip.write(); + // strip_off(); + + + wait(0.05); + + strip.setPixel(0, 0x00ff00); + strip.setPixel(1, 0x00ff00); + strip.setPixel(2, 0x000000); + strip.setPixel(3, 0x000000); + strip.setPixel(4, 0x000000); + strip.setPixel(5, 0x000000); + strip.setPixel(6, 0x000000); + strip.setPixel(7, 0x000000); + strip.setPixel(8, 0x000000); + strip.setPixel(9, 0x000000); + strip.setPixel(10, 0x000000); + strip.setPixel(11, 0x000000); + strip.setPixel(12, 0x000000); + strip.write(); + // strip_off(); + + + wait(0.05); + + strip.setPixel(0, 0x00ff00); + strip.setPixel(1, 0x00ff00); + strip.setPixel(2, 0x99ff00); + strip.setPixel(3, 0x000000); + strip.setPixel(4, 0x000000); + strip.setPixel(5, 0x000000); + strip.setPixel(6, 0x000000); + strip.setPixel(7, 0x000000); + strip.setPixel(8, 0x000000); + strip.setPixel(9, 0x000000); + strip.setPixel(10, 0x000000); + strip.setPixel(11, 0x000000); + strip.setPixel(12, 0x000000); + strip.write(); + // strip_off(); + + + wait(0.05); + + strip.setPixel(0, 0x00ff00); + strip.setPixel(1, 0x00ff00); + strip.setPixel(2, 0x99ff00); + strip.setPixel(3, 0x99ff00); + strip.setPixel(4, 0x000000); + strip.setPixel(5, 0x000000); + strip.setPixel(6, 0x000000); + strip.setPixel(7, 0x000000); + strip.setPixel(8, 0x000000); + strip.setPixel(9, 0x000000); + strip.setPixel(10, 0x000000); + strip.setPixel(11, 0x000000); + strip.setPixel(12, 0x000000); + strip.write(); + // strip_off(); + + + wait(0.05); + + strip.setPixel(0, 0x00ff00); + strip.setPixel(1, 0x00ff00); + strip.setPixel(2, 0x99ff00); + strip.setPixel(3, 0x99ff00); + strip.setPixel(4, 0xccff00); + strip.setPixel(5, 0x000000); + strip.setPixel(6, 0x000000); + strip.setPixel(7, 0x000000); + strip.setPixel(8, 0x000000); + strip.setPixel(9, 0x000000); + strip.setPixel(10, 0x000000); + strip.setPixel(11, 0x000000); + strip.setPixel(12, 0x000000); + strip.write(); + // strip_off(); + + + wait(0.05); + + strip.setPixel(0, 0x00ff00); + strip.setPixel(1, 0x00ff00); + strip.setPixel(2, 0x99ff00); + strip.setPixel(3, 0x99ff00); + strip.setPixel(4, 0xccff00); + strip.setPixel(5, 0xccff00); + strip.setPixel(6, 0x000000); + strip.setPixel(7, 0x000000); + strip.setPixel(8, 0x000000); + strip.setPixel(9, 0x000000); + strip.setPixel(10, 0x000000); + strip.setPixel(11, 0x000000); + strip.setPixel(12, 0x000000); + strip.write(); + // strip_off(); + + + wait(0.05); + + strip.setPixel(0, 0x00ff00); + strip.setPixel(1, 0x00ff00); + strip.setPixel(2, 0x99ff00); + strip.setPixel(3, 0x99ff00); + strip.setPixel(4, 0xccff00); + strip.setPixel(5, 0xccff00); + strip.setPixel(6, 0xccff00); + strip.setPixel(7, 0x000000); + strip.setPixel(8, 0x000000); + strip.setPixel(9, 0x000000); + strip.setPixel(10, 0x000000); + strip.setPixel(11, 0x000000); + strip.setPixel(12, 0x000000); + strip.write(); + // strip_off(); + + + wait(0.05); + + strip.setPixel(0, 0x00ff00); + strip.setPixel(1, 0x00ff00); + strip.setPixel(2, 0x99ff00); + strip.setPixel(3, 0x99ff00); + strip.setPixel(4, 0xccff00); + strip.setPixel(5, 0xccff00); + strip.setPixel(6, 0xccff00); + strip.setPixel(7, 0xffcc00); + strip.setPixel(8, 0x000000); + strip.setPixel(9, 0x000000); + strip.setPixel(10, 0x000000); + strip.setPixel(11, 0x000000); + strip.setPixel(12, 0x000000); + strip.write(); + // strip_off(); + + + wait(0.05); + + strip.setPixel(0, 0x00ff00); + strip.setPixel(1, 0x00ff00); + strip.setPixel(2, 0x99ff00); + strip.setPixel(3, 0x99ff00); + strip.setPixel(4, 0xccff00); + strip.setPixel(5, 0xccff00); + strip.setPixel(6, 0xccff00); + strip.setPixel(7, 0xffcc00); + strip.setPixel(8, 0xffcc00); + strip.setPixel(9, 0x000000); + strip.setPixel(10, 0x000000); + strip.setPixel(11, 0x000000); + strip.setPixel(12, 0x000000); + strip.write(); + // strip_off(); + + + wait(0.05); + + strip.setPixel(0, 0x00ff00); + strip.setPixel(1, 0x00ff00); + strip.setPixel(2, 0x99ff00); + strip.setPixel(3, 0x99ff00); + strip.setPixel(4, 0xccff00); + strip.setPixel(5, 0xccff00); + strip.setPixel(6, 0xccff00); + strip.setPixel(7, 0xffcc00); + strip.setPixel(8, 0xffcc00); + strip.setPixel(9, 0xff6600); + strip.setPixel(10, 0x000000); + strip.setPixel(11, 0x000000); + strip.setPixel(12, 0x000000); + strip.write(); + // strip_off(); + + + wait(0.05); + + strip.setPixel(0, 0x00ff00); + strip.setPixel(1, 0x00ff00); + strip.setPixel(2, 0x99ff00); + strip.setPixel(3, 0x99ff00); + strip.setPixel(4, 0xccff00); + strip.setPixel(5, 0xccff00); + strip.setPixel(6, 0xccff00); + strip.setPixel(7, 0xffcc00); + strip.setPixel(8, 0xffcc00); + strip.setPixel(9, 0xff6600); + strip.setPixel(10, 0xff6600); + strip.setPixel(11, 0x000000); + strip.setPixel(12, 0x000000); + strip.write(); + // strip_off(); + + + wait(0.05); + + strip.setPixel(0, 0x00ff00); + strip.setPixel(1, 0x00ff00); + strip.setPixel(2, 0x99ff00); + strip.setPixel(3, 0x99ff00); + strip.setPixel(4, 0xccff00); + strip.setPixel(5, 0xccff00); + strip.setPixel(6, 0xccff00); + strip.setPixel(7, 0xffcc00); + strip.setPixel(8, 0xffcc00); + strip.setPixel(9, 0xff6600); + strip.setPixel(10, 0xff6600); + strip.setPixel(11, 0xff0000); + strip.setPixel(12, 0x000000); + strip.write(); + // strip_off(); + + + wait(0.05); + + + strip.setPixel(0, 0x00ff00); + strip.setPixel(1, 0x00ff00); + strip.setPixel(2, 0x99ff00); + strip.setPixel(3, 0x99ff00); + strip.setPixel(4, 0xccff00); + strip.setPixel(5, 0xccff00); + strip.setPixel(6, 0xccff00); + strip.setPixel(7, 0xffcc00); + strip.setPixel(8, 0xffcc00); + strip.setPixel(9, 0xff6600); + strip.setPixel(10, 0xff6600); + strip.setPixel(11, 0xff0000); + strip.setPixel(12, 0xff0000); + strip.write(); + // strip_off(); + led_g1=1, led_g2=1, led_y1=1, led_y2=1, led_r1=1, led_r2=1, led1=1, led2=1, led3=0, led4=0; + + wait(0.05); + + + led_g1=0, led_g2=0, led_y1=0, led_y2=0, led_r1=0, led_r2=0, led1=0, led2=0, led3=0, led4=0; + strip.setPixel(0, 0x000000); + strip.setPixel(1, 0x000000); + strip.setPixel(2, 0x000000); + strip.setPixel(3, 0x000000); + strip.setPixel(4, 0x000000); + strip.setPixel(5, 0x000000); + strip.setPixel(6, 0x000000); + strip.setPixel(7, 0x000000); + strip.setPixel(8, 0x000000); + strip.setPixel(9, 0x000000); + strip.setPixel(10, 0x000000); + strip.setPixel(11, 0x000000); + strip.setPixel(12, 0x000000); + strip.write(); + strip_off(); + wait(0.05); + + strip.setPixel(0, 0x00ff00); + strip.setPixel(1, 0x00ff00); + strip.setPixel(2, 0x99ff00); + strip.setPixel(3, 0x99ff00); + strip.setPixel(4, 0xccff00); + strip.setPixel(5, 0xccff00); + strip.setPixel(6, 0xccff00); + strip.setPixel(7, 0xffcc00); + strip.setPixel(8, 0xffcc00); + strip.setPixel(9, 0xff6600); + strip.setPixel(10, 0xff6600); + strip.setPixel(11, 0xff0000); + strip.setPixel(12, 0xff0000); + strip.write(); + // strip_off(); + led_g1=1, led_g2=1, led_y1=1, led_y2=1, led_r1=1, led_r2=1, led1=1, led2=1, led3=0, led4=0; + + + + pc.printf("\n\rDigital Frequency"); + pc.printf("\n\rVoltmeter\n\r"); + wait(1); //wait 1s + + mscnt.attach_us(&ms_counter,1000); //the address of the function to be attached (ms_counter) and the interval (1ms) + + + t.start(); //the time since the beginning of the main loop + beat.rise(&flip); //the interrupt flip is started to the rising edge + + + + + while (1) { + + v = V; + // v *= 3.3; //calculation for voltage reading + + // pc.printf("\n\r%1.3fV", v ); //print volts to pc + + + // if (v==.5) + // {pc.printf("P");}//air ratio is perfect + // if(v<=.4) + // {pc.printf("L");}//air ratio is lean + // if(v>=.6) + // {pc.printf("R");}//air ratio is perfect + + pc.printf("\n\r%i RPM ",BPM); //print RPM to textlcd + + //program loops around in here + if (displayBPMFlag == 1) { //if the flag is set that the BPM can be used in the main loop + displayBPMFlag = 0; //clear displayBPMflag + if (CNT>05&CNT<2000) { //when heart rate is within 30-240BPM + + BPM = 200 + 110000/CNT; //calculate BPM + + pc.printf("%i ms ",CNT); + pc.printf("%i RPM ",BPM); + pc.printf("\r\n",CNT); + + + + if (BPM>500 && BPM<999) + {led_g1=1, led_g2=0, led_y1=0, led_y2=0, led_r1=0, led_r2=0; + led1=1, led2=0, led3=0, led4=0; + strip.setPixel(0, 0x00ff00); + strip.setPixel(1, 0x00ff00); + strip.setPixel(2, 0x000000); + strip.setPixel(3, 0x000000); + strip.setPixel(4, 0x000000); + strip.setPixel(5, 0x000000); + strip.setPixel(6, 0x000000); + strip.setPixel(7, 0x000000); + strip.setPixel(8, 0x000000); + strip.setPixel(9, 0x000000); + strip.setPixel(10, 0x000000); + strip.setPixel(11, 0x000000); + strip.setPixel(12, 0x000000); + strip.write(); + //strip_off(); + wait(0.001); + } + + + if (BPM>1000 && BPM<1499) + {led_g1=1, led_g2=0, led_y1=0, led_y2=0, led_r1=0, led_r2=0; + strip.setPixel(0, 0x00ff00); + strip.setPixel(1, 0x00ff00); + strip.setPixel(2, 0x00ff00); + strip.setPixel(3, 0x00ff00); + strip.setPixel(4, 0x000000); + strip.setPixel(5, 0x000000); + strip.setPixel(6, 0x000000); + strip.setPixel(7, 0x000000); + strip.setPixel(8, 0x000000); + strip.setPixel(9, 0x000000); + strip.setPixel(10, 0x000000); + strip.setPixel(11, 0x000000); + strip.setPixel(12, 0x000000); + strip.write(); + //strip_off(); + wait(0.001); + } + + + + if (BPM>1500 && BPM<1999) + {led_g1=1, led_g2=0, led_y1=0, led_y2=0, led_r1=0, led_r2=0; + strip.setPixel(0, 0x00ff00); + strip.setPixel(1, 0x00ff00); + strip.setPixel(2, 0x00ff00); + strip.setPixel(3, 0x00ff00); + strip.setPixel(4, 0x99ff00); + strip.setPixel(5, 0x99ff00); + strip.setPixel(6, 0x000000); + strip.setPixel(7, 0x000000); + strip.setPixel(8, 0x000000); + strip.setPixel(9, 0x000000); + strip.setPixel(10, 0x000000); + strip.setPixel(11, 0x000000); + strip.setPixel(12, 0x000000); + strip.write(); + //strip_off(); + wait(0.001); + } + + + if (BPM>2000 && BPM<2499) + {led_g1=1, led_g2=1, led_y1=0, led_y2=0, led_r1=0, led_r2=0; //light up 1,2 light at 2000rpm + led1=1, led2=0, led3=0, led4=0; + strip.setPixel(0, 0x00ff00); + strip.setPixel(1, 0x00ff00); + strip.setPixel(2, 0x00ff00); + strip.setPixel(3, 0x00ff00); + strip.setPixel(4, 0x99ff00); + strip.setPixel(5, 0x99ff00); + strip.setPixel(6, 0x99ff00); + strip.setPixel(7, 0x99ff00); + strip.setPixel(8, 0x000000); + strip.setPixel(9, 0x000000); + strip.setPixel(10, 0x000000); + strip.setPixel(11, 0x000000); + strip.setPixel(12, 0x000000); + strip.write(); + //strip_off(); + wait(0.001); + } + + + if (BPM>2500 && BPM<2999) + {led_g1=1, led_g2=1, led_y1=0, led_y2=0, led_r1=0, led_r2=0; //light up 1,2 light at 2000rpm + led1=1, led2=0, led3=0, led4=0; + strip.setPixel(0, 0x00ff00); + strip.setPixel(1, 0x00ff00); + strip.setPixel(2, 0x00ff00); + strip.setPixel(3, 0x00ff00); + strip.setPixel(4, 0x99ff00); + strip.setPixel(5, 0x99ff00); + strip.setPixel(6, 0x99ff00); + strip.setPixel(7, 0x99ff00); + strip.setPixel(8, 0xccff00); + strip.setPixel(9, 0xccff00); + strip.setPixel(10, 0x000000); + strip.setPixel(11, 0x000000); + strip.setPixel(12, 0x000000); + strip.write(); + //strip_off(); + wait(0.001); + } + + + + if (BPM>3000 && BPM<3499) + {led_g1=1, led_g2=1, led_y1=1, led_y2=1, led_r1=0, led_r2=0; //light up 1,2,3 light at 3000rpm + led1=1, led2=0, led3=0, led4=0; + strip.setPixel(0, 0x00ff00); + strip.setPixel(1, 0x00ff00); + strip.setPixel(2, 0x00ff00); + strip.setPixel(3, 0x00ff00); + strip.setPixel(4, 0x99ff00); + strip.setPixel(5, 0x99ff00); + strip.setPixel(6, 0x99ff00); + strip.setPixel(7, 0x99ff00); + strip.setPixel(8, 0xccff00); + strip.setPixel(9, 0xccff00); + strip.setPixel(10, 0xccff00); + strip.setPixel(11, 0xccff00); + strip.setPixel(12, 0x000000); + strip.write(); + //strip_off(); + wait(0.001); + } + + if (BPM>3500 && BPM<3999) + {led_g1=1, led_g2=1, led_y1=1, led_y2=1, led_r1=1, led_r2=1;; //light up 1,2,3,4 light at 4000rpm + led1=1, led2=0, led3=0, led4=0; + strip.setPixel(0, 0x00ff00); + strip.setPixel(1, 0x00ff00); + strip.setPixel(2, 0x00ff00); + strip.setPixel(3, 0x00ff00); + strip.setPixel(4, 0x99ff00); + strip.setPixel(5, 0x99ff00); + strip.setPixel(6, 0x99ff00); + strip.setPixel(7, 0x99ff00); + strip.setPixel(8, 0xccff00); + strip.setPixel(9, 0xccff00); + strip.setPixel(10, 0xccff00); + strip.setPixel(11, 0xccff00); + strip.setPixel(12, 0xffcc00); + strip.write(); + //strip_off(); + wait(0.001); + } + + if (BPM>4000 && BPM<4499) + {led_g1=!led_g1, led_g2=!led_g2, led_y1=!led_y1, led_y2=!led_y2, led_r1=!led_r1, led_r2=!led_r2; //light up 1,2,3,4,5 light at 5000rpm + led1=1, led2=0, led3=0, led4=0; + strip.setPixel(0, 0xffcc00); + strip.setPixel(1, 0xffcc00); + strip.setPixel(2, 0xffcc00); + strip.setPixel(3, 0xffcc00); + strip.setPixel(4, 0xffcc00); + strip.setPixel(5, 0xffcc00); + strip.setPixel(6, 0xffcc00); + strip.setPixel(7, 0xffcc00); + strip.setPixel(8, 0xffcc00); + strip.setPixel(9, 0xffcc00); + strip.setPixel(10, 0xffcc00); + strip.setPixel(11, 0xffcc00); + strip.setPixel(12, 0xffcc00); + strip.write(); + //strip_off(); + wait(0.001); + } + + if (BPM>4500 && BPM<4999) + {led_g1=!led_g1, led_g2=!led_g2, led_y1=!led_y1, led_y2=!led_y2, led_r1=!led_r1, led_r2=!led_r2; //light up 1,2,3,4,5,6 light at 5500rpm + led1=1, led2=0, led3=0, led4=0; + strip.setPixel(0, 0xffcc00); + strip.setPixel(1, 0xffcc00); + strip.setPixel(2, 0xffcc00); + strip.setPixel(3, 0xffcc00); + strip.setPixel(4, 0xffcc00); + strip.setPixel(5, 0xffcc00); + strip.setPixel(6, 0xffcc00); + strip.setPixel(7, 0xff6600); + strip.setPixel(8, 0xff6600); + strip.setPixel(9, 0xff6600); + strip.setPixel(10, 0xff6600); + strip.setPixel(11, 0xff6600); + strip.setPixel(12, 0xff6600); + strip.write(); + //strip_off(); + wait(0.001); + } + + if (BPM>5000 && BPM<5499) + {led_g1=!led_g1, led_g2=!led_g2, led_y1=!led_y1, led_y2=!led_y2, led_r1=!led_r1, led_r2=!led_r2; //flash lights 1,2,3,4,5,6 at 6000rpm + led1=!led1, led2=!led2, led3=!led3, led3=!led3, led4=!led4; + strip.setPixel(0, 0xff6600); + strip.setPixel(1, 0xff6600); + strip.setPixel(2, 0xff6600); + strip.setPixel(3, 0xff6600); + strip.setPixel(4, 0xff6600); + strip.setPixel(5, 0xff6600); + strip.setPixel(6, 0xff6600); + strip.setPixel(7, 0xff6600); + strip.setPixel(8, 0xff6600); + strip.setPixel(9, 0xff6600); + strip.setPixel(10, 0xff6600); + strip.setPixel(11, 0xff6600); + strip.setPixel(12, 0xff6600); + strip.write(); + //strip_off(); + wait(0.001); + } + + + if (BPM>5500 && BPM<5999) + {led_g1=!led_g1, led_g2=!led_g2, led_y1=!led_y1, led_y2=!led_y2, led_r1=!led_r1, led_r2=!led_r2; //flash lights 1,2,3,4,5,6 at 6000rpm + led1=!led1, led2=!led2, led3=!led3, led3=!led3, led4=!led4; + strip.setPixel(0, 0xff6600); + strip.setPixel(1, 0xff6600); + strip.setPixel(2, 0xff6600); + strip.setPixel(3, 0xff6600); + strip.setPixel(4, 0xff6600); + strip.setPixel(5, 0xff6600); + strip.setPixel(6, 0xff6600); + strip.setPixel(7, 0xff0000); + strip.setPixel(8, 0xff0000); + strip.setPixel(9, 0xff0000); + strip.setPixel(10, 0xff0000); + strip.setPixel(11, 0xff0000); + strip.setPixel(12, 0xff0000); + strip.write(); + //strip_off(); + wait(0.001); + } + + if (BPM>6000&& BPM<6499) + {led_g1=!led_g1, led_g2=!led_g2, led_y1=!led_y1, led_y2=!led_y2, led_r1=!led_r1, led_r2=!led_r2; //flash lights 1,2,3,4,5,6 at 6000rpm + led1=!led1, led2=!led2, led3=!led3, led3=!led3, led4=!led4; + strip.setPixel(0, 0xff0000); + strip.setPixel(1, 0xff0000); + strip.setPixel(2, 0xff0000); + strip.setPixel(3, 0xff0000); + strip.setPixel(4, 0xff0000); + strip.setPixel(5, 0xff0000); + strip.setPixel(6, 0xff0000); + strip.setPixel(7, 0xff0000); + strip.setPixel(8, 0xff0000); + strip.setPixel(9, 0xff0000); + strip.setPixel(10, 0xff0000); + strip.setPixel(11, 0xff0000); + strip.setPixel(12, 0xff0000); + strip.write(); + //strip_off(); + wait(0.001); + } + + + if (BPM>6500 && BPM<6999) + {led_g1=!led_g1, led_g2=!led_g2, led_y1=!led_y1, led_y2=!led_y2, led_r1=!led_r1, led_r2=!led_r2; //flash lights 1,2,3,4,5,6 at 6000rpm + led1=!led1, led2=!led2, led3=!led3, led3=!led3, led4=!led4; + strip.setPixel(0, 0xff0000); + strip.setPixel(1, 0xff0000); + strip.setPixel(2, 0xff0000); + strip.setPixel(3, 0xff0000); + strip.setPixel(4, 0xff0000); + strip.setPixel(5, 0xff0000); + strip.setPixel(6, 0xff0000); + strip.setPixel(7, 0xff0000); + strip.setPixel(8, 0xff0000); + strip.setPixel(9, 0xff0000); + strip.setPixel(10, 0xff0000); + strip.setPixel(11, 0xff0000); + strip.setPixel(12, 0xff0000); + strip.write(); + //strip_off(); + wait(0.001); + } + + + + +} +} +} +}