average pressure v2

This commit is contained in:
TheK4n 2022-08-11 22:34:59 +03:00
parent 1881b830b3
commit a4a79d7f91

View File

@ -28,7 +28,7 @@
int pressure, pressure_low, pressure_high; int pressure, pressure_low, pressure_high;
bool is_on_pump, is_on_display, display_cur_pressure; bool is_on_pump, is_on_display, display_cur_pressure;
unsigned long last_time1, last_time2, last_time3, last_time_pressure; unsigned long last_time1, last_time2, last_time3, last_time_pressure;
const int NUM_READ = 5; const int NUM_READ = 3;
EncButton<EB_TICK, S1, S2, KEY> enc; EncButton<EB_TICK, S1, S2, KEY> enc;
GyverTM1637 disp(CLK, DIO); GyverTM1637 disp(CLK, DIO);
@ -44,11 +44,19 @@ int get_constrained_pressure_high(int pressure_high_local) {
return constrain(pressure_high_local, pressure_low+10, MAX_PRESSURE); return constrain(pressure_high_local, pressure_low+10, MAX_PRESSURE);
} }
int getAveragedPressure() { // растянутое среднее арифметическое
long sum = 0; // локальная переменная sum int midArifm2(int newVal) {
for (int i = 0; i < NUM_READ; i++) // согласно количеству усреднений static byte counter = 0; // счётчик
sum += analogRead(pressure_port); // суммируем значения с любого датчика в переменную sum static int prevResult = 0; // хранит предыдущее готовое значение
return ((float)sum / NUM_READ); static int sum = 0; // сумма
sum += newVal; // суммируем новое значение
counter++; // счётчик++
if (counter == NUM_READ) { // достигли кол-ва измерений
prevResult = sum / NUM_READ; // считаем среднее
sum = 0; // обнуляем сумму
counter = 0; // сброс счётчика
}
return prevResult;
} }
void setup() { void setup() {
@ -126,7 +134,7 @@ void loop() {
} }
// Датчик давления 0 - 1000 0 - 10 атмосфер // Датчик давления 0 - 1000 0 - 10 атмосфер
pressure = getAveragedPressure(); pressure = midArifm2(pressure);
// Если прошло 7 сек с момента взаимодействия с энкодером, то отключить дисплей // Если прошло 7 сек с момента взаимодействия с энкодером, то отключить дисплей
if (millis() - last_time2 > 7000) { if (millis() - last_time2 > 7000) {