0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Arduino基礎(chǔ):調(diào)節(jié)LED的亮度

YYXIAO ? 來源:YYXIAO ? 作者:YYXIAO ? 2023-02-20 09:47 ? 次閱讀

這篇文章來源于DevicePlus.com英語網(wǎng)站的翻譯稿。

Originally published by Feb 5, 2020

前言

本文最初發(fā)布在deviceplus.jp網(wǎng)站上,而后被翻譯成英語。

Device Plus網(wǎng)站中介紹了有關(guān)Arduino的各種應(yīng)用和作品示例,但無論創(chuàng)作任何作品,基礎(chǔ)知識都很重要!
在本文中,我們將通過使Arduino能夠調(diào)節(jié)LED亮度,為您帶來“關(guān)鍵”的Arduino基礎(chǔ)知識。

我們曾介紹過,通過將LED連接到Arduino的數(shù)字輸出引腳,并設(shè)置HIGH (5V) 和LOW (0V) ,可以輕松地切換LED的開和關(guān)。但是,由于數(shù)字輸出只能輸出兩種狀態(tài),因此無法進行亮度調(diào)節(jié)等控制。

要想解決這個問題,您可以使用“PWM”輸出。PWM可在HIGH和LOW狀態(tài)之間反復(fù)切換輸出,所以可以用來調(diào)節(jié)LED的亮度。
在本文中,我們將學(xué)習如何使用PWM來調(diào)節(jié)LED的亮度。我們還將學(xué)習如何編寫使用PWM輸出逐漸點亮LED的程序。

數(shù)字不能調(diào)節(jié)亮度

正如我們上次介紹過的,LED的亮度會隨電流的變化而變化。比如,分別通過330Ω的電阻和10kΩ的電阻來調(diào)節(jié)連接到LED的電流量,并對它們的結(jié)果進行比較時,會發(fā)現(xiàn)連接330Ω小電阻時電流量更大,這會使LED更亮?;蛘?,改變連接到LED的電源電壓,也會使流過的電流量發(fā)生變化。

如果分別施加5V和3.3V的電壓,施加5V電壓時LED燈更亮。根據(jù)上一次介紹過的電阻和流過LED的電流之間的關(guān)系式,要想讓LED更亮,要么“降低電阻”,要么“提高電壓”。

pYYBAGPy0J2AVwoEAAC6xizQbfA504.png

然而,Arduino的數(shù)字輸出只有HIGH (5V)或 LOW (0V)兩種狀態(tài),這意味著直接連接并不能改變電壓和電阻值,也就是說,無法調(diào)節(jié)LED的亮度。但是,雖然只有HIGH和LOW兩種輸出狀態(tài),通過一些努力還是可以改變LED亮度的。

使用數(shù)字輸出改變LED亮度

讓我們嘗試一下只用數(shù)字輸出來改變LED的亮度吧。亮度可以通過讓LED閃爍來調(diào)節(jié)。我們按照步驟一步一步來實際操作,看看LED的亮度是如何變化的。將LED連接到Arduino的數(shù)字引腳5,如下圖所示:

poYBAGPy0KKAawc6AAJoUIlweMY641.png

接下來,創(chuàng)建如下所示的程序并將其傳送給Arduino。此時,LED應(yīng)該會每隔1秒閃爍1次。

在程序中,通過第11行的“digitalWrite( LED_PIN, HIGH )”輸出HIGH,使LED亮起,然后通過第12行的“delay (ON_TIME)”在指定的時間內(nèi)保持亮燈。持續(xù)時間以毫秒為單位,如果指定1000,則LED將保持點亮1秒鐘。

接下來,通過第14行的“digitalWrite( LED_PIN, LOW )”輸出LOW,使LED熄滅,然后通過第15行的“delay( OFF_TIME )”在指定的時間內(nèi)保持熄滅狀態(tài)。通過反復(fù)執(zhí)行該程序即可實現(xiàn)LED的閃爍。

下面,讓我們嘗試一下縮短點亮和熄滅的持續(xù)時間??梢允褂玫?行的“const int ON_TIME”來更改點亮狀態(tài)的持續(xù)時間,使用第4行的“const int OFF_TIME”來更改熄滅狀態(tài)的持續(xù)時間。將這兩個值都更改為“500”并發(fā)送程序,然后確認LED的狀態(tài)??梢钥吹介W爍速度增加。接著,當將值逐漸減小到“250”、“100”、“75”、“50”等數(shù)字時,閃爍速度變得更快。當值為“10”左右時,LED看起來像在保持點亮狀態(tài)。這是因為如果它閃爍得太快,人眼就跟不上它的速度,從而使燈看起來就像一直亮著。

接下來,我們試著改變點亮和熄滅的持續(xù)時間。將“ON_TIME”和“OFF_TIME”都設(shè)置為“10”。然后,依次將“ON_TIME”的值更改為“9”、“8”、“7”……“1”,并確認LED的點亮狀態(tài)??梢钥吹疆敎p小該值時,LED會逐漸變暗。

