попробуйте так :
-----------------------------
local function mh19Begin(level, timestamp)
print("mh19Begin", level, timestamp)
if (level == gpio.HIGH ) then highDuration =timestamp
else highDuration =timestamp-highDuration
print("T=", highDuration)
--local co2 = calculateCo2Ppm(highDuration, lowDuration)
---print("co2", co2)
end
end
---------------------------

Вот такой ответ.
Через некоторое время вот так, но это я так понимаю надо датчику некоторое время чтоб показания устаканились.

Пока поправил скрипт вот так :
Код:
local pin, highDuration, lowDuration, co2, TRIGGER_ON, lastTimestamp, calculateCo2Ppm = 3, 0, 0, 0, "both", 0, 0
local function calculateCo2Ppm(highDuration, lowDuration)
return 5000 * (highDuration - 2) / (highDuration + lowDuration - 4);
end
local function mh19Begin(level, timestamp)
-- print("mh19Begin", level, timestamp)
if (level == gpio.LOW) then
highDuration = timestamp - lastTimestamp
print("Th=", highDuration)
else
lowDuration = timestamp - lastTimestamp
print("Tl=", lowDuration)
local co2 = calculateCo2Ppm(highDuration, lowDuration)
print("co2", co2)
end
lastTimestamp = timestamp
end
gpio.mode(pin,gpio.INT)
gpio.trig(pin, TRIGGER_ON, mh19Begin)

Последнее редактирование: