shiftlightws2818bcoilxrpm

Dependencies:   mbed NeoStrip PinDetect

Files at this revision

API Documentation at this revision

Comitter:
akatork1
Date:
Mon May 06 14:08:03 2019 +0000
Parent:
0:a26aca3e4760
Commit message:
shiftlight ;

Changed in this revision

BitmapFile.cpp Show diff for this revision Revisions of this file
BitmapFile.h Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/BitmapFile.cpp	Tue Nov 10 21:28:51 2015 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,287 +0,0 @@
-#include "BitmapFile.h"
-
-
-BitmapFile::BitmapFile(char* fname) : m_pFile(NULL)
-{
-	m_fileName = fname;
-	Initialize();
-}
-
-BitmapFile::~BitmapFile()
-{
-	delete[] m_fileName;
-}
-
-bool BitmapFile::Initialize()
-{
-	bool success = true;
-	open();
-	fread(&BMPHeader,sizeof(BMPHeader),1,m_pFile);
-	success = (BMPHeader.b == 'B' && BMPHeader.m == 'M');
-	
-	fread(&m_headerlength,sizeof(m_headerlength),1,m_pFile);
-	fread(&DIBHeader,m_headerlength,1,m_pFile);
-	
-	/*Debugging code*/
-	
-	Serial pc2(USBTX,USBRX);
-	
-	pc2.printf("\n\rFile = %s", m_fileName);
-	
-	pc2.printf("\n\rBMPHeader - Size = %d:\n\r",sizeof(BMPHeader));
-	pc2.printf("\tbm:\t\t%c%c\n\r",BMPHeader.b,BMPHeader.m);
-	pc2.printf("\tfilesize:\t%d\n\r",BMPHeader.filesize);
-	pc2.printf("\treserved:\t%d,%d\n\r",BMPHeader.reserved1,BMPHeader.reserved2);
-	pc2.printf("\toffset:\t\t%d\n\r",BMPHeader.offset);
-	
-	pc2.printf("\n\rDIBHeader - Size = %d:\n\r",sizeof(DIBHeader));
-	//pc2.printf("\theaderLength:\t%d\n\r",DIBHeader.headerLength);
-	pc2.printf("\theight:\t\t\t%d\n\r",DIBHeader.height);
-	pc2.printf("\twidth:\t\t%d\n\r",DIBHeader.width);
-	pc2.printf("\tcplanes:\t\t%d\n\r",DIBHeader.cplanes);
-	pc2.printf("\tcolordepth:\t\t%d\n\r",DIBHeader.colordepth);
-	pc2.printf("\tcompression:\t%d\n\r",DIBHeader.compression);
-	pc2.printf("\tdatasize:\t\t%d\n\r",DIBHeader.datasize);
-	pc2.printf("\tvres:\t\t%d\n\r",DIBHeader.vres);
-	pc2.printf("\thres:\t\t%d\n\r",DIBHeader.hres);
-	
-	
-	
-	m_rowsize = 4*((getColorDepth()*getWidth()+31)/32);
-	
-	close();
-	return success;
-}
-
-void BitmapFile::open()
-{
-	if(m_pFile==NULL)
-	{
-		m_pFile = fopen(m_fileName, "r");
-	}
-}
-
-void BitmapFile::close()
-{
-	if(m_pFile!=NULL)
-	{
-		fclose(m_pFile);
-		m_pFile = NULL;
-	}
-}
-
-/**********************************************************/
-/*BMP Header Gets                                         */
-/**********************************************************/
-
-int BitmapFile::getFileSize()
-{
-	return BMPHeader.filesize;
-}
-
-int BitmapFile::getReserved1()
-{
-	return BMPHeader.reserved1;
-}
-
-int BitmapFile::getReserved2()
-{
-	return BMPHeader.reserved2;
-}
-
-int BitmapFile::getOffset()
-{
-	return BMPHeader.offset;
-}
-
-/**********************************************************/
-/*DIB Header Gets                                         */
-/**********************************************************/
-
-int BitmapFile::getHeaderType()
-{
-	return m_headerlength;
-}
-
-int BitmapFile::getHeight()
-{
-	return DIBHeader.height;
-}
-
-int BitmapFile::getWidth()
-{
-	return DIBHeader.width;
-}
-
-int BitmapFile::getCPlanes()
-{
-	return DIBHeader.cplanes;
-}
-
-int BitmapFile::getColorDepth()
-{
-	return DIBHeader.colordepth;
-}
-
-int BitmapFile::getCompression()
-{
-	return DIBHeader.compression;
-}
-
-int BitmapFile::getDataSize()
-{
-	return DIBHeader.datasize;
-}
-
-int BitmapFile::getHRes()
-{
-	return DIBHeader.hres;
-}
-
-int BitmapFile::getVRes()
-{
-	return DIBHeader.vres;
-}
-
-int BitmapFile::getNumPaletteColors()
-{
-	return DIBHeader.numpalettecolors;
-}
-
-int BitmapFile::getImportantColors()
-{
-	return DIBHeader.importantcolors;
-}
-
-/**********************************************************/
-/*Data Gets                                               */
-/**********************************************************/
-
-int BitmapFile::getRowSize()
-{
-	return m_rowsize;
-}
-
-int BitmapFile::getPixel(int row, int col, bool closefile)
-{
-	int color = -1;
-	if(row>=0 && row < getHeight() && col>=0 && col< getWidth())
-	{
-		if(getColorDepth() == 24)
-		{
-			open();
-			color = 0;	//make sure the last byte is 00
-			
-			int index = getOffset();
-			index += col*3;
-			index += row*4*ceil(getWidth()*3/4.0);
-			fseek(m_pFile, index, SEEK_SET);
-			
-			fread (&color, 3,1,m_pFile);
-			
-			if(closefile)
-			{
-				close();
-			}
-		}
-	}
-	return color;
-}
-
-int *BitmapFile::getRow(int row, bool closefile)
-{
-	open();
-	int *colors = new int[getWidth()];
-	int index = getOffset() + m_rowsize*row;
-	fseek(m_pFile, index, SEEK_SET);
-	if(getColorDepth() == 24)
-	{
-		for(int i=0; i<getWidth(); i++)
-		{
-			fread(&colors[i],3,1,m_pFile);
-		}
-	}
-	else if(getColorDepth() == 1)
-	{
-		char *temp = new char[m_rowsize];
-		for(int i=0; i<m_rowsize; i++)
-		{
-			fread(&temp[i],sizeof(char),1,m_pFile);
-		}
-		for(int i=0; i<getWidth(); i++)
-		{
-			int byte = i / 8;
-			int bit = i % 8;	
-			colors[i] = ((temp[byte] << bit) & 0x80) ? 0xFFFFFF : 0x000000;
-		}
-		delete [] temp;
-	}
-	if(closefile)
-	{
-		close();
-	}
-	return colors;
-}
-
-int *BitmapFile::getRowBW(int row, bool closefile)
-{
-	open();
-	int *colors = new int[getWidth()];
-	int index = getOffset() + m_rowsize*row;
-	fseek(m_pFile, index, SEEK_SET);
-	if(getColorDepth() == 24)
-	{
-		for(int i=0; i<getWidth(); i++)
-		{
-			char temp[3];
-			fread(temp,sizeof(char),3,m_pFile);
-			int average = (temp[0]+temp[1]+temp[2])/3;
-			colors[i] = average>128 ? 0xFFFFFF : 0x000000;
-		}
-	}
-	else if(getColorDepth() == 1)
-	{
-		delete [] colors;
-		colors = getRow(row, closefile);
-	}
-	if(closefile)
-	{
-		close();
-	}
-	return colors;
-}
-
-char *BitmapFile::getRowBitstream(int row, bool closefile)
-{
-	open();
-	int bitsperrow = (getWidth()+7)/8;
-	char *data = new char[bitsperrow];
-	for(int i = 0; i<bitsperrow; i++)
-	{
-		data[i] = 0;
-	}
-	int index = getOffset() + m_rowsize*row;
-	fseek(m_pFile, index, SEEK_SET);
-	
-	if(getColorDepth() == 24)
-	{
-		for(int i=0; i<getWidth(); i++)
-		{
-			char temp[3];
-			fread(temp,sizeof(char),3,m_pFile);
-			int average = (temp[0]+temp[1]+temp[2])/3;
-			int val = average<128?0:1;
-			data[i/8] |= (val*0x80) >> (i%8);
-		}
-	}
-	else if(getColorDepth() == 1)
-	{
-		fread(data,sizeof(char),bitsperrow,m_pFile);
-	}
-	
-	if(closefile)
-	{
-		close();
-	}
-	return data;
-}
\ No newline at end of file
--- a/BitmapFile.h	Tue Nov 10 21:28:51 2015 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,158 +0,0 @@
-/**********************************************************/
-/*BitmapFile.h                                            */
-/**********************************************************/
-
-#include "mbed.h"
-
-/* Class: BitmapFile
- * A parser for bitmap files.
-*/
-class BitmapFile
-{
-private:
-	FILE			*m_pFile;
-	char			*m_fileName;
-	int				m_rowsize;
-	
-	enum headerType {	BITMAPCOREHEADER = 12,
-						BITMAPCOREHEADER2 = 64,
-						BITMAPINFOHEADER = 40,
-						BITMAPV4HEADER = 108,
-						BITMAPV5HEADER = 124};
-						
-	enum compressType {	BI_RGB,
-						BI_RLE8,
-						BI_RLE4,
-						BI_BITFIELDS,
-						BI_JPEG,
-						BI_PNG};
-
-	/* Struct: BMPHeader
-	*
-	* The BMP header of the bitmap is read into this.	
-	*
-	* b - the first byte of the header. Should equal 'B'.
-	* m - the second byte of the header. Should equal 'M'.
-	* filesize - the size of the whole file, in bytes.
-	* reserved 1 and 2 - data specific to the applicaton which created the bitmap.
-	* offset - the offset at which the actual bitmap begins
-	*/
-							
-	__packed struct
-	{
-		char	b:8;
-		char	m:8;
-		int		filesize:32;
-		int		reserved1:16;
-		int		reserved2:16;
-		int		offset:32;
-		
-	} BMPHeader;
-	
-	
-	/* Struct: DIBHeader
-	*
-	* The DIB header of the bitmap is read into this.	
-	*
-	* headerlength - the length of the header. Should equal 40.
-	* height - the height of the bitmap.
-	* width - the width of the bitmap.
-	* cplanes - the number of color planes. Should equal 1.
-	* colordepth - the number of bits per pixel.
-	* compression - the compression method used.
-	* datasize - the size of the bitmap data, in bytes.
-	*/
-
-	int		m_headerlength;
-	__packed struct
-	{
-		int		width:32;
-		int		height:32;
-		int		cplanes:16;
-		int		colordepth:16;
-		int		compression:32;
-		int		datasize:32;
-		int		hres:32;
-		int		vres:32;
-		int		numpalettecolors:32;
-		int		importantcolors:32;		
-	} DIBHeader;
-	
-						
-public:
-	/* Constructor: BitmapFile
-	* Create the BitmapFile class, and call <Initialize>
-	*
-	* Parameters:
-	*  fname - The path of the file to open.
-	*/
-	BitmapFile(char* fname);
-	~BitmapFile();
-
-	/* Function: Initialize
-	* Parses the headers of the bitmap.
-	*
-	* Returns:
-	*  Whether the bitmap is valid.
-	*/
-	bool	Initialize();	//parses the header
-
-	/* Function: open
-	* Opens the bitmap for reading, if not already open.
-	*/
-	void	open();
-
-	/* Function: close
-	* Closes the bitmap.
-	*/
-	void	close();
-
-	/***BMP Header gets begin***/
-	int		getFileSize();
-	int		getReserved1();
-	int		getReserved2();
-	int		getOffset();
-	
-	/***DIB Header gets begin***/
-	int		getHeaderType();
-	int		getHeight();
-	int		getWidth();
-	int		getCPlanes();
-	int		getColorDepth();
-	int		getCompression();
-	int		getDataSize();
-	int		getHRes();
-	int		getVRes();
-	int		getNumPaletteColors();
-	int		getImportantColors();
-	/****DIB Header gets end****/
-	
-	/******Data gets begin******/
-	/* Function: getPixel
-	* Gets the color of a pixel
-	*
-	* Parameters:
-	*  x - The x coordinate of the pixel.
-	*  y - The y coordinate of the pixel.
-	*  closefile - if specified, close the file after reading
-	*
-	* Returns:
-	*  the color of the pixel, in hexadecimal.
-	*/
-	int		getPixel(int x, int y, bool closefile = true);
-	/* Function: getRow
-	* Gets the colors of a row
-	*
-	* Parameters:
-	*  row - The number of the row..
-	*  closefile - if specified, close the file after reading
-	*
-	* Returns:
-	*  An array of the colors of the pixels, in hexadecimal.
-	*/
-	int		*getRow(int row, bool closefile = true);
-	int		*getRowBW(int row, bool closefile = true);
-	char	*getRowBitstream(int row, bool closefile = true);
-	/*******Data gets end*******/
-	int		getRowSize();
-};
\ No newline at end of file
--- 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);
+                }
+               
+                
+                
+              
+}
+}
+}
+}