change to 500g maximum

This commit is contained in:
interfisch 2025-06-29 07:49:04 +02:00
parent 9daa1c867a
commit a0d522c89f

View file

@ -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;i<adcmedianvalues;i++)
mask[i]=false;
float cmin=MAXDOUBLEVALUE; uint16_t cmin_i=0;
float cmax=0; uint16_t cmax_i=0;
double cmin=MAXVALUE; uint16_t cmin_i=0;
double cmax=0; uint16_t cmax_i=0;
while(cmin!=cmax){ //stop when only one value left
cmin=MAXDOUBLEVALUE;
cmax=-MAXDOUBLEVALUE-1;
cmin=MAXVALUE;
cmax=-MAXVALUE-1;
for (uint16_t i=0;i<adcmedianvalues;i++){
if (!mask[i]){
if (weightseries[i]<cmin){
@ -938,16 +943,16 @@ double getWeightFiltered() {
boolean mask[adcmedianvalues]; //true=disabled value
for (uint16_t i=0;i<adcmedianvalues;i++)
mask[i]=false;
float cmin=MAXDOUBLEVALUE; uint16_t cmin_i=0;
float cmax=0; uint16_t cmax_i=0;
double cmin=MAXVALUE; uint16_t cmin_i=0;
double cmax=0; uint16_t cmax_i=0;
//while(cmin!=cmax){ //stop when only one value left
uint16_t _valuesLeft=adcmedianvalues;
while (_valuesLeft>2 && _valuesLeft>(uint16_t)(adcmedianvalues*adcFilterKeepMedianvaluesFactor))
{
cmin=MAXDOUBLEVALUE;
cmax=-MAXDOUBLEVALUE-1;
cmin=MAXVALUE;
cmax=-MAXVALUE-1;
for (uint16_t i=0;i<adcmedianvalues;i++){
if (!mask[i]){
if (weightseries[i]<cmin){
@ -979,18 +984,18 @@ double getWeightFiltered() {
return sum/meanvalues;
}
float getWeightSeriesMin()
double getWeightSeriesMin()
{
float cmin=MAXDOUBLEVALUE;
double cmin=MAXVALUE;
for (uint16_t i=0;i<adcmedianvalues;i++){
if (weightseries[i]<cmin)
cmin=weightseries[i];
}
return cmin;
}
float getWeightSeriesMax()
double getWeightSeriesMax()
{
float cmax=0;
double cmax=0;
for (uint16_t i=0;i<adcmedianvalues;i++){
if (weightseries[i]>cmax)
cmax=weightseries[i];