change to 500g maximum
This commit is contained in:
parent
9daa1c867a
commit
a0d522c89f
1 changed files with 22 additions and 17 deletions
39
src/main.cpp
39
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;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];
|
||||
|
|
Loading…
Add table
Reference in a new issue