国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
鑰匙要點
我們的arduino素描
結論
>如何將我的點矩陣LED顯示器連接到我的計算機?將點矩陣LED顯示器連接到計算機通常涉及使用微控制器,例如Arduino或Raspberry Pi。微控制器充當計算機和LED顯示屏之間的中介。然后,您可以使用node.js將數據從計算機發(fā)送到微控制器,然后將數據發(fā)送到LED顯示器。
使用DOT矩陣LED顯示器的優(yōu)點是什么? 。它們用途廣泛,可以顯示文本,數字和圖像。它們也具有節(jié)能,耐用,壽命很長。此外,它們提供了高亮度和可見性,使其適合各種應用程序,從廣告板到信息顯示。
>

>我可以將DOT矩陣LED顯示用于大型應用程序嗎?它們可以合并以創(chuàng)建較大的顯示器,使其非常適合數字廣告牌,公共信息顯示和大規(guī)模廣告。

>我如何解決我的點矩陣LED顯示問題的問題?點矩陣LED顯示器可以檢查顯示顯示器和微控制器之間的連接,以確保將正確的數據發(fā)送到顯示器并檢查電源。如果您使用node.js,也可以使用調試工具來幫助識別代碼的任何問題。
是的,點矩陣LED顯示器可以在戶外使用。但是,重要的是要確保顯示屏受到元素的適當保護。這可能涉及使用防風雨套管或將顯示器安裝在庇護所的位置。
首頁 web前端 js教程 用node.js顯示在點矩陣LED顯示器上顯示圖像

用node.js顯示在點矩陣LED顯示器上顯示圖像

Feb 19, 2025 am 10:59 AM

用node.js顯示在點矩陣LED顯示器上顯示圖像

鑰匙要點

  • 培訓DMD庫用于將線,形狀和文本繪制到點矩陣LED顯示器上。可以從freetronics github存儲庫中下載此庫,然后復制到/arduino/libraries/folder。 > > Node.js中的png.decode()函數在png映像文件中讀取,并返回0到255的值數組,代表每個像素的紅色,綠色,藍色,藍色和alpha值。然后,這些值用于確定是否應在點矩陣LED顯示器上顯示每個像素為黑色或白色。
  • >可以通過多種方式擴展和自定義點矩陣LED顯示。例如,它可以連接到API以顯示通過它的圖像,也可以根據一天中的時間,與Internet連接的設備的狀態(tài),天氣等顯示不同的圖像。
  • DOT矩陣LED顯示器很有趣。哪些開發(fā)人員不喜歡燈光燈可以玩?我最近與Node.js配對了32 x 16點矩陣顯示器,并將其顯示為黑白PNG圖像。在本文中,我將解釋一切的工作原理。
  • >一個點矩陣LED顯示器(也稱為DOT矩陣顯示或DMD)是帶有LED燈網格的顯示屏,您可以打開和關閉,以顯示文本和形狀。其中一些具有多種顏色,而另一些則只是一種顏色。我們將在此演示中使用的一種只有一種顏色,因此我們僅限于黑白圖像。重要的是要注意 - LED顯示屏與LCD顯示器完全不同。 LCD使用精美的光晶體,用于在VCR,時鐘,計算器等上顯示。幾周前,我寫了一篇文章,內容涉及使用Node.js上的Arduino LCD上顯示Web API。如果您想比較兩者,請看一下。
  • 這個特定的演示需要一個露天率32×16點矩陣顯示器,因為它依賴于freetronics dmd庫。
  • >
  • 演示代碼
如果您渴望抓住代碼并嘗試一下,可以在GitHub上找到它。

訓練dmd庫

>

通過訓練DMD庫完成了我們的LED點矩陣顯示器上的繪圖線,形狀和文本。要使用它,請完成以下步驟:

  1. >從他們的github存儲庫下載DMD庫。
  2. >以其自己的文件夾名稱將這些文件復制到您的/arduino/libraries/文件夾中。對于我在Mac上的我,我將其放在/用戶/用戶名/文檔/arduino/libraries/dmd-master的文件夾中。
  3. >
  4. >下載TemerOne庫,并將其放入您的/arduino/libraries/文件夾中。例如對于Mac用戶,/用戶/用戶名/文檔/arduino/libraries/timerone-r11。
  5. >

我們的arduino素描

在我們的Arduino素描代碼中,將發(fā)生在DMD上顯示元素的大多數功能。草圖代碼將留意串行端口上的消息,并根據這些消息更改顯示的顯示。