poYBAGPy0KWAWbWDAAETgPJnsy8241.png

這是因為持續(xù)亮燈時間縮短,發(fā)光量減少,從而使LED看起來變暗。也就是說,通過改變“點亮持續(xù)時間”也可以調(diào)節(jié)LED的亮度。使用該方法,可以實現(xiàn)用僅能控制開/關(guān)的Arduino數(shù)字輸出功能來控制LED的亮度。

通過PWM調(diào)節(jié)亮度

如上所述,通過調(diào)整HIGH和LOW的比例,使LED以較短的周期閃爍,即可調(diào)節(jié)LED的亮度。但是,自己創(chuàng)建程序來控制閃爍持續(xù)時間并不現(xiàn)實。因為處理其他程序需要時間,而這會使閃爍間隔出現(xiàn)偏差,從而會使亮度發(fā)生變化。

Arduino可以使用PWM(Pulse Width Modulation,脈沖寬度調(diào)制)功能來周期性地輸出HIGH和LOW。PWM是以指定的速率周期性地在HIGH和LOW之間切換的一種功能,可用于上述的LED亮度調(diào)節(jié)。

但是,需要注意的是,可用于PWM功能的引腳在Arduino中是固定的。只有數(shù)字旁邊帶有“?”標記的引腳(即引腳3、5、6、9、10和11)可使用PWM功能,其他引腳不支持PWM輸出。

poYBAGPy0K2AQemBAAMMqTYHyYc797.png

另外,由于PWM是通過Arduino的微控制器產(chǎn)生的功能,因此具有輸出穩(wěn)定、不影響程序運行的優(yōu)點。
在這里,我們將LED連接到引腳5來試一下。用與前述電路相同的方式連接LED。
接下來,創(chuàng)建如下所示的程序并將其發(fā)送給Arduino,LED將會亮起,但是較暗。

通過PWM功能輸出時,需要通過第6行的“pinMode()”將對象引腳設(shè)置為輸出模式。實際輸出時,使用第10行的“analogWrite()”。指定對象引腳編號,然后在0到255的范圍內(nèi)設(shè)置保持HIGH的比率。如果設(shè)置為“0”,將始終輸出LOW,如果設(shè)置為“255”,則始終輸出HIGH。如果設(shè)置為“127”,將會以各一半的比率輸出HIGH和LOW。

在這個程序中,可以通過第3行的“const int DUTY”來指定PWM比率。更改該值可以確認亮度的變化情況。

讓LED逐漸閃爍

我們使用PWM輸出拓展了LED點亮的方法?,F(xiàn)在,讓我們逐漸改變PWM來嘗試實現(xiàn)LED逐漸變亮的效果。

編寫如下程序:

在上述程序中,將PWM比率存儲在loop()函數(shù)中使用的“i”變量中,以使其可以逐漸增加該值,從而使LED逐漸變亮。

第14行的while處理以STEP指定的增量增加值,直到i達到 255。增加的值由第15行的analogWrite()輸出,以使LED的亮度改變。此外,每次第16行的PWM輸出改變時,將等待由WAITTIME指定的持續(xù)時間。

當PWM比率達到255時,它會逐漸減小該值直到0,以使LED逐漸變暗(第21到25行)??梢酝ㄟ^更改第3行的WAITTIME或第4行的STEP的值來調(diào)節(jié)閃爍速度。

此次我們學(xué)習了如何控制LED的亮度。下篇再見!

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • led
    led
    +關(guān)注

    關(guān)注

    242

    文章

    23277

    瀏覽量

    660869
  • PWM
    PWM
    +關(guān)注

    關(guān)注

    114

    文章

    5186

    瀏覽量

    213937
  • 數(shù)字輸出
    +關(guān)注

    關(guān)注

    0

    文章

    24

    瀏覽量

    8925
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6469

    瀏覽量

    187063
