Программа для микроконтроллера 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

VGA-выход через резистивную схему на указанных пинах

Смотреть скетч