草圖始于我們的包含和常數。我們包括SoftWareserial.H,允許我們訪問串行端口并定義DMD的寬度和高度(在我們的情況下為32×16)。 Buflength存儲了我們擁有的燈數,因為這是我們要發(fā)送Arduino的消息的最大大小。在我們的情況下,它乘以32乘以16,即512。

>

接下來,我們將包括特定于自由式DMD的特定內容。這些都應從我們復制到Arduino Libraries文件夾中的文件中可用。
<span><span>#include <SoftwareSerial.h></span>
</span>  <span><span>#define SCREEN_WIDTH <span>32</span></span>
</span>  <span><span>#define SCREEN_HEIGHT <span>16</span></span>
</span>  <span><span>#define BUFLENGTH <span>512</span></span></span>
>

然后,我們有兩個常數displays_across和displays_down,用于定義我們加入了多少個LED顯示。我假設您與我處于同一情況,并且只有一個顯示,因此這兩個都等于一個。然后,我們將其傳遞到DMD庫中,使用DMD DMD()。

DMD樣本中包含下一個代碼。這是我們稱為DMD庫以設置間隔刷新顯示的功能。我們將間隔定義得更遠。
<span><span>#include <SPI.h></span>
</span>  <span><span>#include <DMD.h></span>
</span>  <span><span>#include <TimerOne.h></span></span>
>

然后,我們定義了最后兩個變量。這兩個與通過串行端口接收消息有關。首先,BUF [BUFLENGTH]存儲串行端口消息的緩沖區(qū),其中LED應打開和關閉。其次,bufcount將用于存儲此緩沖區(qū)中的多少個字節(jié)以讀取。

<span><span>#define DISPLAYS_ACROSS <span>1</span></span>
</span>  <span><span>#define DISPLAYS_DOWN <span>1</span></span>
</span>  DMD <span>dmd(DISPLAYS_ACROSS, DISPLAYS_DOWN);</span>
>我們的setup()函數使用常數和定義的庫開始整個過程??。它首先是在端口57600上聆聽串行端口消息。

>

然后,我們使用我們之前包含的TimerOne庫初始化計時器。我們告訴它是四毫秒的倒計時。在Freetronics的示例中,他們建議不要將其設置為超過五毫秒以避免在我們的展示中閃爍。
<span>void ScanDMD() { 
</span>    dmd<span>.scanDisplayBySPI();
</span>  <span>}</span>
>

然后,當我們的計時器到期時,我們將其設置為運行ScandMD()函數,從而刷新顯示器。

<span>char buf[BUFLENGTH];
</span>  <span>int bufCount;</span>
>最后,在我們的setup()函數中,我們通過忠于dmd.clearscreen()函數來清除顯示屏上的所有像素。如果您將虛假傳遞到此功能,則每個像素都會打開!

>

<span><span>#include <SoftwareSerial.h></span>
</span>  <span><span>#define SCREEN_WIDTH <span>32</span></span>
</span>  <span><span>#define SCREEN_HEIGHT <span>16</span></span>
</span>  <span><span>#define BUFLENGTH <span>512</span></span></span>
在我們的Arduino loop()函數中,我們會注意串行端口上的任何消息。我們觀察以查看有多少個字節(jié)可從串行端口閱讀。如果有可用的字節(jié),那么我們會通過一個消息流進行流,然后運行serialParse()函數。

>

<span><span>#include <SPI.h></span>
</span>  <span><span>#include <DMD.h></span>
</span>  <span><span>#include <TimerOne.h></span></span>
>在serialparse()內,我們將bufcount設置為-1以重置計數值。然后,我們使用serial.ReadBytesuntil()中讀取該數組(我們的buflength)的512個元素。如果有n個字符,它也將停止閱讀數組。這里的主要目的是將串行信息保持在我們的LED光網格的長度內。

如果我們確實在緩沖區(qū)中有消息,則將其發(fā)送到Parsebuffer(),該parsebuffer()將解析并將其顯示在我們的屏幕上。
<span><span>#define DISPLAYS_ACROSS <span>1</span></span>
</span>  <span><span>#define DISPLAYS_DOWN <span>1</span></span>
</span>  DMD <span>dmd(DISPLAYS_ACROSS, DISPLAYS_DOWN);</span>

