А на луа этой проблемы с удержанием SDA не было бы? Это же не зависит от языка вообще.
Зависит не от языка а от библиотек и от возможности правильно и просто написать обработку событий.
---------------------------------------
Вот для примера моя основная программа от марта 2015
--------------------------------
pds=1;pam=2; scl=4; oss=0;T0=0;TM=0; adT={}
gpio.mode(pam, gpi

UTPUT); gpio.write(pam, gpio.HIGH)
--DS18B20--AM2302--BMP180(SCL,SDA=SCL+1)
local ae={{96,209,111,6,0,0,149},{199,186,111,6,0,0,45}}
------1--2--3--4-5--6-7--8-9-10-11-12-13-14-
TD={3,0,0,0,2,0,0,4,0,0, 0,0,1, 0};
ssid,pwd="axxx","k8Txxx"; port=9991
dofile("nk_start.lc") -- dofile=603200
gpio.mode(3,gpio.INPUT)
---------------------
function cb()
T0=T0+1; --номер датчика
dofile(DS18b20.lua');
T0=T0+3; --номер датчика
dofile('get_tp.lc'); dofile('norm.lc'); --BMP180
m=6 -- номер позиции в таблице результатов для данного датчика
dofile('AM2302.lc');
m=14 -- номер позиции в таблице результатов для данного датчика
TD[m]=adc.read(0); -- АЦП
cu:connect(9992,"192.168.0.108"); -- a udp client
cu:send(T0..';4;'..table.concat(TD,";")..';'..node.heap())--..",T1="..T1)
end
tmr.alarm(1,2000,1,cb)
------------------------------
Она каждые две секунды опрашивает датчики и отправляет данные по UDP
Добавление нового датчика делается путем dofile соответствующего файла
Таким образом, сначала отлаживается интерфейс работы модуля по WIFI
Потом добавляются любые датчики и в любом количестве
В данном проекте было три
DS18B20 один AM2302 и один BMP180
----------------------------------
Датчики не влияют друг на друга и можно добавлять убавлять и отлаживать каждый отдельно и все вместе.
Полагаю, что понятно? Сравните со своей основной программой на дурине.