Пытаюсь внедрить панель приборов от другого автомобиля в свой.
В процессе испытаний выяснилось несоответствие показаний датчика температуры охлаждающей жидкости и датчика уровня топлива. В этой панели индикаторы ТОЖ и УТ сделаны на логометрах, которыми управляет микроконтроллер ШИМ-ом через мосфеты. Решил передать функцию управления логометрами своему контроллеру на ардуино. Он же управляет светодиодом недостаточного уровня топлива.
Все вроде как работает, и с ТОЖ видимых проблем нет, а вот стрелка уровня топлива постоянно скачет вместе с плесканием топлива в баке.
Понятно что надо сделать сглаживание, но знаний и умений не хватает.
На сколько я понимаю нужно делать несколько измерений в течение определенного времени, складывать их результаты и делить на количество измерений. Помогите написать такой скетч. Может у кого есть готовый алгоритм?
Вот то что пока есть:
PHP код:
int sensePin = 0;
int ledPin = 6;
int sensePin2 = 2;
int ledPin2 = 5;
int dut = 8;
void setup()
{
TCCR0B = TCCR0B & 0b11111000 | 2;
pinMode(ledPin, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(dut, OUTPUT);
int dut = LOW;
}
void loop()
{
int val = analogRead(sensePin);
val = constrain(val, 45, 540);
int val2 = analogRead(sensePin2);
val2 = constrain(val2, 150, 988);
int ledLevel = map(val, 45, 540, 0, 200);
int ledLevel2 = map(val2, 150, 988, 30, 230);
analogWrite(ledPin, ledLevel);
analogWrite(ledPin2, ledLevel2);
if (val > 435)
{
digitalWrite(dut, HIGH);
}
else
{
digitalWrite(dut, LOW);
}
}