#include #include #include #include "DFRobot_LCD.h" #define Batt A3 #define Sens1 A0 #define LED_R 5 #define LED_G 3 #define LED_B 6 #define format 4 #define increase 8 #define decrease 7 DFRobot_LCD lcd(16,2); //16 characters and 2 lines of show int hits = 0; int avgHits = 0; int HitThsMin = 1000; int HitThsMax = 0; unsigned long mill=0; unsigned long mill1=0; unsigned long mill2=0; unsigned long battt=100; ///RF side #include #include RF24 radio; // CE, CSN const byte address[6] = "00001"; struct dataStruct{ int id; char d[30] ; } M_d; void setup() { Serial.begin(115200); // initialize lcd.init(); delay(200); lcd.setCursor(2,0); lcd.print("MuscleMeter"); delay(2000); radio.begin(9,10); radio.openWritingPipe(address); radio.setPALevel(RF24_PA_MAX); radio.stopListening(); /////////////////////////////////////NRF /////////////////////// pinMode(format, INPUT_PULLUP); pinMode(increase,INPUT_PULLUP); pinMode(decrease,INPUT_PULLUP); pinMode(LED_R, OUTPUT); pinMode(LED_G, OUTPUT); pinMode(LED_B, OUTPUT); //digitalWrite(LED_R,HIGH); analogWrite(LED_R,10); //digitalWrite(LED_B,HIGH); M_d.id = readIntFromEEPROM(10); Serial.print("StartSd\n"); M_d.d[0]='\0'; sprintf(M_d.d, "StartSd"); radio.write(&M_d, sizeof(M_d)); delay(100); Serial.print("StopSd\n"); M_d.d[0]='\0'; sprintf(M_d.d, "StopSd"); radio.write(&M_d, sizeof(M_d)); Calib(); lcdInit(); /////////////////////// } static unsigned long avg=0; static unsigned long count=0; static unsigned long time1=0; static unsigned long time2=0; void loop() { time1=millis(); int data1 = analogRead(Sens1); data1=map(data1,HitThsMin,HitThsMax,0,1000); data1=constrain(data1,0,1000); int battD = analogRead(Batt); battD=map(battD,450,860,0,100); static int MaxData1=0; static bool dect1 = false; ////////////////////////////////////////// if(data1 > 200 && !dect1 ){ dect1 = true; } if(dect1){ if(data1 > MaxData1){ MaxData1=data1; } sendRF(data1,'r',false); Serial.print(data1); Serial.print(",r\n"); } if(data1 < 150 && dect1 ){ dect1 = false; hits ++; LCDOI(MaxData1,2,0,4); LCDOI(hits,13,1,4); count=0; avg=0; MaxData1=0; new_contraption(); delay(500); } ///////////////////////////////////// if(millis()-mill>10000){ if(battD > 20){ LCDOC("B",15,0,1); } if(battD < 20){ LCDOC("b",15,0,1); } if(battD < 0){ lcd.clear(); lcd.setCursor(0,0); lcd.print("Recharge Batt."); while(1){ } } mill=millis(); } ////////////////////////////////// if(millis()-mill2>200){ updateProgressBar(data1); mill2=millis(); } /////////////////////////////// if(!digitalRead(increase) && !digitalRead(decrease)){ Calib(); lcdInit(); } if(!digitalRead(decrease)){ HitThsMin+=10; delay(100); } if(!digitalRead(increase)){ HitThsMin-=10; delay(100); } if(!digitalRead(format)){ if(millis()-mill1>1000 && millis()-mill1<1200){ new_set();} else if(millis()-mill1>10000) { pair();} } else{ mill1=millis(); } updateLed(data1); } void LCDOI (int a, int p1, int p2,int s){ int sz =strlen(a); lcd.setCursor(p1,p2); int b=a; int count; for(int i=0 ;iHitThsMax){ HitThsMax=a; } LCDOI( HitThsMax,5,1,4); } lcd.clear(); lcd.setCursor(0,0); lcd.print("Done Calibration"); delay(1000); lcd.clear(); } void updateLed(int val){ int led=0; int led1=0; if(val<200){ analogWrite(LED_R,0); analogWrite(LED_G,0); analogWrite(LED_B,0); } if(val>200 && val<700){ led=map(val,200,700,0,255); led=constrain(led,0,255); analogWrite(LED_G,led); } if(val>700 && val<900){ led=map(val,700,900,50,255); int led1=map(led,50,255,255,50); led=constrain(led,50,255); analogWrite(LED_G,led1); analogWrite(LED_R,led); } if(val>900){ analogWrite(LED_G,0); analogWrite(LED_R,255); } } void updateProgressBar(int val){ int count = 0; char data[8]; ////////////////////////////////////////////////// val=val/10; if(val>10 && val<20){ count=1; } else if(val>20 && val<30){ count=2; } else if(val>30 && val<40){ count=3; } else if(val>40 && val<50){ count=4; } else if(val>50 && val<70){ count=5; } else if(val>70 && val<90){ count=6; } else if(val>90 && val<95){ count=7; } else if(val>95){ count=8; } ///////////////////////////////////////////////// int i=0; lcd.setCursor(1,1); lcd.print(" "); for(i=0;i