
Сообщение от
indy
А как бы загрубить показания фоторезистора?
Скажем постоянно опрашивать датчик и усреднять за последние 30 секунд, не портя многозадачность?
Сейчас он на каждый фонарь на трассе реагирует...
смысл такой: опрашиваем датчик 1 раз в AUTO_LIGHT_DELAY мс, проводим AUTO_LIGHT_COUNT замеров, для которых вычисляем среднее арифметическое, которое мы используем при изменении освещенности:
убрать
// AUTO_LIGHT
#define AUTO_LIGHT_DELAY 1000 // 10 секунд цикл поверки датчика освещения
добавить вместо
PHP код:
// AUTO_LIGHT
#define AUTO_LIGHT_DELAY 500 // цикл опроса датчика освещения
#define AUTO_LIGHT_COUNT 10 // количество опросов датчика перед усреднением
int al_count=0; // счетчик опросов
int al_acc=0; // аккумулятор
после
byte light = analogRead(LIGHT_SENS)>>2; // /4

// интенсивность
добавить
PHP код:
//усреднение
if (al_count++<AUTO_LIGHT_COUNT){
al_acc+=light;
light=aino.light; // используем как флаг "необновления"
} else {
light=al_acc/AUTO_LIGHT_COUNT;
al_count=0; // можно поставить >0 для "взять первые n замеров по усредненным данным"
al_acc=0; //для al_count>0 "0" заменить на "al_count*light";
}