Как ускорить процесс.

Тема в разделе "Arduino & Shields", создана пользователем Beginer, 11 авг 2018 в 23:38.

  1. Beginer

    Beginer Нуб

    Доброго времени суток всем.
    Комрады, подскажите, как оптимизировать процесс.
    Очень тупит тач в части изменения значения времени...
    Хочется, сделать так, что б не ждать по пол-минуты...

    ЗЫ: можно просто указать направление, куда копать...
     

    Вложения:

  2. b707

    b707 Гуру

    убрать из кода все delay()
    Они вроде небольшие, но их много и выполняются по нескольку раз - вот и результат

    И еще - не пробовали использовать массивы и процедуры с параметрами? Делать на каждую из 4 ламп по отдельной копии одной и той же длинной процедуры - это крайне неээфективный код. А если ламп станет 20 - двадцать процедур копировать станете?
     
  3. Beginer

    Beginer Нуб

    Спасибо за совет.
    Но что именно включить в массив?
    Можно написать одну функцию с неопределенным номером лампы и ее каким то образом включать?
    Откровенно говоря, пока не понятно.(
    Принимаю любые мысли)
     
  4. Mitrandir

    Mitrandir Гуру

    Имеется в в виду заменить функции lamp_1 lamp_2....
    На функцию вида void lamp(int numb)
     
  5. Lastik

    Lastik Нерд

    Была похожая проблема с тачскрином.
    У Вас отрисовка информации на дисплее идет постоянно или по событию?
    У меня проблема была как раз в этом, МК была постоянно занята отрисовкой и получалось, что опрос тачскрина был слишком редким. Хорошо подсказали, поставил условия отрисовки по событию и тачскрин ожил.
     
  6. DIYMan

    DIYMan Гуру

    Дык вы ПОСТОЯННО что-то рисуете на экране. Вопрос - ЗАЧЕМ? На экране надо рисовать только то, что изменилось. По итогу - у вас МК занят только тупой постоянной перерисовкой экрана, отсюда все проблемы.

    Идеологически правильно:

    1. Делаем отдельные функции для отрисовки того или иного контента;
    2. Делаем флаги статуса - нуждается тот или иной контент в перерисовке;
    3. Внутри каждой функции отрисовки проверяем - если не надо перерисовывать - вываливаемся, иначе - отрисовываем;
    4. В loop вызываем функции перерисовки;

    При таком подходе у вас будет перерисовываться только то, что изменилось. Следующий шаг - ООП, как правило, когда нужно экранное меню с большим количеством экранов - проще это сделать на ООП, тогда мешанины в loop и setup не будет, совсем. Если интересует архитектура с ООП - пишите, покажу один из вариантов.
     
  7. Beginer

    Beginer Нуб

    А под numb указывать номер лампы?
    Т.е., написать одну функцию и в зависимости от вызова вставлять те или иные данные. Например, номер? или координаты?