在ParseBuffer()函數中,我們首先清除屏幕,以便我們用新圖紙點亮它。然后,我們創(chuàng)建一個i的整數,以跟蹤我們正在閱讀的數組中的哪個位置。

> 然后,我們通過x通過x循環(huán)到屏幕_Width,然后通過y循環(huán)向下循環(huán)直至screen_height,然后通過x循環(huán)循環(huán)循環(huán),然后從x循環(huán)循環(huán),然后從左到右迭代。這將我們的一維數組讀取到DMD的二維顯示中。對于每個角色,我們檢查是否是“ 1”。如果是這樣,那么我們在x和y處的顯示屏上畫出了該LED。這將用于黑色圖像的各個部分。如果不是“ 1”,那么我們將繼續(xù)到下一個位置,依此類推。最終,繪制我們的整個圖像。
<span>void ScanDMD() { 
</span>    dmd<span>.scanDisplayBySPI();
</span>  <span>}</span>

涵蓋了我們的Arduino的工作原理 - 如果我們現在在附加的LED上運行該代碼,那么它根本沒有顯示。要在DOT矩陣顯示器上顯示任何顯示的內容,我們需要我們的節(jié)點代碼將其發(fā)送到串行端口的消息。

我們的節(jié)點代碼
<span>char buf[BUFLENGTH];
</span>  <span>int bufCount;</span>

我們的JavaScript首先需要兩個重要的NPM模塊。 SerialPort將使我們能夠通過串行端口向我們的Arduino和PNG-JS發(fā)送消息,這是我們的PNG圖像中讀取的內容。

>

然后,我們設置了串行端口消息。我們在變量序列上設置了一個串行對象,并使用我們的Arduino連接到哪個端口,以及我們將在上面聆聽的串行端口消息。

如果您不確定您的arduino連接到哪個端口(例如,我有'/dev/tty.usbmodem1431'),請將其連接到您的PC,打開Arduino IDE,請轉到工具>端口,然后查看哪個端口選擇。

