用Arduino代碼庫(kù)做LED燈帶控制 太強(qiáng)了!
本文介紹了Arduino代碼庫(kù)的強(qiáng)大功能, 推薦使用Arduino Uno等開(kāi)發(fā)板,并詳細(xì)說(shuō)明了如何安裝和使用Adafruit NeoPixel庫(kù)來(lái)控制智能可尋址 LED燈帶。文章還解釋了如何組裝電路、編寫(xiě)和修改函數(shù)以創(chuàng)建獨(dú)特的燈光效果,并強(qiáng)調(diào)了庫(kù)在簡(jiǎn)化設(shè)備通信和程序構(gòu)建中的重要性。此外,文章還介紹了如何安裝額外的開(kāi)發(fā)板。Arduino社區(qū)最強(qiáng)大的點(diǎn)之一在于它的代碼庫(kù) —— 這些專(zhuān)門(mén)的編程包能夠讓您用簡(jiǎn)單的指令控制復(fù)雜的計(jì)算工具。Arduino會(huì)識(shí)別這些附加模塊,讓您可以在您的程序中使用這些指令。以下視頻將帶來(lái)走進(jìn)Arduino代碼庫(kù)。趕快點(diǎn)開(kāi)來(lái)看,實(shí)現(xiàn)您的創(chuàng)意吧!
本文引用地址:http://2s4d.com/article/202501/466193.htmArduino的代碼庫(kù)涵蓋各種復(fù)雜任務(wù),比如控制大量LED、讀取傳感器、生成聲音、處理數(shù)據(jù)、寫(xiě)入顯示器等等。有些庫(kù)是 Arduino 軟件內(nèi)置的,例如允許您控制伺服電機(jī)的庫(kù)。任何人都可以發(fā)布其代碼庫(kù),而Arduino軟件也自帶了成千上萬(wàn)個(gè)可供安裝的代碼庫(kù)。
在開(kāi)始時(shí),我建議首先使用的開(kāi)發(fā)板是 Arduino Uno (1050-1024-ND) 或兼容產(chǎn)品,例如 Adafruit Metro (1528-1214-ND) 、 Sparkfun Redboard (1568-1977-ND) 或 Seeeduino (102010026-ND) 。
要構(gòu)建本視頻中的電路,您需要:
Arduino Uno 或兼容產(chǎn)品,以及 USB 線(xiàn)
無(wú)焊面包板
跳線(xiàn) 或 實(shí)心連接線(xiàn)
WS2812 可尋址 LED 燈帶(又名 NeoPixel 燈帶)
讓我們從 智能可尋址 LED 開(kāi)始,這是一系列可控制的 LED 燈,通常稱(chēng)為 NeoPixels,這是 Adafruit 的品牌名稱(chēng)。每個(gè)像素包含一個(gè) WS2812 芯片,該芯片與 Arduino 主板和燈帶中的其他像素進(jìn)行通信,以確定是否點(diǎn)亮以及點(diǎn)亮什么顏色——沒(méi)有控制器,它是無(wú)法亮起的。為了控 制這條燈帶,我們需要一些額外的Arduino函數(shù),您可以通過(guò)安裝代碼庫(kù)來(lái)獲取它們。
安裝庫(kù)的步驟是,打開(kāi)庫(kù)管理器,點(diǎn)擊“Sketch”(菜單) > “Include Library”(包含庫(kù))>“ Manage Libraries” (管理庫(kù)) 。
然后搜索 “NeoPixel” ,找到 “Adafruit NeoPixel” 庫(kù)并點(diǎn)擊安裝?,F(xiàn)在,您已準(zhǔn)備好在 Arduino 項(xiàng)目中使用 NeoPixel 庫(kù)!您可以在需要時(shí)使用庫(kù)管理器安裝新的庫(kù)。
NeoPixel 燈帶中的每個(gè)像素都包含一個(gè)非常小的 RGB LED,理論上可以形成任何顏色的光。但是,生成純白色對(duì)于RGBLED來(lái)說(shuō)有難度,產(chǎn)生的光的色調(diào)不準(zhǔn)或混合質(zhì)量不佳等問(wèn)題常常令用戶(hù)失望。
因此,還有一種 RGBW 類(lèi)型的 LED,在其封裝內(nèi)部還包括一個(gè)白色LED,編寫(xiě)這些像素的代碼將包括四個(gè)亮度值來(lái)描述像素的顏色: 紅色、綠色、藍(lán)色和白色。這類(lèi)似于 本系列前面一集 中的an alogWrite()函數(shù)示例,您需要提供0到255之間的數(shù)字來(lái)表示每個(gè)LED的亮度。Neo Pixel庫(kù)中的函數(shù)以像素編號(hào)和這些顏色值作為參數(shù),然后將它們轉(zhuǎn)換為要發(fā)送給像素的命令。
要組裝電路,請(qǐng)將導(dǎo)線(xiàn)焊接到了像素的電源、地線(xiàn)和輸入引腳上,然后將Arduino板斷電,現(xiàn)在是時(shí)候連接電路了。
將紅色導(dǎo)線(xiàn)連接到5伏電源,黑色導(dǎo)線(xiàn)接地。白色數(shù)據(jù)線(xiàn)需要連接到Arduino 引腳 6,因?yàn)檫@是所包含的代碼示例使用的引腳。
請(qǐng)確保您將數(shù)據(jù)線(xiàn)連接到燈帶的輸入端,因?yàn)槿绻B接到輸出端,它將無(wú)法工作。電源和地線(xiàn)可以連接到燈帶的任何位置。
您可以在 “File”(文件) > “Examples”(示例)滾動(dòng)到底部來(lái)找到代碼示例,在那里您可以根據(jù)庫(kù)的名稱(chēng)查看子菜單。然后,打開(kāi)名為 “strandtest” 的示例。
第一部分創(chuàng)建了NeoPixel燈帶的實(shí)例,并設(shè)置了程序的可配置部分,比如連接到NeoPixel燈帶的引腳,像素?cái)?shù)量以及全局亮度級(jí)別。
# define語(yǔ)句類(lèi)似于變量聲明,但用于在程序運(yùn)行時(shí)不會(huì)更改的信息,比如引腳號(hào)或LED數(shù)量。它們占用的內(nèi)存比常規(guī)變量聲明要少。
strip.show()可以用來(lái)使像素?zé)魩Мa(chǎn)生變化,設(shè)置像素顏色和顯示最新更改被分成兩個(gè)單獨(dú)的命令。
The main loop just calls other functions. The first is colorWipe(), which takes two arguments: a ? color, and a speed value in milliseconds.主循環(huán)只是調(diào)用一些外部函數(shù),第一個(gè)是 colorWipe(),它接受兩個(gè)參數(shù):一個(gè)顏色值和一個(gè)以毫秒為單位的速度值。
要了解 colorWipe() 的作用,請(qǐng)?jiān)谥餮h(huán)下方尋找定義該函數(shù)的位置。函數(shù)定義以指定函數(shù)將返回或發(fā)送回主程序的數(shù)據(jù)類(lèi)型開(kāi)始。這次,該函數(shù)不返回任何內(nèi)容,它只是控制像素,因此,在函數(shù)定義的開(kāi)頭使用了 'void'。接下來(lái)是函數(shù)的名稱(chēng),在本示例中為“colorWipe”。當(dāng)您定義自己的函數(shù)時(shí),您可以隨意命名。在函數(shù)名稱(chēng)后的括號(hào)中,是該函數(shù)接受的參數(shù)。在本示例中,有一個(gè)名為“color”的 32 位無(wú)符號(hào)整數(shù)和一個(gè)名為“wait”的 8 位無(wú)符號(hào)整數(shù)。在函數(shù)內(nèi)部,這些局部變量用于引用您從主循環(huán)或另一個(gè)函數(shù)傳遞給它的信息。
該函數(shù)本身使用 for 循環(huán)和 NeoPixel 庫(kù)函數(shù) strip.numPixels(); 逐個(gè)處理燈帶中的所有像素,讓每個(gè)像素發(fā)出有顏色的光,然后再繼續(xù)下一個(gè)。strandtest 程序中的其他函數(shù)以相同的方式工作,并通過(guò)計(jì)算實(shí)現(xiàn)一些特別的燈光效果。
您可以輕松修改 colorWipe() 函數(shù)以編寫(xiě)自己獨(dú)特的動(dòng)態(tài)效果。復(fù)制并粘貼整個(gè)函數(shù)定義,更改函數(shù)名稱(chēng),然后就可以嘗試代碼了。務(wù)必從主循環(huán)內(nèi)部調(diào)用新函數(shù)。如果您找到喜歡的效果,則可以停止編輯該函數(shù)并創(chuàng)建一個(gè)新的函數(shù)。函數(shù)對(duì)于分離出您想要重復(fù)訪(fǎng)問(wèn)的代碼塊很方便,并且可以使您的代碼更易于閱讀。
當(dāng)您熟悉了安裝庫(kù)和通過(guò)包含的示例和庫(kù)的文檔,查找如何使用它們內(nèi)置的函數(shù),Arduino 世界就由您掌控。除了我們?cè)?nbsp;前幾集 中介紹的基本輸入和輸出之外,庫(kù)還讓您可以輕松地與使用 i2c 或 SPI 等數(shù)據(jù)協(xié)議進(jìn)行通信的設(shè)備進(jìn)行通信。這些設(shè)備使用更少的導(dǎo)線(xiàn)來(lái)發(fā)送和接收復(fù)雜信息。如果您對(duì)剛了解的所有新知識(shí)感到有些不知所措,請(qǐng)查看 我的指南 ,了解如何將您的 Arduino 項(xiàng)目從想法轉(zhuǎn)化為代碼?;旧?,您可以使用庫(kù)示例代碼讓每個(gè)單獨(dú)的輸入和輸出都正常工作,然后可以提取其他示例代碼中的片段逐步構(gòu)建一個(gè)新的程序。
在您學(xué)習(xí)使用 Arduino 的這個(gè)階段,還有一件很有用的事情就是如何安裝額外的電路板。就像 Sketch 菜單下的庫(kù)管理器一樣,工具菜單下也有一個(gè)開(kāi)發(fā)板管理器。但與庫(kù)不同的是,開(kāi)發(fā)板管理器需要知道在哪里查找新的開(kāi)發(fā)板信息。
例如,如果您想安裝 ESP開(kāi)發(fā)板 ,您需要先將該ESP開(kāi)發(fā)板的URL粘貼到Arduino首選項(xiàng)的這個(gè)字段中。然后打開(kāi)開(kāi)發(fā)板管理器,您將在列表中看到它們。您可以通過(guò)在這個(gè)字段中用逗號(hào)分隔來(lái)添加多個(gè)開(kāi)發(fā)板管理器的URL。有時(shí)兼容的開(kāi)發(fā)板還需要安裝驅(qū)動(dòng)程序,因此,請(qǐng)務(wù)必在準(zhǔn)備使用新開(kāi)發(fā)板時(shí)仔細(xì)閱讀文檔。
無(wú)論您是新手還是經(jīng)驗(yàn)豐富的工程師,Arduino都為您提供豐富的資源和靈感。希望能通過(guò)這些代碼庫(kù),可以讓您輕松實(shí)現(xiàn)創(chuàng)意,開(kāi)啟無(wú)限的可能性。讓我們繼續(xù)一起探索Arduino的世界,創(chuàng)造出令人驚嘆的項(xiàng)目吧!
看完視頻想提問(wèn)?或者有使用Auduino的經(jīng)驗(yàn)想分享?歡迎點(diǎn)擊以下按鈕↓ ↓ ↓
我要到技術(shù)論壇一起討論
關(guān)于本系列視頻
電子設(shè)計(jì)博大精深,對(duì)于初學(xué)者來(lái)說(shuō),有一定的難度。本系列視頻旨在介紹一些入門(mén)級(jí)的技術(shù)和技巧,包括電路設(shè)計(jì)基礎(chǔ)知識(shí)、簡(jiǎn)單編程等,讓初學(xué)者從基礎(chǔ)開(kāi)始,再一步步向更進(jìn)階出發(fā),在電子設(shè)計(jì)的世界里,發(fā)掘更多樂(lè)趣,同時(shí)也可以讓電子設(shè)計(jì)愛(ài)好者溫故知新。關(guān)于Becky Stern
Becky Stern 是一名創(chuàng)客,擁有多年設(shè)計(jì)電子項(xiàng)目的經(jīng)驗(yàn),創(chuàng)作和分享是她兩大愛(ài)好。在獨(dú)立創(chuàng)業(yè)之前,她曾擔(dān)任 Instructables (Autodesk) 的產(chǎn)品經(jīng)理、Adafruit 的可穿戴電子產(chǎn)品總監(jiān)等。她的作品曾被 BBC、CNN、Business Insider、Forbes 和 Science Friday 等知名媒體報(bào)道過(guò)。她創(chuàng)建了數(shù)百個(gè)關(guān)于技術(shù)和手工制作的在線(xiàn)DIY教程和視頻,旨在分享她的知識(shí),幫助同是電子設(shè)計(jì)愛(ài)好者的同路人學(xué)習(xí),相互交流。
評(píng)論