收藏 人收藏

    評論

    相關(guān)推薦

    led亮度自動調(diào)節(jié)

    各位大神!有沒有誰知道基于熱敏電阻的LED亮度自動調(diào)節(jié)功能怎么實現(xiàn)啊????
    發(fā)表于 03-04 11:41

    LED顯示亮度能依據(jù)環(huán)境亮度變化自動調(diào)節(jié)

    如何實現(xiàn)依據(jù)環(huán)境亮度來自動調(diào)節(jié)LED的顯示亮度,那位大神知道,幫幫忙啊{:soso_e150:}
    發(fā)表于 08-05 11:13

    PWM調(diào)節(jié)LED亮度的工作過程

    求下圖PWM調(diào)節(jié)LED亮度的工作過程
    發(fā)表于 05-06 22:21

    亮度LED驅(qū)動一般用什么驅(qū)動?LED亮度調(diào)節(jié)怎么做?

    隨著高亮LED效率的不斷提高,即流明/瓦特比的增加,越來越多的照明應(yīng)用開始選擇高亮度LED,例如汽車的外燈;日間行車燈,近光燈、遠光燈等。電路設(shè)計中高亮度
    發(fā)表于 04-06 06:32

    如何采用PWM方式調(diào)節(jié)LED亮度

    采用PWM方式調(diào)節(jié)LED亮度的原理調(diào)節(jié)LED亮度的兩種方式:1.改變
    發(fā)表于 11-23 07:06

    LED亮度電流調(diào)節(jié)

    描述LED亮度電流調(diào)節(jié)器20mA如果您需要調(diào)節(jié) LED 亮度,可以使用此電路。一個
    發(fā)表于 08-15 06:39

    用超聲波的距離遠近對應(yīng)來調(diào)節(jié)LED亮度,調(diào)節(jié)亮度不穩(wěn)定怎么解決?

    用超聲波的距離遠近對應(yīng)來調(diào)節(jié)LED亮度,調(diào)節(jié)亮度不穩(wěn)定。怎么解決?
    發(fā)表于 11-09 08:27

    一款LED亮度調(diào)節(jié)IC的應(yīng)用

    SJT5301B是一顆適用於LED燈光亮度調(diào)節(jié)的觸摸式調(diào)光IC,有無段調(diào)光、二段調(diào)光和三段調(diào)光等調(diào)光模式,三段調(diào)光可由高亮到低亮調(diào)節(jié),也可由低亮到高亮
    發(fā)表于 08-05 15:40 ?2883次閱讀
    一款<b class='flag-5'>LED</b><b class='flag-5'>亮度</b><b class='flag-5'>調(diào)節(jié)</b>IC的應(yīng)用

    模擬技術(shù)簡化便攜式應(yīng)用中的LED亮度調(diào)節(jié)

    模擬和PWM亮度調(diào)節(jié)方法都對LED驅(qū)動電流進行控制,而該電流同光線輸出成正比關(guān)系。模擬亮度調(diào)節(jié)結(jié)構(gòu)簡單,控制功耗最低,并且一般比PWM
    發(fā)表于 10-17 16:00 ?1102次閱讀

    LED亮度調(diào)節(jié)方案

    使用LED型固態(tài)照明(SSL)的便攜式設(shè)備要求使用高效驅(qū)動電路來延長電池使用時間,同時還要求使用一些亮度調(diào)節(jié)方法來對光線輸出進行調(diào)節(jié),以適應(yīng)周圍的照明環(huán)境。在諸如智能手機或者便攜式GP
    發(fā)表于 06-11 09:08 ?1.3w次閱讀
    <b class='flag-5'>LED</b><b class='flag-5'>亮度</b><b class='flag-5'>調(diào)節(jié)</b>方案

    充電式LED調(diào)節(jié)亮度的方法

    可以調(diào)節(jié)亮度的充電式LED調(diào)節(jié)亮度一般有兩種方法:一是采用簡單的電阻調(diào)節(jié)
    的頭像 發(fā)表于 02-12 15:52 ?1.5w次閱讀
    充電式<b class='flag-5'>LED</b>燈<b class='flag-5'>調(diào)節(jié)</b><b class='flag-5'>亮度</b>的方法

    Arduino Nextion Display使用滑塊控制LED亮度

    電子發(fā)燒友網(wǎng)站提供《Arduino Nextion Display使用滑塊控制LED亮度.zip》資料免費下載
    發(fā)表于 10-28 14:31 ?0次下載
    <b class='flag-5'>Arduino</b> Nextion Display使用滑塊控制<b class='flag-5'>LED</b><b class='flag-5'>亮度</b>

    Arduino手勢控制LED亮度

    電子發(fā)燒友網(wǎng)站提供《Arduino手勢控制LED亮度.zip》資料免費下載
    發(fā)表于 01-31 14:47 ?1次下載
    <b class='flag-5'>Arduino</b>手勢控制<b class='flag-5'>LED</b><b class='flag-5'>亮度</b>

    使用電位器和Arduino控制LED亮度

    電子發(fā)燒友網(wǎng)站提供《使用電位器和Arduino控制LED亮度.zip》資料免費下載
    發(fā)表于 07-06 09:50 ?0次下載
    使用電位器和<b class='flag-5'>Arduino</b>控制<b class='flag-5'>LED</b><b class='flag-5'>亮度</b>

    PWM調(diào)制技術(shù)在LED亮度調(diào)節(jié)中的使用

    隨著科技的發(fā)展,LED(發(fā)光二極管)因其高亮度、低能耗、長壽命等優(yōu)點,在照明領(lǐng)域得到了廣泛的應(yīng)用。LED亮度調(diào)節(jié)是其應(yīng)用中的一個重要環(huán)節(jié),
    的頭像 發(fā)表于 11-18 15:28 ?965次閱讀