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;
|
Servo esc;
|
||||||
|
|
||||||
|
//2021xxxx: 5834.9399
|
||||||
|
//20230422: 5834.1499
|
||||||
|
|
||||||
|
|
||||||
#define PIN_BACK 8
|
#define PIN_BACK 8
|
||||||
|
@ -59,7 +61,7 @@ uint8_t btn_set_press=0;
|
||||||
|
|
||||||
#define PIN_LED 13
|
#define PIN_LED 13
|
||||||
|
|
||||||
#define MAXDOUBLEVALUE 32767
|
#define MAXVALUE 65535
|
||||||
|
|
||||||
//DEFAULT EEPROM SETTINGS
|
//DEFAULT EEPROM SETTINGS
|
||||||
#define DEFAULT_FPS 5
|
#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;
|
double weight=0;
|
||||||
#define ADCMEDIANVALUES_MAX 91 //needs to be uneven, maximum number, for array declaration
|
#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
|
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.
|
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;
|
uint16_t adcmedianposition=0;
|
||||||
|
@ -172,8 +174,8 @@ String toString(double w,uint8_t dec);
|
||||||
String toString(double w);
|
String toString(double w);
|
||||||
String toWeightString(double w,uint8_t dec,uint8_t len);
|
String toWeightString(double w,uint8_t dec,uint8_t len);
|
||||||
String toWeightString(double w);
|
String toWeightString(double w);
|
||||||
float getWeightSeriesMax();
|
double getWeightSeriesMax();
|
||||||
float getWeightSeriesMin();
|
double getWeightSeriesMin();
|
||||||
double getWeightMedian();
|
double getWeightMedian();
|
||||||
double getWeightFiltered();
|
double getWeightFiltered();
|
||||||
float getVoltage();
|
float getVoltage();
|
||||||
|
@ -312,13 +314,15 @@ void loop() {
|
||||||
lcd_backlight_offtimer=0;
|
lcd_backlight_offtimer=0;
|
||||||
lcd.backlight();
|
lcd.backlight();
|
||||||
}
|
}
|
||||||
lcd0=toStringBar(weight,0,1000);
|
lcd0=toStringBar(weight,0,500);
|
||||||
//lcd1=toWeightString(weight)+"g";
|
//lcd1=toWeightString(weight)+"g";
|
||||||
//lcd1=toWeightString(getWeightMedian())+"g";
|
//lcd1=toWeightString(getWeightMedian())+"g";
|
||||||
|
|
||||||
lcd1=toWeightString(showweight)+"g";
|
lcd1=toWeightString(showweight)+"g";
|
||||||
Serial.print(showweight,3); Serial.println("g");
|
Serial.print(showweight,3); Serial.println("g");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//___
|
//___
|
||||||
if (btn_back_press==2){ //press BACK to tare
|
if (btn_back_press==2){ //press BACK to tare
|
||||||
scale.tare();
|
scale.tare();
|
||||||
|
@ -571,6 +575,7 @@ void loop() {
|
||||||
if (millis() >= time_lastadc+time_adcwait)
|
if (millis() >= time_lastadc+time_adcwait)
|
||||||
{
|
{
|
||||||
weight=scale.get_units(adc_readings);
|
weight=scale.get_units(adc_readings);
|
||||||
|
|
||||||
adcmedianposition++;
|
adcmedianposition++;
|
||||||
adcmedianposition%=adcmedianvalues;
|
adcmedianposition%=adcmedianvalues;
|
||||||
weightseries[adcmedianposition]=weight; //save weight to series for medianfilter
|
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
|
boolean mask[adcmedianvalues]; //true=disabled value
|
||||||
for (uint16_t i=0;i<adcmedianvalues;i++)
|
for (uint16_t i=0;i<adcmedianvalues;i++)
|
||||||
mask[i]=false;
|
mask[i]=false;
|
||||||
float cmin=MAXDOUBLEVALUE; uint16_t cmin_i=0;
|
double cmin=MAXVALUE; uint16_t cmin_i=0;
|
||||||
float cmax=0; uint16_t cmax_i=0;
|
double cmax=0; uint16_t cmax_i=0;
|
||||||
while(cmin!=cmax){ //stop when only one value left
|
while(cmin!=cmax){ //stop when only one value left
|
||||||
cmin=MAXDOUBLEVALUE;
|
cmin=MAXVALUE;
|
||||||
cmax=-MAXDOUBLEVALUE-1;
|
cmax=-MAXVALUE-1;
|
||||||
for (uint16_t i=0;i<adcmedianvalues;i++){
|
for (uint16_t i=0;i<adcmedianvalues;i++){
|
||||||
if (!mask[i]){
|
if (!mask[i]){
|
||||||
if (weightseries[i]<cmin){
|
if (weightseries[i]<cmin){
|
||||||
|
@ -938,16 +943,16 @@ double getWeightFiltered() {
|
||||||
boolean mask[adcmedianvalues]; //true=disabled value
|
boolean mask[adcmedianvalues]; //true=disabled value
|
||||||
for (uint16_t i=0;i<adcmedianvalues;i++)
|
for (uint16_t i=0;i<adcmedianvalues;i++)
|
||||||
mask[i]=false;
|
mask[i]=false;
|
||||||
float cmin=MAXDOUBLEVALUE; uint16_t cmin_i=0;
|
double cmin=MAXVALUE; uint16_t cmin_i=0;
|
||||||
float cmax=0; uint16_t cmax_i=0;
|
double cmax=0; uint16_t cmax_i=0;
|
||||||
//while(cmin!=cmax){ //stop when only one value left
|
//while(cmin!=cmax){ //stop when only one value left
|
||||||
uint16_t _valuesLeft=adcmedianvalues;
|
uint16_t _valuesLeft=adcmedianvalues;
|
||||||
|
|
||||||
|
|
||||||
while (_valuesLeft>2 && _valuesLeft>(uint16_t)(adcmedianvalues*adcFilterKeepMedianvaluesFactor))
|
while (_valuesLeft>2 && _valuesLeft>(uint16_t)(adcmedianvalues*adcFilterKeepMedianvaluesFactor))
|
||||||
{
|
{
|
||||||
cmin=MAXDOUBLEVALUE;
|
cmin=MAXVALUE;
|
||||||
cmax=-MAXDOUBLEVALUE-1;
|
cmax=-MAXVALUE-1;
|
||||||
for (uint16_t i=0;i<adcmedianvalues;i++){
|
for (uint16_t i=0;i<adcmedianvalues;i++){
|
||||||
if (!mask[i]){
|
if (!mask[i]){
|
||||||
if (weightseries[i]<cmin){
|
if (weightseries[i]<cmin){
|
||||||
|
@ -979,18 +984,18 @@ double getWeightFiltered() {
|
||||||
return sum/meanvalues;
|
return sum/meanvalues;
|
||||||
}
|
}
|
||||||
|
|
||||||
float getWeightSeriesMin()
|
double getWeightSeriesMin()
|
||||||
{
|
{
|
||||||
float cmin=MAXDOUBLEVALUE;
|
double cmin=MAXVALUE;
|
||||||
for (uint16_t i=0;i<adcmedianvalues;i++){
|
for (uint16_t i=0;i<adcmedianvalues;i++){
|
||||||
if (weightseries[i]<cmin)
|
if (weightseries[i]<cmin)
|
||||||
cmin=weightseries[i];
|
cmin=weightseries[i];
|
||||||
}
|
}
|
||||||
return cmin;
|
return cmin;
|
||||||
}
|
}
|
||||||
float getWeightSeriesMax()
|
double getWeightSeriesMax()
|
||||||
{
|
{
|
||||||
float cmax=0;
|
double cmax=0;
|
||||||
for (uint16_t i=0;i<adcmedianvalues;i++){
|
for (uint16_t i=0;i<adcmedianvalues;i++){
|
||||||
if (weightseries[i]>cmax)
|
if (weightseries[i]>cmax)
|
||||||
cmax=weightseries[i];
|
cmax=weightseries[i];
|
||||||
|
|
Loading…
Add table
Reference in a new issue