From a0d522c89faa14d5bb6eb968d56e313b61eb5df4 Mon Sep 17 00:00:00 2001 From: Fisch Date: Sun, 29 Jun 2025 07:49:04 +0200 Subject: [PATCH] change to 500g maximum --- src/main.cpp | 39 ++++++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 3452122..1fa3e6a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -12,6 +12,8 @@ Servo esc; +//2021xxxx: 5834.9399 +//20230422: 5834.1499 #define PIN_BACK 8 @@ -59,7 +61,7 @@ uint8_t btn_set_press=0; #define PIN_LED 13 -#define MAXDOUBLEVALUE 32767 +#define MAXVALUE 65535 //DEFAULT EEPROM SETTINGS #define DEFAULT_FPS 5 @@ -105,7 +107,7 @@ int adc_readings=1; //ca. 700ms for 5 readings, ca 75ms for 1 reading, readings= double weight=0; #define ADCMEDIANVALUES_MAX 91 //needs to be uneven, maximum number, for array declaration -float weightseries[ADCMEDIANVALUES_MAX]; //last n values for median filter +double weightseries[ADCMEDIANVALUES_MAX]; //last n values for median filter uint16_t adcmedianvalues=DEFAULT_ADCMEDIANVALUES; //needs to be uneven //eeprom float adcFilterKeepMedianvaluesFactor=0.8; //how many lowest and highest values will be removed from the array before avaraging (as factor). 0.0 means only median is used. 1.0 means all values are used. uint16_t adcmedianposition=0; @@ -172,8 +174,8 @@ String toString(double w,uint8_t dec); String toString(double w); String toWeightString(double w,uint8_t dec,uint8_t len); String toWeightString(double w); -float getWeightSeriesMax(); -float getWeightSeriesMin(); +double getWeightSeriesMax(); +double getWeightSeriesMin(); double getWeightMedian(); double getWeightFiltered(); float getVoltage(); @@ -312,13 +314,15 @@ void loop() { lcd_backlight_offtimer=0; lcd.backlight(); } - lcd0=toStringBar(weight,0,1000); + lcd0=toStringBar(weight,0,500); //lcd1=toWeightString(weight)+"g"; //lcd1=toWeightString(getWeightMedian())+"g"; lcd1=toWeightString(showweight)+"g"; Serial.print(showweight,3); Serial.println("g"); + + //___ if (btn_back_press==2){ //press BACK to tare scale.tare(); @@ -571,6 +575,7 @@ void loop() { if (millis() >= time_lastadc+time_adcwait) { weight=scale.get_units(adc_readings); + adcmedianposition++; adcmedianposition%=adcmedianvalues; weightseries[adcmedianposition]=weight; //save weight to series for medianfilter @@ -910,11 +915,11 @@ double getWeightMedian() //return median weight from weightseries boolean mask[adcmedianvalues]; //true=disabled value for (uint16_t i=0;i2 && _valuesLeft>(uint16_t)(adcmedianvalues*adcFilterKeepMedianvaluesFactor)) { - cmin=MAXDOUBLEVALUE; - cmax=-MAXDOUBLEVALUE-1; + cmin=MAXVALUE; + cmax=-MAXVALUE-1; for (uint16_t i=0;icmax) cmax=weightseries[i];