<span>void setup() {
</span>    Serial<span>.begin(57600);</span>

>波特率可以是個人喜好,如果您不太擔心它使用的是哪種波特率,請隨時堅持我們在示例中已經獲得的。 然后,我們初始化一個稱為serialMessage的字符串變量,該變量將存儲我們將通過串行端口發(fā)送的完整字符串和零字符串。

<span><span>#include <SoftwareSerial.h></span>
</span>  <span><span>#define SCREEN_WIDTH <span>32</span></span>
</span>  <span><span>#define SCREEN_HEIGHT <span>16</span></span>
</span>  <span><span>#define BUFLENGTH <span>512</span></span></span>

>我們的Serialport對象具有“打開”的事件偵聽器,當定義串行端口打開并準備從我們的JavaScript訪問時,它會響應。在這種情況下,我們運行console.log,因此我們可以確定我們的串行端口消息都很好。

>
<span><span>#include <SPI.h></span>
</span>  <span><span>#include <DMD.h></span>
</span>  <span><span>#include <TimerOne.h></span></span>

>一旦我們知道我們的串行端口已準備就緒消息,我們將運行png.decode()函數以讀取我們的png映像文件。在我們的演示中,我們在與名為sitePointLogo-withsmile.png的節(jié)點文件的同一文件夾中有一個PNG映像,因此我們傳遞了該文件名。然后,我們擁有回調函數,該功能通過數據變量為我們提供了PNG文件的數據。

<span><span>#define DISPLAYS_ACROSS <span>1</span></span>
</span>  <span><span>#define DISPLAYS_DOWN <span>1</span></span>
</span>  DMD <span>dmd(DISPLAYS_ACROSS, DISPLAYS_DOWN);</span>
從我們的png.decode()函數返回的數據將是0到255的值。它們通過每個像素迭代每個像素,每個像素都有一系列四個項目 - 紅色,綠色,藍色和alpha價值。我們不會在演示中使用Alpha值,因為我們只是處理黑白圖像,但理論上您可以使用。樣本陣列看起來像:

上面的陣列代表一個白色像素,其255,255,255,255和一個黑色像素為0,0,0,255。每個像素都一遍又一遍地繼續(xù),直到我們代表整個圖像為止。
<span>void ScanDMD() { 
</span>    dmd<span>.scanDisplayBySPI();
</span>  <span>}</span>
在我們的回調函數中,我們將序列序列重置為空白字符串,然后以四個集合的數據陣列開始迭代。我們設置了一個紅色,綠色和藍色的局部變量,以匹配每個像素的各自值。

>

為了能夠處理并非完全黑色或白色的灰度值,我們還進行了亮度檢查。下面的功能確定了像素的顏色的深色或光線:

<span>char buf[BUFLENGTH];
</span>  <span>int bufCount;</span>
如果該值大于150,那么我們假設它是一種漂亮的淺色,并將其設置為0(白色)。否則,我們將其設置為1并將其變成黑色。我們將任何一個值都附加到序列的字符串。

>

<span>void setup() {
</span>    Serial<span>.begin(57600);</span>
>一旦我們遍歷了每個像素并分配了零或一個代表它,我們就會使用serialport.write()通過串行端口發(fā)送該消息。在圖像中閱讀和迭代的整個過程實際上比顯示器準備接收它所需的時間更快,因此我將其放入SettieMout中,以使其在運行之前等待兩秒鐘。

Timer1<span>.initialize(4000);</span>
>運行我們的演示

>如果上傳草圖,請將顯示器連接到您的arduino,然后通過Node SeriaLdMd.js運行節(jié)點服務器代碼(請記住,請首先安裝所有內容),您應該看到它用PNG文件點亮,例如:用node.js顯示在點矩陣LED顯示器上顯示圖像

結論

>您可以通過多種方法進行擴展。它是一個節(jié)點服務器,因此您可以將其連接到API并顯示通過它的圖像。您可以根據一天中的時間(您的家中的Internet連接設備,天氣或其他許多東西)顯示出不同的圖像!

>

如果您將這個想法擴展到真正整潔的事物中,請在評論中知道或在Twitter上與我聯(lián)系(@thatpatrickguy),我想看看!

>經常詢問的問題(常見問題解答)有關在點矩陣LED顯示上顯示帶有node.js >

> node.js在DOT矩陣LED顯示器上顯示圖像的作用是什么?>

>如何將我的點矩陣LED顯示器連接到我的計算機?將點矩陣LED顯示器連接到計算機通常涉及使用微控制器,例如Arduino或Raspberry Pi。微控制器充當計算機和LED顯示屏之間的中介。然后,您可以使用node.js將數據從計算機發(fā)送到微控制器,然后將數據發(fā)送到LED顯示器。

我可以使用Node.js以外的其他編程語言來控制點矩陣LED顯示器是的,是的,您可以使用其他編程語言來控制點矩陣LED顯示。雖然本文由于易于使用和多功能性而著重于使用Node.js,但也可以使用其他語言,例如Python,C和Java。編程語言的選擇在很大程度上取決于您的舒適度和項目的特定要求。

>

使用DOT矩陣LED顯示器的優(yōu)點是什么? 。它們用途廣泛,可以顯示文本,數字和圖像。它們也具有節(jié)能,耐用,壽命很長。此外,它們提供了高亮度和可見性,使其適合各種應用程序,從廣告板到信息顯示。

如何在我的點矩陣LED顯示器上顯示自定義圖像?

點矩陣LED顯示屏上的圖像涉及將圖像轉換為顯示器可以理解的格式。這通常涉及將圖像轉換為二進制格式,其中每個像素由0(OFF)或1(ON)表示。然后,您可以使用node.js將此二進制數據發(fā)送到LED顯示。

>

>我可以將DOT矩陣LED顯示用于大型應用程序嗎?它們可以合并以創(chuàng)建較大的顯示器,使其非常適合數字廣告牌,公共信息顯示和大規(guī)模廣告。

>

> dot矩陣LED顯示的壽命是多少? > DOT矩陣LED顯示屏的壽命可能會因所使用的LED質量以及使用顯示的條件而有所不同。但是,LED顯示器通常以其壽命而聞名,可以持續(xù)數萬小時的使用。

>

>我如何解決我的點矩陣LED顯示問題的問題?點矩陣LED顯示器可以檢查顯示顯示器和微控制器之間的連接,以確保將正確的數據發(fā)送到顯示器并檢查電源。如果您使用node.js,也可以使用調試工具來幫助識別代碼的任何問題。

我可以在戶外使用dot矩陣LED顯示嗎?

是的,點矩陣LED顯示器可以在戶外使用。但是,重要的是要確保顯示屏受到元素的適當保護。這可能涉及使用防風雨套管或將顯示器安裝在庇護所的位置。

>我如何優(yōu)化點矩陣LED顯示器的亮度?

> dot矩陣LED顯示器的亮度可以使用脈沖寬度調制(PWM)控制。這涉及改變每個LED打開的時間的量,這又控制了顯示屏的亮度。您可以使用node.js控制發(fā)送到LED顯示屏的PWM信號,從而使您可以根據需要調整亮度。

以上是用node.js顯示在點矩陣LED顯示器上顯示圖像的詳細內容。更多信息請關注PHP中文網其他相關文章!

本站聲明
本文內容由網友自發(fā)貢獻,版權歸原作者所有,本站不承擔相應法律責任。如您發(fā)現有涉嫌抄襲侵權的內容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅動的應用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

Java vs. JavaScript:清除混亂 Java vs. JavaScript:清除混亂 Jun 20, 2025 am 12:27 AM

Java和JavaScript是不同的編程語言,各自適用于不同的應用場景。Java用于大型企業(yè)和移動應用開發(fā),而JavaScript主要用于網頁開發(fā)。

JavaScript評論:簡短說明 JavaScript評論:簡短說明 Jun 19, 2025 am 12:40 AM

JavascriptconcommentsenceenceEncorenceEnterential gransimenting,reading and guidingCodeeXecution.1)單inecommentsareusedforquickexplanations.2)多l(xiāng)inecommentsexplaincomplexlogicorprovideDocumentation.3)

