Я пишу чрезвычайно простой скрипт на Lua с использованием simcom GPU.
Он будет подсчитывать, сколько раз мигание светодиода и возвращает строку, соответствующую номеру счетчика.До сих пор я использовал os.clock () для выполнения работы, но результат не тот, который я ожидал.
function counter()
local t1 = os.clock()
while (ReadADC1() > 98) do
local t2 = os.clock()
local dt = t2 - t1
t1 = t2
local ledValue = ReadADC1()
if ((ledValue >= OnThreshHold) and (dt < 1)) then -- if led is on for less than 1 second
ledCounter = ledCounter + 1
--vmsleep(100)
elseif ((ReadADC1() < OnThreshHold) and (dt > 2.3)) then-- if led is off for more than 2 second
ledCounter = 0;
--vmsleep(100)
else
ledCounter = ledCounter
end
--print (ledValue,"\r\n")
end
print(ledCounter,"\r\n")
--return ledCounter
end
В этом случае, если я использую эту функцию counter (), она будет работать только в том случае, если значение из ReadADC () вводится на короткое время, а затем останавливается.Это не будет работать, если АЦП постоянно читает поток данных.
В arduino решение чрезвычайно просто, поскольку вы можете использовать currentmillis и previousMillis для определения временного промежутка между вспышками.Итак, в Луа, у нас есть что-нибудь подобное?