一種控制呼吸燈呼吸效果的方法與流程
2023-04-28 07:59:06 2

本發明涉及一種控制呼吸燈呼吸效果的方法,尤其涉及一種利用函數曲線控制呼吸燈呼吸效果的方法。
背景技術:
呼吸燈被廣泛應用於數碼產品,手機、電腦、音響、汽車等各個領域,起到很好的視覺裝飾效果與狀態提示作用。呼吸燈的實現可以通過純粹的硬體電路來完成,也可以通過單片機編程更加靈活的控制其呼吸效果。用單片機控制呼吸燈的呼吸效果,其原理是通過控制pwm的佔空比來完成對led亮度的控制,pwm的佔空比按照一定的規律變化就可以做出呼吸的效果。而呼吸燈呼吸時所需要的pwm佔空比數據,目前都是靠經驗值來給出的,未找到一套便捷直觀的數據生成方法。經驗值的辦法是通過增加,刪除,修改其中的某些數據來改變呼吸效果,不具有可預見性。
因此,現有技術有待改進。
技術實現要素:
針對上述現有技術中存在的問題,本發明的目的在於提供一種控制呼吸燈呼吸效果的方法,旨在克服現有呼吸燈呼吸節奏控制方法不可預見性的缺陷。
本發明的技術方案如下:
一種控制呼吸燈呼吸效果的方法,其中,包括以下步驟:
(1)利用製圖軟體生成一條曲線,對曲線進行採樣,把採樣點值取整後有序的放入到一個數組curdat裡,定義到單片機程序裡,供定時器中斷處理函數調用;
(2)單片機上電後,對定時器進行初始化,設置開啟定時器的溢出中斷,設置定時器預裝載值,同時設置計數頻率,確定pwm的輸出頻率,並配置pwm輸出功能;
(3)開啟定時器,在定時器溢出中斷處理函數裡設置,每當中斷到來,都會把curdat當前索引下的數組值賦給通道比較寄存器ccr,使定時器輸出的pwm佔空比與curdat裡的索引值呈對應關係;如果索引值為數組curdat的最後一個值,把索引值清零,指向數組的開始;否則索引值加一指向數組的下一個值。
所述的控制呼吸燈效果的方法,其中,步驟(2)中,設置定時器預裝載的值為所述曲線在採樣範圍內的最大值。
所述的控制呼吸燈效果的方法,其中,步驟(1)中所述的製圖軟體為matlab或者origin。
所述的控制呼吸燈效果的方法,其中,步驟(1)中所述曲線為正態分布曲線,所述採樣點關於正態分布曲線的對稱軸對稱。
所述的控制呼吸燈效果的方法,其中,步驟(1)中所述曲線為高斯曲線,其函數方程式為:。
所述的控制呼吸燈效果的方法,其中,步驟(2)中,設置定時器預裝載的值為a,定時器的計數頻率為100a,使定時器每10ms溢出一次,pwm的輸出頻率為100hz。
所述的控制呼吸燈效果的方法,其中,所述高斯曲線中,a=1,,為0.5、4或8。
所述的控制呼吸燈效果的方法,其中,步驟(1)中,在曲線橫坐標-10到10的範圍內進行200個點的採樣。
所述的控制呼吸燈效果的方法,其中,所述單片機的型號是stm32f1系列,採用定時器tim4中的溢出中斷和定時器的pwm輸出功能。
本發明的有益效果為:本發明提供一種控制呼吸燈呼吸效果的方法,利用製圖軟體,用戶可以自定義函數及相關參數,生成對應形狀的曲線,再通過適當的採樣來產生呼吸燈呼吸時所需要的pwm佔空比數據,把索引對應上述曲線的橫坐標值,pwm佔空比按照一定的比例關係對應曲線的縱坐標值,此時定時器輸出的pwm佔空比與上述曲線形狀相似。單片機按照一定的時間依次輪流調用上述產生的數據,從頭到尾不停循環即可實現對應曲線的呼吸效果。即通過觀察和調整曲線的形狀實現對呼吸燈的呼吸節奏的控制,可以預先定義出曲線的形狀,來感知呼吸的效果,而且形式多樣化。
附圖說明
圖1為本發明實施例中a=1,,分別為0.5、4、8時的三條高斯曲線。
圖2為本發明實施例的步驟流程圖。
具體實施方式
為使本發明的目的、技術方案及效果更加清楚、明確,以下舉實例對本發明進一步詳細說明。應當理解,此處所描述的具體實施例僅用於解釋本發明,並不用於限定本發明。
本實施例涉及一種控制呼吸燈呼吸效果的方法,其特徵在於,包括以下步驟:
(1)利用製圖軟體生成一條曲線,對曲線進行採樣,把採樣點值取整後有序的放入到一個數組curdat裡(索引即數組的索引,為採樣點的橫坐標值,索引到的數組值為對應取整後的縱坐標值),定義到單片機程序裡,供定時器中斷處理函數調用;
(2)單片機上電後,對定時器進行初始化,設置開啟定時器的溢出中斷,設置定時器預裝載的值和計數頻率,確定pwm的輸出頻率,並配置pwm輸出功能;
(3)開啟定時器,在定時器溢出中斷處理函數中設置,每當中斷到來,都會把curdat當前索引下的數組值賦給通道比較寄存器ccr,使定時器輸出的pwm佔空比與curdat裡的索引值呈對應關係;如果索引值為數組curdat的最後一個值,把索引值清零,指向數組的開始;否則索引值加一指向數組的下一個值。
上述方法利用製圖軟體,用戶可以自定義函數及相關參數,生成對應形狀的曲線,再通過適當的採樣來產生呼吸燈呼吸時所需要的pwm佔空比數據,單片機按照一定的時間依次輪流調用上述產生的數據,從頭到尾不停循環即可實現對應曲線的呼吸效果。即通過觀察和調整曲線的形狀實現對呼吸燈的呼吸節奏的控制,可以預先定義出曲線的形狀,來感知呼吸的效果,而且形式多樣化。
作為優選的實施例,所述的控制呼吸燈效果的方法,步驟(2)中,設置定時器預裝載值為所述曲線在採樣範圍內的最大值。由於定時器輸出的pwm佔空比=通道比較寄存器ccr值/預裝載寄存器arr值,因此,將定時器預裝載值設置為曲線在採樣範圍內的最大值時,輸出pmw佔空比不會超過100%。
實際應用中,可選擇現有的多種製圖軟體生產曲線,比如matlab或者origin,而為了讓呼吸燈的「呼」和「吸」對稱,一般選用類似正態分布的曲線,比如正餘弦曲線、高斯曲線等,且所述採樣點關於正態分布曲線的對稱軸對稱。本實施例選用製圖軟體為matlab生成高斯曲線為例進行說明,具體如何通過函數曲線控制呼吸燈呼吸效果的。
高斯曲線是正態分布中的一條標準曲線,是一個鍾狀的對稱曲線,函數表達式如下:
其中,a表示曲線的峰值,表示曲線的中心位置,表示曲線的寬度,圖1所示為a=1,,分別為0.5、4、8時的三條曲線。如果橫軸表示時間t,縱軸表示歸一化的led亮度值,從上面的三條曲線可以判斷出led燈的呼吸效果:相對,呼吸燈的呼吸要急促一些,而時的呼吸比較緩慢,非常直觀。
本發明以a=1,為例進行說明。利用單片機程序控制pwm的佔空比來控制led的呼吸效果;單片機型號是stm32f103rbt6,用到定時器tim4中的溢出中斷和pwm輸出功能。定時器每隔10ms產生一次溢出中斷來改變pwm輸出的佔空比。
如圖2所示,首先用matlab軟體生成一條高斯曲線,其對應的函數表達式為:;在曲線橫坐標為-10到10的範圍內採集200個點,然後把採樣點值(採樣點對應的縱坐標值)取整後有序的放入到一個無符16位的數組curdat裡,定義到單片機程序裡,供定時器中斷函數調用。需要說明的是:取的點數會影響呼吸的流暢效果,越多越順暢,平滑,本實施例中採樣範圍取-10到10是為了保證兩端的採樣點對應的縱坐標值接近0,從而確保對應輸出的pwm佔空比也接近0,相當於呼吸燈熄滅時的狀態。
單片機上電後,對定時器進行初始化,設置開啟定時器的溢出中斷,設置定時器預裝載的值為a,定時器的計數頻率為100a,這樣定時器每10ms溢出一次,即pwm的輸出頻率為100hz(定時器的溢出頻率為定時器的計數頻率100a除以預裝載寄存器的值a),並配置pwm輸出功能,開啟定時器,每隔10ms就會執行一次溢出中斷處理函數。
在中斷處理函數裡,把curdat當前索引下的數組值賦值給通道比較寄存器ccr,此時定時器輸出的pwm佔空比為ccr/a(≤100%),對應歸一化高斯曲線上採樣點值,如果索引值為數組curdat的最後一個值,把索引值清零,重新指向數組curdat的開始;否則索引值指向數組的下一個值,即索引值+1。本實施例中,curdat裡共有200個數據,而每10ms讀取一個,因此一次呼吸的時間為2s。
綜上所述,本實施例通過matlab軟體根據用戶自定義參數,生成對應形狀的高斯曲線,再通過適當的採樣來產生呼吸燈呼吸時所需要的pwm佔空比數據,單片機按照一定的時間依次輪流調用上述產生的數據,從頭到尾不停循環即可實現對應高斯曲線的呼吸效果。與傳統經驗值法中,通過增加,刪除,修改其中的某些數據來改變呼吸效果相比,此呼吸燈的呼吸節奏可以通過高斯曲線的形狀來觀察,調整而通過曲線的辦法,可以預先定義出曲線的形狀,來感知呼吸的效果,而且形式多樣化。
以上對本發明進行了詳細的介紹,對本領域普通技術人員來說,可以根據上述說明加以改進或變換,而所有這些改進和變換都應屬於本發明所附權利要求的保護範圍。