如何在JS中與日期和時間合作? 如何在JS中與日期和時間合作? Jul 01, 2025 am 01:27 AM

JavaScript中的日期和時間處理需注意以下幾點:1.創(chuàng)建Date對象有多種方式,推薦使用ISO格式字符串以保證兼容性;2.獲取和設置時間信息可用get和set方法,注意月份從0開始;3.手動格式化日期需拼接字符串,也可使用第三方庫;4.處理時區(qū)問題建議使用支持時區(qū)的庫,如Luxon。掌握這些要點能有效避免常見錯誤。

為什么要將標簽放在的底部? 為什么要將標簽放在的底部? Jul 02, 2025 am 01:22 AM

PlacingtagsatthebottomofablogpostorwebpageservespracticalpurposesforSEO,userexperience,anddesign.1.IthelpswithSEObyallowingsearchenginestoaccesskeyword-relevanttagswithoutclutteringthemaincontent.2.Itimprovesuserexperiencebykeepingthefocusonthearticl

JavaScript與Java:開發(fā)人員的全面比較 JavaScript與Java:開發(fā)人員的全面比較 Jun 20, 2025 am 12:21 AM

JavaScriptIspreferredforredforwebdevelverment,而Javaisbetterforlarge-ScalebackendsystystemsandSandAndRoidApps.1)JavascriptexcelcelsincreatingInteractiveWebexperienceswebexperienceswithitswithitsdynamicnnamicnnamicnnamicnnamicnemicnemicnemicnemicnemicnemicnemicnemicnddommanipulation.2)

JavaScript:探索用于高效編碼的數據類型 JavaScript:探索用于高效編碼的數據類型 Jun 20, 2025 am 12:46 AM

javascripthassevenfundaMentalDatatypes:數字,弦,布爾值,未定義,null,object和symbol.1)numberSeadUble-eaduble-ecisionFormat,forwidevaluerangesbutbecautious.2)

什么是在DOM中冒泡和捕獲的事件? 什么是在DOM中冒泡和捕獲的事件? Jul 02, 2025 am 01:19 AM

事件捕獲和冒泡是DOM中事件傳播的兩個階段,捕獲是從頂層向下到目標元素,冒泡是從目標元素向上傳播到頂層。1.事件捕獲通過addEventListener的useCapture參數設為true實現;2.事件冒泡是默認行為,useCapture設為false或省略;3.可使用event.stopPropagation()阻止事件傳播;4.冒泡支持事件委托,提高動態(tài)內容處理效率;5.捕獲可用于提前攔截事件,如日志記錄或錯誤處理。了解這兩個階段有助于精確控制JavaScript響應用戶操作的時機和方式。

Java和JavaScript有什么區(qū)別? Java和JavaScript有什么區(qū)別? Jun 17, 2025 am 09:17 AM

Java和JavaScript是不同的編程語言。1.Java是靜態(tài)類型、編譯型語言,適用于企業(yè)應用和大型系統(tǒng)。2.JavaScript是動態(tài)類型、解釋型語言,主要用于網頁交互和前端開發(fā)。

See all articles