• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Esp12F+AHT10+DS18B20+MQTT+LCD5110+Encoder - проект управления ТЭНами и насосом

Несколько месяцев занимаюсь разработкой своей "железки".
photo1657699243.jpeg
Отрисовал плату(причем несколько версий).
photo1657699291.jpeg
Писал код отдельно по блокам и функционалу, например сначала подключение дисплея нокия 5110 и работу с меню энкодером.
Удалось от esp12f получить много ног, путем использования расширителя портов pcf8575.
Подключение датчиков и вывод на дисплей тоже отдельным кодом тестировал.
Потом изучил работу с mqtt и подключил реле и передачу температур к брокеру.
photo1657670133 (1).jpeg
Все шло хорошо, пока не начался "сбор" этого разрозненного кода воедино.
Вначале столкнулся с проблемой "заторможенности" энкодера, ну понятно, многозадачности у ардуинки нет.
Пробовал все, убрал разумеется по возможности delay() - заменил на millis().
Не заметил разницы, пробовал даже диспетчер задач gyverOS, но тоже нет эффекта.
В итоге пока временно отказался от энкодера, решил просто выводить информацию с датчиков и состояние реле ТЭНов на дисплей и обновлять желаемую температуру на дисплее от брокера.
Но все равно идут задержки, и к этому еще почему то значения температур с датчиков AHT10 и DS18B20 есть в переменных, но на дисплее вместо значений 0, хотя в начале кода декларировал переменный без значений
Код:
int temp_water;//температура с датчика ds18b20
int temp_near;//температура с датчика AHT
photo1657670133.jpeg
В общем второй день сижу над кодом, и не пойму куда копать.
Примеров море, но один не работает, другой кривой, третий не подходит под железо.
Помогите с кодом, только просьба не советами из разряда - да там надо "что то абстрактное", прошу помощи именно по коду - что куда поставить, почему задержка и как с ней бороться.
Беда еще в том, что в погоне за пинами, я их задействовал ВСЕ, даже TX/RX и теперь в режиме работы с дисплеем не имею возможности использовать монитор порта для отладки.

const int NOKIA_DIN = 1; //D10 -невозможно использовать сериал монитор
const int NOKIA_DC = 3; //D9 -невозможно использовать сериал монитор

Код проекта - скетч по ссылке.
 
Сверху Снизу