как время между светодиодом мигает в Lua скрипт - PullRequest
0 голосов
/ 30 января 2019

Я учусь писать скрипт lua и пытаюсь написать простой скрипт.

По сути, мне нужно посчитать, сколько раз светодиодная вспышка.Если интервал между вспышками больше, чем, скажем, одна секунда, мы складываем счетчик и показываем сообщение, соответствующее тому, сколько раз светодиодная вспышка.

Проще говоря, светодиодная вспышка один, два, три раза,затем останавливаемся на 1 секунду, мы печатаем счетчик как 3, и показываем сообщение «мигать 3 раза».Если он останавливается дольше 1 секунды, мы сбрасываем счетчик.

Это то, что я имею до сих пор

-------------------------------------------------------
-- Function ReadADC1
-- read raw value and transform to value of power of 10. 
-- This is not nessasrily if we know the raw value of threshhold
------------------------------------------------------- 
function ReadADC1()
    local adc_voltage_value = 0

    adc_voltage_value = tonumber(adc.readadc()) * 2 -- 0.10 --get dec number out of this -- need to know where package adc come from
    --convert to voltage
    adc_voltage_value = adc_voltage_value *0.000537109375 --get V
    adc_voltage_value = math.floor(adc_voltage_value *1000 +0.5) --since number is base off resolution

    --print (adc_voltage_value,"\r\n")
    return adc_voltage_value
end
-- end of readADC1() TESTED

------------------------
-- function counter()
-- count how many time led flashing when knowing threshhold of voltage to be on
ledCounter = 0 --initialized
-----------------------
function counter()
        local t1 = os.clock()   
        while (ReadADC1()>48) do
            local t2 = os.clock()
            local dt = t2 - t1
            t1 = t2
            local ledValue = ReadADC1()

            if ( ((ReadADC1() >= OnThreshHold) and (dt<0.4)) or ((ReadADC1() < OnThreshHold) and (dt<0.1))) then-- if led is off for more than 1 second
                    ledCounter = ledCounter + 1
                    vmsleep(10)                     
            else 
                ledCounter = 0
            end

            --print (ledValue,"\r\n")
        end

        --vmsleep(1000)
        --print(ledCounter,"\r\n")
        return ledCounter
end

Эта работа, но не надежная, так как я моделирую светодиодную вспышку с Arduino.Он работает только для 3 вспышек, но не работает для других номеров.

Любые предложения или исправления приветствуются

...