Программа для микроконтроллера ESP32, который взаимодействует с датчиками температуры DS18B20 через интерфейс OneWire и выводит информацию на VGA-дисплей. Сначала подключаются библиотеки: ESP32Video для работы с VGA, шрифт, OneWire и DallasTemperature для датчиков. Потом определяются пины для RGB, синхронизации VGA, датчика и сброса. Создаются объекты для VGA и датчиков.
Переменные deviceCount и numberedDevices, похоже, отслеживают общее количество датчиков и уже пронумерованных. Массив deviceNumbered, вероятно, хранит состояние нумерации каждого датчика.
Функция writeNumberToSensor записывает номер в EEPROM датчика, используя команды OneWire. Номер сохраняется в регистре Alarm High.
Основной цикл проверяет кнопку сброса. Если нажата, вызывается resetNumbering, который обнуляет счетчики и стирает номера в EEPROM всех датчиков. Затем запрашиваются температуры, очищается экран. По факту это аналог программы на Ардуино, но с подключением монитора.
Прогресс-бар отображает процент пронумерованных датчиков. Далее, для каждого непронумерованного датчика проверяется температура. Если выше 27°C, ему присваивается номер, который записывается в EEPROM. Внизу экрана выводится общее количество датчиков и пронумерованных.
Это код для ESP32, который выполняет следующие задачи:
Работа с датчиками температуры DS18B20:
Использует интерфейс OneWire для связи с датчиками
Определяет количество подключенных датчиков (до 60)
Присваивает уникальные номера датчикам при нагреве выше 27°C
Сохраняет номера в EEPROM датчиков
Поддерживает сброс нумерации через отдельную кнопку
Визуализация на VGA-дисплее:
Выводит прогресс-бар с процентом пронумерованных датчиков
Отображает общее количество датчиков и пронумерованных
Использует 3-битный цвет (RGB) для вывода графики
Логика работы:
При первом запуске проверяет существующие номера в EEPROM датчиков
Нумерует датчики по мере их нагрева выше пороговой температуры
Позволяет сбросить нумерацию через физическую кнопку
Обновляет данные каждую секунду
Особенности реализации:
Использует нестандартный видеорежим 320x240 с кастомными таймингами
Хранит номера датчиков в регистре Alarm High (байт 2 скрэтчпада)
Обеспечивает защиту от переполнения (ограничение 60 датчиков)
Имеет индикацию процесса завершения нумерации (зеленый прогресс-бар)
Для работы системы необходимо:
Физическое подключение датчиков к линии OneWire
Наличие кнопки сброса на пине D21