375 градусов это те же 15 для визуализации, но такой подход позволит работать с усреднением адекватно, писать в буфер-массив разницу между последним и текущим положением, переход через 0 - пофиг, все что с 360 в 0 ушло писать в плюс к углам, и по мере заполнения буффера перезаписывать его грубо говоря завести массив M1 из 1000 значений, который пишется по кругу, каждый цикл пишем разницу между последним и текущим значением в новую ячейку, причем не 0-360, а 0-36000 например, а потом раз в N минут сортируем массив M1 и берем среднее значение 10 элементов посередине если верхнее число превышает 36000 - значит флюгер сделал 10 полных оборотов в одну сторону, обнуляем массив, так сказать "перезагрузка" - на выходе какое-то время фиксируем последнее значение
Комментарии: 9
Z-vladimir
Ну так сложно, он может находиться в одном положении почти весть день, так и при смене погоды может за менее часа сделать полный оборот. Такой массив плк наверно не вытянет.
Strat
так и пусть висит ) по кругу массив в те же условные 1000 значений писать будете главное начальную величину тоже не 0 брать - а условный "центр" вращения
Z-vladimir
При слабом ветре он вообще может болтаться аж где-то +/- 45 градусов)) такой разбег усложняет Данные нужны в реальном времени. Задача в управлении мощностью направленных испарителей. В зависимости от силы и направления ветра, на одних испарителях мощность снижается, на других повышается. Всё это нужно чтобы минимизировать площадь рассеивания т.к. испаряемая вода с большим содержанием солей и чтобы сильно не потерять в эффективности.
Strat
ну вот смотрите - к примеру время цикла 100мс, массив на 1000 элементов - получаем полное обновление данных в течение минуты, мало - уменьшаем либо число элементов, либо увеличиваем время цикла, но чем больше элементов - тем точнее будет усреднённое значение я насчет реализации не совсем верно написал изначально - нужно вести массив в радианах - каждый цикл смотреть показания с датчика относительно предыдущего - получать знак + / - и количество градусов, потом переводить в радианы и потом в ячейку N+1 записывать сумму из вычисленной величины и значения в ячейке N затем уже радианное значение усреднять и переводить обратно в градусы (обрезая до 0-359) по крайней мере мне кажется так должно заработать относительно малой кровью
Z-vladimir
Так тоже самое как и в градусах, только диапазон другой 0-6.18
Strat
неа, с таким подсчетом переход с 359 градусов до 15 остаётся числом, с которым можно работать и усреднять, вместо того чтоб вычислять среднее меджу 359 и 15
Z-vladimir
Так вот же, 360=2pi и дальше тоже с нуля
Strat
Радиан не ограничен числом сверху, можно 55 оборотов выразить в радианах и сохранить угол) И для расчета мгновенного положения можно как начальное положение взять 10 оборотов по часовой стрелке апример, и от него уже угол поворота записывать Полученное усреднённое число в итоге разделить на один радиан, отбросить целую часть, а остаток перевести в градусы