Пиковый индикатор на arduino и nextion

Тема в разделе "Закажу проект", создана пользователем AlexAS, 28 апр 2019.

  1. AlexAS

    AlexAS Нерд

    закажу пиковый индикатор на ардуино и дисплее Nextion
     
  2. А ардуино и дисплей там зачем? В качестве подставки, что ли? Пиковый детектор это аналоговая цепь.
     
  3. AlexAS

    AlexAS Нерд

    нужно что то типа этого


    но на дисплее Nextion
     
  4. Vovka

    Vovka Гик

    такие штуки лучше делать на светодиодном или газорязрядном индикаторе - ЖКИ не любят холода и начинают тормозить (в смысле символы медленно выводят)
     
  5. Ну и какой режим? Частота входа? Амплитуда входа? Скорость спада? Сопротивление источника сигнала?
     
  6. DIYMan

    DIYMan Гуру

    Александр, если я правильно понял - это вы :) Я там на ардуино.ру отписал в вашей теме ;) Вижу, что не сдаётесь в своих желаниях - это хорошо ;) Да и мне будет интересно - сможет ли кто-нибудь реализовать запрошенное на некстион. Видел бы я очевидное решение - сделал бы, но - до сих пор не вижу, к сожалению.
     
  7. AlexAS

    AlexAS Нерд

    Дмитрий, здравствуйте. да, ну сильно не хватает задержки индикатора на пиках,
    все таки надеюсь, а вдруг получится )))
     
  8. вам внятного описания задачи не хватает
     
  9. AlexAS

    AlexAS Нерд

    попробую описать, нужен индикатор с задержкой скажем на 1 секунду на последнем максимальном значении, алгоритм примерно вижу следующий, берем два значения, последнее и предпоследнее с задержкой скажем 100 мс, сравниваем, и на максимальном значении останавливаем индикатор на 1 сек, пришло на вход АЦП чуть больше напряжения, индикатор перерисовали и опять задержали на 1 сек, как то так ..
     
  10. У вас сигнал будет эти 100мс удерживаться на пике, чтобы система с таким редким опросом его отловила?
     
  11. AlexAS

    AlexAS Нерд

    100мс как пример указал, а так естественно будет меньше и буду подбирать...
     
  12. Вам нужно это заранее знать. Вы можете хоть вечность подбирать, но если сигнал вне диапазона возможностей ацп, то ничего работать не будет.
     
  13. AlexAS

    AlexAS Нерд

    да откуда я могу знать, не программист я, почему и хочу за деньги это реализовать!
     
  14. Это не вопрос программирования. Это вопрос того, что у вас за сигнал. Вы должны это знать. Какой-то программист с форума этого знать не может.
     
  15. AlexAS

    AlexAS Нерд

    сигнал с микрофона, речь, амплитуда от 0 до 4 вольт, звуковой диапазон частота от 100 Гц до 4 кГц,
    это все что я могу сказать про сигнал, только не спрашивайте про пик фактор и прочее )))
     
  16. Ну вот с этого и надо было начинать. Микрофон запитан, или питать его тоже требуется? Паять умеете? Усилитель на микрофоне есть?
     
  17. AlexAS

    AlexAS Нерд

    запитан, паять умеем )))
     
  18. AlexAS

    AlexAS Нерд

    может так будет проще, в этот код можно добавить задержку в 1-2 сек. ?
    Код (C++):
    #include "CoreNextion.h"
    Nextion nextion(Serial);

    // программа измерения среднего напряжения
    // на аналоговых входах A0

    #include <MsTimer2.h>

    #define MEASURE_PERIOD 100  // время периода измерения

    int timeCount;  // счетчик времени
    long  sumU1; // переменные для суммирования кодов АЦП
    long  avarageU1; // сумма кодов АЦП (среднее значение * 100)
    boolean flagReady;  // признак готовности данных измерения

    void setup() {
      Serial.begin(9600);
      nextion.begin();

      MsTimer2::set(1, timerInterupt); // прерывания по таймеру, период 1 мс
      MsTimer2::start();              // разрешение прерывания
    }

    void loop() {

      if ( flagReady == true ) {
        flagReady= false;

        NextionPictureCrop supaProgressBar;
        supaProgressBar.bind(nextion);
        supaProgressBar.displayCropPicture(15, 45, 770, 35, map(avarageU1 / 100., 0, 1023, 0, 100), 0, 1);

        String val = String(avarageU1 / 100.,0);
        NextionText textComponent("t0");
        textComponent.bind(nextion);
        textComponent.text(val.c_str());
        }
    }
    // обработка прерывания 1 мс
    void  timerInterupt() {

      timeCount++;  // +1 счетчик выборок усреднения
      sumU1+= analogRead(A0);  // суммирование кодов АЦП

      // проверка числа выборок усреднения
      if ( timeCount >= MEASURE_PERIOD ) {
        timeCount= 0;
        avarageU1= sumU1; // перегрузка среднего значения
        sumU1= 0;
        flagReady= true;  // признак результат измерений готов
        }
    }


     
     
  19. AlexAS

    AlexAS Нерд

    вопрос решен, всем спасибо!
     
    DIYMan нравится это.