Насколько я знаю, 1-проводная библиотека, которую вы связали в своем вопросе, позволяет действовать только как мастер, а не как раб.
Я только что выпустил библиотеку, чтобы превратить плату Arduino в 1-проводное ведомое устройство, здесь: https://github.com/neuoy/OneWireArduinoSlave (edit: перенесено сюда https://gitea.youb.fr/youen/OneWireArduinoSlave ). Я использую его в своей собственной системе домашней автоматизации, и она работает безупречно в моей настройке (1-проводный мастер, DS9490R, подключен к ноутбуку через USB, а также обеспечивает питание для Arduino, который является Arduino Uno). Библиотека обрабатывает детали низкого уровня: соответствие rom, отправка и получение байтов (что на самом деле довольно сложно сделать правильно, в основном невозможно без логического анализатора). Остальное зависит от тебя.
Он полностью реализован с прерываниями, все коммуникации выполняются в фоновом режиме, вы можете выполнять другой код, как обычно, параллельно, и получать уведомления с помощью обратных вызовов при получении байтов и т. Д. Отправка байтов ведущему также выполняется асинхронно.
Я также знаю, что существует по крайней мере еще одна библиотека, https://github.com/MarkusLange/OneWireSlave , как прокомментировал выше Ryu_hayabusa. Это не сработало для меня (не знаю, из-за моей настройки оборудования или по другой причине), но определенно работает для других, так что стоит попробовать. Кажется, эта библиотека не реализована с прерываниями, поэтому ваша программа блокируется во время ожидания основной операции (что вполне приемлемо во многих сценариях).