Ця сторінка виглядає краще якщо JavaScript працює

Filter Easy

 ·  ☕ 2 хв читати

    INTRO

    Перебираючи десятки бібліотек з цифровими фільтрами, мені вони видались не зручними. Тому в мене виникла ідея написати бібліотеку з власними фільтрами. Я хотів щоб фільтри були максимально гнучким в налаштуванях та щоб їх викорисстання у коді було максимально зручним.

    Відтепер для фільтрування вам не потрібно у фільтр переадвати багато параметрів

    1
    
    SumFilterFunc(val,k1,k2);
    

    Я написав фільтри так, що для фільтрування даних потрібно написати максимально лаконічно

    1
    
    Filtered = Fiter(NoFiltered);
    

    Використання фільру нагадуватиме використання звичайної функції

    Як користуватись бібліотекою

    Для початку потрібно заінклюдити файл заголовків Filter.Easy.hpp.

    Після обрати фільтр який буде працювати, напр, CurrentAverage. Це шаблонні фільтри тому потрібно вказувати тип даних які будуть проходити фільтрацію.

    Давайте я покажу як користуватись фільтрами на якомусь прикладі.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    // Підключаємо фільтри з плаваючою крапкою
    #include <Filter.Easy.hpp>
    // У фільтр вливатимуться цілі числа
    CurrentAverage<int> Average;
    
    void setup(){
        // Без налаштувань фільтр нічого не робитиме
        // Тому налаштуємо інтервал фільтрації у 80 мілісек
        Average.setInterval(80);
        // Вагу даних зробимо в 10%
        Average.setCoefficient(0.1);
        // Запустимо серійний порт, щоб спостерігати за потоком даних
        Serial.begin(115200);
    }
    
    void loop(){
        auto dat=analogRead(A0);
        Serial.print(dat);
        Serial.print(' ');
        Serial.println(Average(dat));  
    }
    

    Список фільтрів

    ArithmeticMean

    Фільтр усереднює заміри даних. Має єдиний параметр

    • setRenge - Розмір вибірки. За замовчуванням 1 (Фільтрування не відбувається) Вказує зі скількох замірів вивести середнє значення

    CurrentAverage

    В деяких джерелах його називають “біжуче сережнє”

    Фільтр має два параметри

    • setInterval - Задається інтервал вибірки (0) в мілісекундах
    • setCoefficient - Задається “вага” фільтру (1). Рекомедовано використовувати значення в інтервалі між 0 та 1. Де 0 - фільтр блокує всі значення, а 1 - фільтр не працює. Якщо вказати 0.5 - фільтр пропустить лише половину замірів

    MedianFilter

    Поки єдиний фільтр який по замовчуванню працює. Він не має додаткових параметрів

    Бібліотека буде поповнюватись новими алгоритмами фільтрації даних

    Поширити в
    Підтримайте автора

    Sam4uk
    НАПИСАВ
    Sam4uk
    Embedded Software Engineare C/C++