MasterIphone
Member
Несколько месяцев занимаюсь разработкой своей "железки".
Отрисовал плату(причем несколько версий).
Писал код отдельно по блокам и функционалу, например сначала подключение дисплея нокия 5110 и работу с меню энкодером.
Удалось от esp12f получить много ног, путем использования расширителя портов pcf8575.
Подключение датчиков и вывод на дисплей тоже отдельным кодом тестировал.
Потом изучил работу с mqtt и подключил реле и передачу температур к брокеру.
Все шло хорошо, пока не начался "сбор" этого разрозненного кода воедино.
Вначале столкнулся с проблемой "заторможенности" энкодера, ну понятно, многозадачности у ардуинки нет.
Пробовал все, убрал разумеется по возможности delay() - заменил на millis().
Не заметил разницы, пробовал даже диспетчер задач gyverOS, но тоже нет эффекта.
В итоге пока временно отказался от энкодера, решил просто выводить информацию с датчиков и состояние реле ТЭНов на дисплей и обновлять желаемую температуру на дисплее от брокера.
Но все равно идут задержки, и к этому еще почему то значения температур с датчиков AHT10 и DS18B20 есть в переменных, но на дисплее вместо значений 0, хотя в начале кода декларировал переменный без значений
В общем второй день сижу над кодом, и не пойму куда копать.
Примеров море, но один не работает, другой кривой, третий не подходит под железо.
Помогите с кодом, только просьба не советами из разряда - да там надо "что то абстрактное", прошу помощи именно по коду - что куда поставить, почему задержка и как с ней бороться.
Беда еще в том, что в погоне за пинами, я их задействовал ВСЕ, даже TX/RX и теперь в режиме работы с дисплеем не имею возможности использовать монитор порта для отладки.
Код проекта - скетч по ссылке.
Отрисовал плату(причем несколько версий).
Писал код отдельно по блокам и функционалу, например сначала подключение дисплея нокия 5110 и работу с меню энкодером.
Удалось от esp12f получить много ног, путем использования расширителя портов pcf8575.
Подключение датчиков и вывод на дисплей тоже отдельным кодом тестировал.
Потом изучил работу с mqtt и подключил реле и передачу температур к брокеру.
Все шло хорошо, пока не начался "сбор" этого разрозненного кода воедино.
Вначале столкнулся с проблемой "заторможенности" энкодера, ну понятно, многозадачности у ардуинки нет.
Пробовал все, убрал разумеется по возможности delay() - заменил на millis().
Не заметил разницы, пробовал даже диспетчер задач gyverOS, но тоже нет эффекта.
В итоге пока временно отказался от энкодера, решил просто выводить информацию с датчиков и состояние реле ТЭНов на дисплей и обновлять желаемую температуру на дисплее от брокера.
Но все равно идут задержки, и к этому еще почему то значения температур с датчиков AHT10 и DS18B20 есть в переменных, но на дисплее вместо значений 0, хотя в начале кода декларировал переменный без значений
Код:
int temp_water;//температура с датчика ds18b20
int temp_near;//температура с датчика AHT
В общем второй день сижу над кодом, и не пойму куда копать.
Примеров море, но один не работает, другой кривой, третий не подходит под железо.
Помогите с кодом, только просьба не советами из разряда - да там надо "что то абстрактное", прошу помощи именно по коду - что куда поставить, почему задержка и как с ней бороться.
Беда еще в том, что в погоне за пинами, я их задействовал ВСЕ, даже TX/RX и теперь в режиме работы с дисплеем не имею возможности использовать монитор порта для отладки.
const int NOKIA_DIN = 1; //D10 -невозможно использовать сериал монитор
const int NOKIA_DC = 3; //D9 -невозможно использовать сериал монитор
Код проекта - скетч по ссылке.
MQTT example - Pastebin.com
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
pastebin.com