最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

PWM視頻代碼剖析與解釋

2021-07-25 23:21 作者:想啥_做啥  | 我要投稿


1、不同頻率LED燈閃爍

接下來(lái)我們以下面LED燈的閃爍代碼為例子,改變延時(shí)長(zhǎng)短來(lái)看LED燈的效果

500ms延時(shí)閃爍(1Hz頻率)
200ms延時(shí)閃爍(2.5Hz頻率)
50延時(shí)ms閃爍(10Hz頻率)

通過(guò)三個(gè)對(duì)比實(shí)驗(yàn)我們發(fā)現(xiàn)隨著頻率的升高,我們的LED燈慢慢的開(kāi)始感覺(jué)不到閃爍,由于我們?nèi)搜鄣囊曈X(jué)停留效應(yīng),一般大于50Hz的刷新率就能滿足我們的要求

2、高頻率LED閃爍變形過(guò)程

我們還是以這個(gè)代碼,將頻率固定在50Hz,然后保持周期不變即高低電平加起來(lái)的時(shí)間等于40ms,然后改變高低電平的占空比(高低電平占總周期的百分比),我們通過(guò)調(diào)節(jié)高低電平的延時(shí)的長(zhǎng)度來(lái)調(diào)節(jié)亮度的占比

代碼部分:

50Hz頻率最大亮度(即燈滅的情況下延時(shí)為0,亮的情況下延時(shí)20ms)
50Hz頻率50%亮度(即燈滅的情況下延時(shí)為10ms,燈亮的情況下延時(shí)10ms)
50Hz頻率25%亮度(即燈滅的情況下延時(shí)為15ms,燈亮的情況下延時(shí)5ms)
50Hz頻率10%亮度(即燈滅的情況下延時(shí)為18ms,燈亮的情況下延時(shí)2ms)

我們把上面的動(dòng)作連貫起來(lái),也就是說(shuō)把亮度延時(shí)做成連續(xù)變化,為了在實(shí)際中效果更好,我們將延時(shí)改成延時(shí)200個(gè)us,這樣連續(xù)變化效果更好

代碼部分:

LED燈漸亮效果

我們?cè)龠M(jìn)一步修改下,讓它變成一個(gè)呼吸的效果

代碼部分:

LED燈呼吸燈

LED“流星雨”

首先我們先來(lái)分析下流星雨的邏輯:

首先我們要實(shí)現(xiàn)一個(gè)這樣的效果,第一個(gè)最亮,然后后一個(gè)是前一個(gè)的45%的亮度

代碼部分:

靜態(tài)流星雨效果

代碼解釋:

我門首先給亮度數(shù)組ledPwm[12]儲(chǔ)存按比例分配的數(shù)值,這里我是按70%的一個(gè)比例來(lái)計(jì)算

比如說(shuō)最暗是100,那么次暗的就是100*70% = 70,以此類推,然后我們就按照分配的亮度來(lái)把燈分別點(diǎn)亮

這部分代碼是把所有LED燈先點(diǎn)亮

這部分代碼根據(jù)LED燈的亮暗程度來(lái)分別控制滅的時(shí)間,我們先根據(jù)最大亮度值“maxPWM”來(lái)將亮度分為100份,每份的延時(shí)是1us,然后在內(nèi)部的循環(huán)里面檢查當(dāng)前的亮度值是否到達(dá)分配的份數(shù),如果到達(dá)了,那就熄滅,沒(méi)有到達(dá),就繼續(xù)保持亮

讓LED”流星雨“運(yùn)動(dòng)

顯然這樣靜態(tài)的流星雨還是滿足不了我們的要求,接下來(lái)我們讓流星雨先動(dòng)起來(lái)

我們需要它這樣動(dòng)

LED流星雨動(dòng)態(tài)分解示意圖

我們先試著讓它動(dòng)一位,我只需要把ledPwm[12]這個(gè)數(shù)組里面的值重新進(jìn)行排列就可以了,這其實(shí)就是對(duì)數(shù)組操作

LED流星雨移動(dòng)一位的效果

LED“流星雨”連續(xù)運(yùn)動(dòng)

從上面我們知道,我們?nèi)绻修k法對(duì)數(shù)組進(jìn)行連續(xù)的操作,那么就能實(shí)現(xiàn)“流星雨”流動(dòng)的效果

所有代碼參考這個(gè)哥們的:https://www.cnblogs.com/starsnow/p/4570462.html

其中下面這一點(diǎn)代碼是arduino自帶的時(shí)間計(jì)數(shù)器,可以直接讀取里面的數(shù)值,用來(lái)輔助計(jì)數(shù)用的,其實(shí)你也可以不用這個(gè),可以自己直接在里面計(jì)數(shù)也可以的

完整版代碼:把所有需要改動(dòng)的數(shù)值變量全部放在最前面,這是編寫可復(fù)用程序常用的一種做法,可以靈活適應(yīng)多個(gè)燈,同時(shí)可以調(diào)節(jié)速度,調(diào)節(jié)亮度比例

完整版LED“流星雨”效果

總結(jié):

1、我們了解了PWM的實(shí)現(xiàn)方式

2、LED在不同的頻率下,會(huì)“欺騙”我們的眼睛,這樣是玩單片機(jī)中慣用的一種思路

3、通過(guò)剖析LED"流星雨",我們發(fā)現(xiàn)其實(shí)它就用了一些簡(jiǎn)單的處理方式實(shí)現(xiàn)的,沒(méi)有我們想象中的那么復(fù)雜

4、LED"流星雨"里面有一點(diǎn)簡(jiǎn)單的算法,算法是獨(dú)立于單片機(jī)的,在其他平臺(tái)(51,STM32等)上面同樣可以實(shí)現(xiàn),同時(shí)算法也是一個(gè)程序的靈魂


PWM視頻代碼剖析與解釋的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
井冈山市| 颍上县| 集贤县| 敦煌市| 翁牛特旗| 洪江市| 阳谷县| 长汀县| 莆田市| 汉寿县| 上栗县| 四平市| 库车县| 理塘县| 平顶山市| 桦甸市| 吴堡县| 柳州市| 宝应县| 军事| 合川市| 鹰潭市| 武安市| 广汉市| 霍山县| 隆林| 随州市| 望都县| 玉林市| 嘉黎县| 项城市| 中阳县| 崇阳县| 邵东县| 吉木乃县| 始兴县| 策勒县| 金坛市| 钟山县| 福海县| 延寿县|