Сначала я хотел сделать примитивно - выставлять вручную мощность в вольтах от 1 до 5 и все, по наитию)) раньше ставил всегда все либо на средний либо на макс и скорее всего перегревал линзу, что давало артефакты.
Пока изучал ардуины, мосфеты и прочее понял, что основная загвоздка это код для программы. В эту историю я не окунался не разу и не знал вообще ничего. Пытался что-то найти и собрать по кусочкам, так как задача была изначально простейшая. Но потом я вспомнил о chatgpt и тут понеслось..

Не буду вдаваться в подробности самого процесса, опишу что получилось по итогу, я остался оч доволен

Есть два датчика, один определяет окружающую температуру, влажность, атм давление, из 1го и 2го вычисляет точку росы. Второй датчик стоит возле линзы. В моем шарпстаре они все в одном блоке, на нем есть углубление, в которое удобно помещался датчик. Почему-то этот линзовый блок был в один оборот обмотан изолентой. Я его убирать не стал, приподнял, на металл через термопасту поставил датчик и протянул провод (есть на фото).
Соответственно у программы есть точка росы и температура линзы, есть порог, который можно изменять, по дефолту он 2 градуса, то есть это некий запас, чтобы грелка включалась не в момент совпадения точки росы и скопа, а чуть раньше. Мощность регулируется плавно в зависимости от разницы. Забегая вперед, инерция получается небольшая, примерно несколько минут с тех пор как температура скопа начинает расти в случае включения грелок. Также есть и ручное управление если нужно.
Изначально интерфейс программы не планировался, хотел просто через монитор порта отправлять нужную команду в ардуино и все. Но захотелось сделать по красоте

В итоге получилась вот такая штука - она умеет запоминать последний удачный порт и подключается автоматически, идентифицирует нужную ардуину, чтобы не подключится не к тому устройству, рисует графики, пишет логи, выводит все показания.
Дальше напишу про электронику будки.