|  | @@ -26,7 +26,7 @@
 | 
	
		
			
				|  |  |  #include "EasyNextionLibrary.h"
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  |  // CurrentRanger Firmware Version
 | 
	
		
			
				|  |  | -#define FW_VERSION "1.1.0"
 | 
	
		
			
				|  |  | +#define FW_VERSION "1.1.0b"
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  //***********************************************************************************************************
 | 
	
		
			
				|  |  |  #define BIAS_LED       11
 | 
	
	
		
			
				|  | @@ -135,6 +135,27 @@ Adafruit_FreeTouch qt[3] = {
 | 
	
		
			
				|  |  |  #define NEXTION_REFRESH_INTERVAL       300     //ms
 | 
	
		
			
				|  |  |  EasyNex myNex(SerialNextion);
 | 
	
		
			
				|  |  |  uint8_t nex_page=0;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +bool nex_timer_run=false;
 | 
	
		
			
				|  |  | +bool nex_timerstats_run=false;
 | 
	
		
			
				|  |  | +uint8_t nex_timer_range = 0;
 | 
	
		
			
				|  |  | +uint8_t nex_timer_d0=0;
 | 
	
		
			
				|  |  | +uint8_t nex_timer_d1=0;
 | 
	
		
			
				|  |  | +uint8_t nex_timer_d2=0;
 | 
	
		
			
				|  |  | +uint8_t nex_timer_d3=0;
 | 
	
		
			
				|  |  | +uint8_t nex_timer_set=0;
 | 
	
		
			
				|  |  | +uint8_t nex_timer_output=0;
 | 
	
		
			
				|  |  | +uint32_t nex_timer_start=0;
 | 
	
		
			
				|  |  | +uint32_t nex_timer_stop=0;
 | 
	
		
			
				|  |  | +String nex_timer_current="";
 | 
	
		
			
				|  |  | +bool nex_timer_trigger=false;
 | 
	
		
			
				|  |  | +float nex_stats_min = 0;
 | 
	
		
			
				|  |  | +float nex_stats_avg = 0;
 | 
	
		
			
				|  |  | +uint32_t nex_stats_count=0;
 | 
	
		
			
				|  |  | +float nex_stats_max = 0;
 | 
	
		
			
				|  |  | +String nex_stats_max_s = "";
 | 
	
		
			
				|  |  | +String nex_stats_avg_s = "";
 | 
	
		
			
				|  |  | +String nex_stats_min_s = "";
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  |  int offsetCorrectionValue = 0;
 | 
	
		
			
				|  |  |  uint16_t gainCorrectionValue = 0;
 | 
	
	
		
			
				|  | @@ -187,6 +208,7 @@ void saveLDO(float newLdoValue);
 | 
	
		
			
				|  |  |  void analogReadCorrectionForced(int offset, uint16_t gain);
 | 
	
		
			
				|  |  |  void WDTset();
 | 
	
		
			
				|  |  |  void ldoOptimizeRefresh();
 | 
	
		
			
				|  |  | +void chronometer();
 | 
	
		
			
				|  |  |  float vbat=0, VOUT=0;
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  |  //***********************************************************************************************************
 | 
	
	
		
			
				|  | @@ -634,15 +656,15 @@ void loop() {
 | 
	
		
			
				|  |  |          else 
 | 
	
		
			
				|  |  |          myNex.writeNum("p0.pic",0);  //u8g2.drawStr(88,12,"LoBat!");
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    char buff[9];
 | 
	
		
			
				|  |  | +    char buff[7];
 | 
	
		
			
				|  |  |      float currentout=(((BIAS&&abs(VOUT)>=0.4)||(!BIAS&&VOUT>=0.4))?VOUT:0);
 | 
	
		
			
				|  |  |      snprintf (buff, sizeof(buff), "%f", ((BIAS&&abs(VOUT)>=0.4)||(!BIAS&&VOUT>=0.4))?VOUT:0, (abs(VOUT)>=1000?0:1));
 | 
	
		
			
				|  |  |      if ((!BIAS && readDiff>ADC_OVERLOAD) || (BIAS && abs(readDiff)>ADC_OVERLOAD/2))
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  | -        if (nex_page == 0 || nex_page==1) 
 | 
	
		
			
				|  |  | +        if (nex_page == 0 || nex_page==1 || nex_page==6) 
 | 
	
		
			
				|  |  |          myNex.writeStr("current.txt","OVERLOAD!");
 | 
	
		
			
				|  |  |      }else{
 | 
	
		
			
				|  |  | -        if (nex_page == 0 || nex_page==1) 
 | 
	
		
			
				|  |  | +        if (nex_page == 0 || nex_page==1 || nex_page==6) 
 | 
	
		
			
				|  |  |          myNex.writeStr("current.txt",String(buff)+rangeUnit+'A');
 | 
	
		
			
				|  |  |          if (nex_page==1){
 | 
	
		
			
				|  |  |          int Value = (uint8_t) map(currentout,0,3300,0,255);  //Read the pot value ann map it to 0.255 (max value of waveform=255)
 | 
	
	
		
			
				|  | @@ -655,6 +677,57 @@ void loop() {
 | 
	
		
			
				|  |  |          myNex.writeStr(Tosend,"cmd");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }  
 | 
	
		
			
				|  |  | +    if (nex_page == 5 ){
 | 
	
		
			
				|  |  | +      chronometer();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    float current_test=currentout;
 | 
	
		
			
				|  |  | +    if (rangeUnit=='m'){
 | 
	
		
			
				|  |  | +      current_test=current_test*1000000;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    if (rangeUnit=='u'){
 | 
	
		
			
				|  |  | +      current_test=current_test*1000;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    if (nex_timer_run )
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        Serial.println(currentout);
 | 
	
		
			
				|  |  | +        Serial.println(current_test);
 | 
	
		
			
				|  |  | +        if (nex_timer_set!=0){
 | 
	
		
			
				|  |  | +          if (current_test>nex_timer_set){
 | 
	
		
			
				|  |  | +            nex_timer_run =false;
 | 
	
		
			
				|  |  | +            nex_timer_stop = millis();
 | 
	
		
			
				|  |  | +            nex_timer_trigger=true;
 | 
	
		
			
				|  |  | +            nex_timer_current = String(buff)+rangeUnit+'A';
 | 
	
		
			
				|  |  | +            if (nex_page==5){
 | 
	
		
			
				|  |  | +              myNex.writeNum("stoptimer.bco",NEX_BLUE);
 | 
	
		
			
				|  |  | +              myNex.writeNum("starttimer.bco",NEX_LIGHT_GREY);
 | 
	
		
			
				|  |  | +              myNex.writeStr("timercurrent.txt",nex_timer_current);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if (nex_page==0){
 | 
	
		
			
				|  |  | +              myNex.writeNum("timer.pic",21);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    if (nex_timerstats_run)
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +      if (nex_stats_min > current_test)
 | 
	
		
			
				|  |  | +      {
 | 
	
		
			
				|  |  | +        nex_stats_min = current_test;
 | 
	
		
			
				|  |  | +        nex_stats_min_s = String(buff)+rangeUnit+'A';
 | 
	
		
			
				|  |  | +        myNex.writeStr("avgmin.txt",nex_stats_min_s);
 | 
	
		
			
				|  |  | +      } 
 | 
	
		
			
				|  |  | +      if (nex_stats_max < current_test)
 | 
	
		
			
				|  |  | +      {
 | 
	
		
			
				|  |  | +        nex_stats_max = current_test;
 | 
	
		
			
				|  |  | +        nex_stats_max_s = String(buff)+rangeUnit+'A';
 | 
	
		
			
				|  |  | +        myNex.writeStr("avgmax.txt",nex_stats_max_s);
 | 
	
		
			
				|  |  | +      } 
 | 
	
		
			
				|  |  | +          
 | 
	
		
			
				|  |  | +    } 
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  |    WDTclear();
 | 
	
	
		
			
				|  | @@ -1081,16 +1154,63 @@ void trigger16(){
 | 
	
		
			
				|  |  |    if( rangeUnit=='n') myNex.writeNum("b0.bco",NEX_BLUE);
 | 
	
		
			
				|  |  |    if( rangeUnit=='u') myNex.writeNum("b1.bco",NEX_BLUE);
 | 
	
		
			
				|  |  |    if( rangeUnit=='m') myNex.writeNum("b2.bco",NEX_BLUE);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +  if (nex_timer_run){
 | 
	
		
			
				|  |  | +        myNex.writeNum("timer.pic",20);
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |    nex_page=0;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  void trigger17(){
 | 
	
		
			
				|  |  |    lastKeepAlive=millis(); 
 | 
	
		
			
				|  |  |    Beep(20, false);
 | 
	
		
			
				|  |  | +  myNex.writeStr("page page5","cmd");
 | 
	
		
			
				|  |  | +  if( nex_timer_range==0) 
 | 
	
		
			
				|  |  | +    myNex.writeNum("tma.bco",NEX_BLUE) ;
 | 
	
		
			
				|  |  | +  else 
 | 
	
		
			
				|  |  | +    myNex.writeNum("tma.bco",NEX_LIGHT_GREY) ;
 | 
	
		
			
				|  |  | +  if( nex_timer_range==1) 
 | 
	
		
			
				|  |  | +    myNex.writeNum("tua.bco",NEX_BLUE) ;
 | 
	
		
			
				|  |  | +  else 
 | 
	
		
			
				|  |  | +    myNex.writeNum("tua.bco",NEX_LIGHT_GREY) ;
 | 
	
		
			
				|  |  | +  if( nex_timer_range==2) 
 | 
	
		
			
				|  |  | +    myNex.writeNum("tna.bco",NEX_BLUE) ;
 | 
	
		
			
				|  |  | +  else 
 | 
	
		
			
				|  |  | +    myNex.writeNum("tna.bco",NEX_LIGHT_GREY) ;
 | 
	
		
			
				|  |  | +  myNex.writeNum("dec0.val",nex_timer_d0 );
 | 
	
		
			
				|  |  | +  myNex.writeNum("dec1.val",nex_timer_d1 );
 | 
	
		
			
				|  |  | +  myNex.writeNum("dec2.val",nex_timer_d2 );
 | 
	
		
			
				|  |  | +  myNex.writeNum("dec3.val",nex_timer_d3 );
 | 
	
		
			
				|  |  | +  if (nex_timer_run){
 | 
	
		
			
				|  |  | +    myNex.writeNum("starttimer.bco",NEX_BLUE);
 | 
	
		
			
				|  |  | +    myNex.writeNum("stoptimer.bco",NEX_LIGHT_GREY);
 | 
	
		
			
				|  |  | +  }else{
 | 
	
		
			
				|  |  | +    myNex.writeNum("stoptimer.bco",NEX_BLUE);
 | 
	
		
			
				|  |  | +    myNex.writeNum("starttimer.bco",NEX_LIGHT_GREY);  
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  myNex.writeStr("timercurrent.txt",nex_timer_current);
 | 
	
		
			
				|  |  | +  nex_page=5;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +void trigger18(){
 | 
	
		
			
				|  |  | +  Beep(20, false);
 | 
	
		
			
				|  |  | +  myNex.writeStr("page page6","cmd");
 | 
	
		
			
				|  |  | +  if (nex_timerstats_run){
 | 
	
		
			
				|  |  | +    myNex.writeNum("startstats.bco",NEX_BLUE);
 | 
	
		
			
				|  |  | +    myNex.writeNum("stopstats.bco",NEX_LIGHT_GREY);
 | 
	
		
			
				|  |  | +    myNex.writeStr("avgmin.txt",nex_stats_min_s);
 | 
	
		
			
				|  |  | +    myNex.writeStr("avgavg.txt",nex_stats_avg_s);
 | 
	
		
			
				|  |  | +    myNex.writeStr("avgmax.txt",nex_stats_max_s);
 | 
	
		
			
				|  |  | +  }else{
 | 
	
		
			
				|  |  | +    myNex.writeNum("stopstats.bco",NEX_BLUE);
 | 
	
		
			
				|  |  | +    myNex.writeNum("startstats.bco",NEX_LIGHT_GREY);  
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  nex_page=6;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +void trigger19(){
 | 
	
		
			
				|  |  | +  lastKeepAlive=millis(); 
 | 
	
		
			
				|  |  | +  Beep(20, false);
 | 
	
		
			
				|  |  |   myNex.writeStr("page page1","cmd");
 | 
	
		
			
				|  |  |   nex_page=1;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  | -void trigger18(){
 | 
	
		
			
				|  |  | +void trigger20(){
 | 
	
		
			
				|  |  |    lastKeepAlive=millis(); 
 | 
	
		
			
				|  |  |    Beep(20, false);
 | 
	
		
			
				|  |  |    myNex.writeStr("page page2","cmd");
 | 
	
	
		
			
				|  | @@ -1100,18 +1220,18 @@ void trigger18(){
 | 
	
		
			
				|  |  |      vbat=adcRead(SENSE_VIN);
 | 
	
		
			
				|  |  |      analogReferenceHalf(true);
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | -    else vbat=adcRead(SENSE_VIN);
 | 
	
		
			
				|  |  | +  else vbat=adcRead(SENSE_VIN);
 | 
	
		
			
				|  |  |      vbat=((vbat/ADCFULLRANGE) * ldoValue) * 1.5; //1.5 given by vbat->A5 resistor ratio (1 / (2M * 1/(1M+2M)))
 | 
	
		
			
				|  |  | -    nex_page=2;
 | 
	
		
			
				|  |  | -    myNex.writeStr("page page2","cmd");
 | 
	
		
			
				|  |  | -    myNex.writeStr("offset.txt",(String)offsetCorrectionValue);
 | 
	
		
			
				|  |  | -    myNex.writeStr("gain.txt",(String)gainCorrectionValue);
 | 
	
		
			
				|  |  | -    myNex.writeStr("ldo.txt",String(ldoValue,3));
 | 
	
		
			
				|  |  | -    myNex.writeStr("fw.txt",(String)FW_VERSION);
 | 
	
		
			
				|  |  | -    myNex.writeStr("bat.txt",(String)vbat);
 | 
	
		
			
				|  |  |    nex_page=2;
 | 
	
		
			
				|  |  | +  myNex.writeStr("page page2","cmd");
 | 
	
		
			
				|  |  | +  myNex.writeStr("offset.txt",(String)offsetCorrectionValue);
 | 
	
		
			
				|  |  | +  myNex.writeStr("gain.txt",(String)gainCorrectionValue);
 | 
	
		
			
				|  |  | +  myNex.writeStr("ldo.txt",String(ldoValue,3));
 | 
	
		
			
				|  |  | +  myNex.writeStr("fw.txt",(String)FW_VERSION);
 | 
	
		
			
				|  |  | +  myNex.writeStr("bat.txt",(String)vbat);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  | -void trigger19(){
 | 
	
		
			
				|  |  | +void trigger21(){
 | 
	
		
			
				|  |  |    lastKeepAlive=millis();
 | 
	
		
			
				|  |  |    Beep(20, false);
 | 
	
		
			
				|  |  |    myNex.writeStr("page page3","cmd");
 | 
	
	
		
			
				|  | @@ -1162,4 +1282,213 @@ void trigger35()
 | 
	
		
			
				|  |  |        myNex.writeNum("bluetooth.pic",13);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +void update_current_limit()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  nex_timer_set= nex_timer_d0*1000+nex_timer_d1*100+nex_timer_d2*10+nex_timer_d0;
 | 
	
		
			
				|  |  | +  Beep(20, false);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +void chronometer(void){   //This function print:   "New: Actual time"
 | 
	
		
			
				|  |  | +  unsigned long currentMillis = millis();  
 | 
	
		
			
				|  |  | +  uint32_t diff_time=0;
 | 
	
		
			
				|  |  | +  if (nex_timer_run){
 | 
	
		
			
				|  |  | +      diff_time=currentMillis-nex_timer_start;
 | 
	
		
			
				|  |  | +  }else{
 | 
	
		
			
				|  |  | +      diff_time=nex_timer_stop-nex_timer_start;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  long days = 0;
 | 
	
		
			
				|  |  | +  long hours = 0;
 | 
	
		
			
				|  |  | +  long mins = 0;
 | 
	
		
			
				|  |  | +  long secs = 0;
 | 
	
		
			
				|  |  | +  String secs_o = ":";
 | 
	
		
			
				|  |  | +  String mins_o = ":";
 | 
	
		
			
				|  |  | +  String hours_o = ":";
 | 
	
		
			
				|  |  | +  secs = diff_time / 1000; // set the seconds remaining
 | 
	
		
			
				|  |  | +  mins = secs / 60; //convert seconds to minutes
 | 
	
		
			
				|  |  | +  hours = mins / 60; //convert minutes to hours
 | 
	
		
			
				|  |  | +  days = hours / 24; //convert hours to days
 | 
	
		
			
				|  |  | +  secs = secs - (mins * 60); //subtract the coverted seconds to minutes in order to display 59 secs max
 | 
	
		
			
				|  |  | +  mins = mins - (hours * 60); //subtract the coverted minutes to hours in order to display 59 minutes max
 | 
	
		
			
				|  |  | +  hours = hours - (days * 24); //subtract the coverted hours to days in order to display 23 hours max
 | 
	
		
			
				|  |  | +  if (secs < 10) {
 | 
	
		
			
				|  |  | +    secs_o = ":0";
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  if (mins < 10) {
 | 
	
		
			
				|  |  | +    mins_o = ":0";
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  if (hours < 10) {
 | 
	
		
			
				|  |  | +    hours_o = ":0";
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  myNex.writeStr("timertext.txt",String(hours)+mins_o+String(mins)+secs_o+String(secs));
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +void trigger64()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  if (nex_timer_d0==9){
 | 
	
		
			
				|  |  | +    nex_timer_d0=0;
 | 
	
		
			
				|  |  | +  }else{
 | 
	
		
			
				|  |  | +    nex_timer_d0++;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  myNex.writeNum("dec0.val",nex_timer_d0);
 | 
	
		
			
				|  |  | +  update_current_limit();
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +void trigger65()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  if (nex_timer_d1==9){
 | 
	
		
			
				|  |  | +    nex_timer_d1=0;
 | 
	
		
			
				|  |  | +  }else{
 | 
	
		
			
				|  |  | +    nex_timer_d1++;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  myNex.writeNum("dec1.val",nex_timer_d1);
 | 
	
		
			
				|  |  | +  update_current_limit();
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +void trigger66()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  if (nex_timer_d2==9){
 | 
	
		
			
				|  |  | +    nex_timer_d2=0;
 | 
	
		
			
				|  |  | +  }else{
 | 
	
		
			
				|  |  | +    nex_timer_d2++;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  myNex.writeNum("dec2.val",nex_timer_d2);
 | 
	
		
			
				|  |  | +  update_current_limit();
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +void trigger67()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  if (nex_timer_d3==9){
 | 
	
		
			
				|  |  | +    nex_timer_d3=0;
 | 
	
		
			
				|  |  | +  }else{
 | 
	
		
			
				|  |  | +    nex_timer_d3++;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  myNex.writeNum("dec3.val",nex_timer_d3);
 | 
	
		
			
				|  |  | +  update_current_limit();
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +void trigger72()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  if (nex_timer_d0==0){
 | 
	
		
			
				|  |  | +    nex_timer_d0=9;
 | 
	
		
			
				|  |  | +  }else{
 | 
	
		
			
				|  |  | +    nex_timer_d0--;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  myNex.writeNum("dec0.val",nex_timer_d0);
 | 
	
		
			
				|  |  | +  update_current_limit();
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +void trigger73()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  if (nex_timer_d1==0){
 | 
	
		
			
				|  |  | +    nex_timer_d1=9;
 | 
	
		
			
				|  |  | +  }else{
 | 
	
		
			
				|  |  | +    nex_timer_d1--;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  myNex.writeNum("dec1.val",nex_timer_d1);
 | 
	
		
			
				|  |  | +  update_current_limit();
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +void trigger80()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  if (nex_timer_d2==0){
 | 
	
		
			
				|  |  | +    nex_timer_d2=9;
 | 
	
		
			
				|  |  | +  }else{
 | 
	
		
			
				|  |  | +    nex_timer_d2--;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  myNex.writeNum("dec2.val",nex_timer_d2);
 | 
	
		
			
				|  |  | +  update_current_limit();
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +void trigger81()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  if (nex_timer_d3==0){
 | 
	
		
			
				|  |  | +    nex_timer_d3=9;
 | 
	
		
			
				|  |  | +  }else{
 | 
	
		
			
				|  |  | +    nex_timer_d3--;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  myNex.writeNum("dec3.val",nex_timer_d3);
 | 
	
		
			
				|  |  | +  update_current_limit();
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +void trigger82()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  nex_timer_range=0;
 | 
	
		
			
				|  |  | +  myNex.writeNum("tma.bco",NEX_BLUE);
 | 
	
		
			
				|  |  | +  myNex.writeNum("tua.bco",NEX_LIGHT_GREY);
 | 
	
		
			
				|  |  | +  myNex.writeNum("tna.bco",NEX_LIGHT_GREY);
 | 
	
		
			
				|  |  | +  Beep(20, false);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +void trigger83()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  nex_timer_range=1;
 | 
	
		
			
				|  |  | +  myNex.writeNum("tma.bco",NEX_LIGHT_GREY);
 | 
	
		
			
				|  |  | +  myNex.writeNum("tua.bco",NEX_BLUE);
 | 
	
		
			
				|  |  | +  myNex.writeNum("tna.bco",NEX_LIGHT_GREY);
 | 
	
		
			
				|  |  | +  Beep(20, false);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +void trigger84()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  nex_timer_range=2;
 | 
	
		
			
				|  |  | +  myNex.writeNum("tma.bco",NEX_LIGHT_GREY);
 | 
	
		
			
				|  |  | +  myNex.writeNum("tua.bco",NEX_LIGHT_GREY);
 | 
	
		
			
				|  |  | +  myNex.writeNum("tna.bco",NEX_BLUE);
 | 
	
		
			
				|  |  | +  Beep(20, false);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +void trigger85()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  myNex.writeNum("starttimer.bco",NEX_BLUE);
 | 
	
		
			
				|  |  | +  myNex.writeNum("stoptimer.bco",NEX_LIGHT_GREY);
 | 
	
		
			
				|  |  | +  nex_timer_current="";
 | 
	
		
			
				|  |  | +  myNex.writeStr("timercurrent.txt",nex_timer_current);
 | 
	
		
			
				|  |  | +  if (!nex_timer_run){
 | 
	
		
			
				|  |  | +    nex_timer_start=millis();
 | 
	
		
			
				|  |  | +    nex_timer_run=true;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  Beep(20, false);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +void trigger86()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  myNex.writeNum("stoptimer.bco",NEX_BLUE);
 | 
	
		
			
				|  |  | +  myNex.writeNum("starttimer.bco",NEX_LIGHT_GREY);
 | 
	
		
			
				|  |  | +  if (nex_timer_run){
 | 
	
		
			
				|  |  | +    nex_timer_stop=millis();
 | 
	
		
			
				|  |  | +    nex_timer_run=false;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  nex_timer_current="";
 | 
	
		
			
				|  |  | +  myNex.writeStr("timercurrent.txt",nex_timer_current);
 | 
	
		
			
				|  |  | +  Beep(20, false);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +void trigger87()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  myNex.writeNum("startstats.bco",NEX_BLUE);
 | 
	
		
			
				|  |  | +  myNex.writeNum("stopstats.bco",NEX_LIGHT_GREY);
 | 
	
		
			
				|  |  | +  nex_timer_current="";
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  if (!nex_timerstats_run){
 | 
	
		
			
				|  |  | +    nex_timerstats_run=true;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  nex_stats_min = 0;
 | 
	
		
			
				|  |  | +  nex_stats_count=0;
 | 
	
		
			
				|  |  | +  nex_stats_max=0;
 | 
	
		
			
				|  |  | +  nex_stats_avg=0;
 | 
	
		
			
				|  |  | +  nex_stats_avg_s="0nA";
 | 
	
		
			
				|  |  | +  nex_stats_min_s="0nA";
 | 
	
		
			
				|  |  | +  nex_stats_max_s="0nA";
 | 
	
		
			
				|  |  | +  myNex.writeStr("avgmin.txt",nex_stats_min_s);
 | 
	
		
			
				|  |  | +  myNex.writeStr("avgavg.txt",nex_stats_avg_s);
 | 
	
		
			
				|  |  | +  myNex.writeStr("avgmax.txt",nex_stats_max_s);
 | 
	
		
			
				|  |  | +  Beep(20, false);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +void trigger88()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  myNex.writeNum("stopstats.bco",NEX_BLUE);
 | 
	
		
			
				|  |  | +  myNex.writeNum("startstats.bco",NEX_LIGHT_GREY);
 | 
	
		
			
				|  |  | +  if (nex_timerstats_run){
 | 
	
		
			
				|  |  | +    nex_timerstats_run=false;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  nex_timer_current="";
 | 
	
		
			
				|  |  | +  nex_stats_min = 0;
 | 
	
		
			
				|  |  | +  nex_stats_count=0;
 | 
	
		
			
				|  |  | +  nex_stats_max=0;
 | 
	
		
			
				|  |  | +  nex_stats_avg=0;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  Beep(20, false);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  }
 |