2017/10/15

LED閃爍時間模擬

在網路上有看到可以自閃的LED,頻率是90/m,會自閃很方便,就不用再接電路板了。
但是光憑想像實在是不知道這樣到底合不合用?
所以就自己寫了一個小程式在電腦上模擬看看,
我用的是VBA,可以直接在 Excel 上模擬。


初版
一開始找來網路上的範例進行改造,由於不知道準確率如何,所以讓它印出時間來確認。
果然,時間有一點不穩定,但是很固定的都是出在第4次的時候,之後就很穩定了...
這個誤差可能得交給有硬體能力的人來解答,誤差不到0.008秒,對我的需求而言可以忽略。

Sub Test1()
myTimer (1.5)
End Sub

Sub myTimer(secN)

   Dim StartTime As Single

   Do While R < 10

       StartTime = Timer
     
       Do While Timer < StartTime + secN

       Loop
     
        ActiveCell.Value = StartTime
        ActiveCell.Offset(0, 1).Value = Timer
        ActiveCell.Offset(0, 2).Value = ActiveCell.Value - ActiveCell.Offset(0, 1).Value
        ActiveCell.Offset(0, 3).Value = ActiveCell.Offset(0, 2).Value - ActiveCell.Offset(-1, 2).Value
        ActiveCell.Offset(1, 0).Activate
       R = R + 1
     
   Loop

End Sub

記錄下來的秒數與間隔
49642.73438  49644.23438  -1.5 -1.5
49644.23828 49645.73828 -1.5 0
49645.74219 49647.24219 -1.5 0
49647.24609 49648.75391 -1.5  078125 -0.0078125
49648.75781 49650.25781  -1.5 0.0078125

49970.19922 49971.69922 -1.5 -1.5
49971.70313  49973.20313 -1.5 0
49973.20703  49974.70703 -1.5 0
49974.73047  49976.23438 -1.5  0390625 -0.00390625
49976.24219  49977.74219 -1.5 0.00390625

49987.73438 49989.23438 -1.5 -1.5
49989.23438  49990.73438 -1.5 0
49990.73828 49992.23828 -1.5 0
49992.24609  49993.75391 -1.5 078125 -0.0078125
49993.75781  49995.25781 -1.5 0.0078125
49995.25781 49996.75781 -1.5 0
49996.75781 49998.25781 -1.5 0
49998.26172  49999.76172 -1.5 0
49999.76172  50001.26172 -1.5 0
50001.26563 50002.76563 -1.5  0


第2版
正式改成閃爍,但是我發覺我什麼都看不到!!
稍微看一下就發現,亮完下一行就暗,沒有停留的時間,當然看不見。
停留時間只有程式執行完清除那一行的時間,短到肉眼看不見吧~

Sub Test1()
myTimer (1.5)
End Sub

Sub myTimer(secN)

   Dim StartTime As Single

   Do While R < 10

       StartTime = Timer
     
       Do While Timer < StartTime + secN

       Loop  
     
        Selection.Interior.Color = 65535
                 
        Selection.ClearFormats
             
       R = R + 1
     
   Loop
 
End Sub


第3版
改成明→等待→滅 這樣才有停留
照網站上的 90/m 來計算,明滅一次是0.6s,對半就是0.3s亮、0.3s暗。

90/60/2=0.33
1分鐘90下,0.66秒一下,對半是0.33秒明、0.33秒滅

Sub Test1()
myTimer (0.08)'自己測試是這樣比較合適
End Sub

Sub myTimer(secN)

   Dim StartTime As Single

   Do While R < 10

       StartTime = Timer
     
       Do While Timer < StartTime + secN

       Loop  
     
       Selection.Interior.Color = 65535
                 
       Do While Timer < StartTime + secN * 2

       Loop
                 
       Selection.ClearFormats
             
       R = R + 1
     
   Loop
 
End Sub

最終自己是覺得0.08一次明滅比較像是機槍的明滅速度~
就這樣,大家參考看看囉~

沒有留言:

張貼留言