在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

怎樣對Arduino 4x4x4 LED立方體編程

454398 ? 來源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2019-12-02 16:40 ? 次閱讀

上周,我構(gòu)建了一個LED立方體– 64個LED ,您可以對其進(jìn)行編程以進(jìn)行夢幻般的未來派燈光秀,而且我希望您也這樣做,因?yàn)樗钅U(kuò)展Arduino技能的絕佳項(xiàng)目。我為您提供了一些基本的應(yīng)用程序,以幫助您進(jìn)行思考,但是今天,我將介紹為多維數(shù)據(jù)集制作的更多軟件以及代碼說明。這樣做的目的不僅是為您提供更多運(yùn)行的燈光秀,而且是為了了解對多維數(shù)據(jù)集進(jìn)行編程的一些限制,并在此過程中學(xué)習(xí)一些新的編程概念。

這是一些相當(dāng)高級的編碼。在自定義提供的代碼之前,您確實(shí)需要閱讀我以前的所有 Arduino教程和我們的初學(xué)者Arduino指南。

應(yīng)用程序1:迷你蛇

我不想運(yùn)行一套像蛇一樣的圖案序列,而是想對一條蛇進(jìn)行編程,這是一種人工的蛇,它可以自己做出隨機(jī)選擇,而且完全不可預(yù)測。僅限于2個細(xì)分,我將在后面解釋,您可以在下面查看演示。在此處下載完整的代碼。

處理3D空間時,單個點(diǎn)需要3個坐標(biāo): X, Y 和 Z 。

但是,在我們的立方體中,X和Z平面由LED引腳表示,而Y直接由LED引腳表示。映射到陰極平面。為了方便使用這些坐標(biāo)并弄清楚立方體周圍的運(yùn)動,我創(chuàng)建了一個新的數(shù)據(jù)類型(使用結(jié)構(gòu))來表示立方體上的單個點(diǎn),我稱之為“ xyz”。它僅由兩個整數(shù)組成:“ xz”和“ y”。通過這種結(jié)構(gòu),我還可以在下面的特殊(xz,y)坐標(biāo)系中表示一個方向:

Y運(yùn)動 (向上,向下):(xz,y + 1),(xz,y-1)

Z 運(yùn)動 (向前,向后) :(xz-1,y),(xz + 1,y)

X運(yùn)動 (左,右):(xz + 4,y),( xz-4,y)

例如,要將LED沿一個位置向左移動(0,0),我們應(yīng)用(xz + 4,y) 并以(0,4)結(jié)尾。

對移動有一定限制-即Y坐標(biāo)只能是可能的 0到3 (0是最底層,3是最上層),而XZ坐標(biāo)只能是 0到15 。在Z軸運(yùn)動上設(shè)置了另一個限制,以防止從立方體的后部到前面的“跳躍”,反之亦然。在這種情況下,我們使用模數(shù)函數(shù)測試4的倍數(shù),并拒絕該移動嘗試。這是邏輯,用 valid()函數(shù)表示,如果建議的方向是可以接受的移動,則返回true,否則返回false。我添加了另一個函數(shù)來檢查反向 –也就是說,如果蛇正朝一個方向前進(jìn),即使它是移動到–和 move()《的有效位置,我們也不希望它向后退。/strong》函數(shù),該函數(shù)將獲取坐標(biāo),方向并返回新坐標(biāo)。

XYZ 數(shù)據(jù)類型, valid(), move()和 inverse()函數(shù)都可以在下載的 xyz.h 文件中找到。如果您想知道為什么將其放入一個單獨(dú)的文件而不是主程序文件中,那是由于一些復(fù)雜的Arduino編譯器規(guī)則阻止了返回自定義數(shù)據(jù)類型;它們必須放置在自己的文件中,然后在主文件的開頭導(dǎo)入。

在主運(yùn)行時文件中,一個方向數(shù)組存儲了蛇可能做出的所有可能動作;我們可以簡單地選擇一個隨機(jī)數(shù)組成員來獲得新的方向。還創(chuàng)建了變量來存儲當(dāng)前位置(現(xiàn)在),先前的方向和先前的位置。其余代碼對您來說應(yīng)該是顯而易見的。只需f o r個循環(huán),然后打開和關(guān)閉LED。在主循環(huán)中,我們檢查建議的方向是否有效,如果是,則按照這種方式進(jìn)行。如果沒有,我們會選擇一個新的方向。

在主循環(huán)中唯一要指出的是一些檢查,以糾正我發(fā)現(xiàn)的涉及多路復(fù)用的錯誤:如果新位置在相同的陰極平面或相同的陰極平面上陽極引腳,關(guān)閉前一個LED會導(dǎo)致兩個LED都熄滅。也是在這一點(diǎn)上,我意識到在我當(dāng)前的實(shí)現(xiàn)中,超越2段蛇形是不可能的:嘗試以角落布置方式點(diǎn)亮3個LED。您不能這樣做,因?yàn)榧せ?層和2個LED引腳后,將打開4個LED,而不是3個。這是我們有限的多維數(shù)據(jù)集設(shè)計(jì)固有的問題,但不必?fù)?dān)心:我們只需要使用視覺持久性以重寫繪圖方法。

視覺持久性意味著當(dāng)光線順序到達(dá)我們的眼睛時(比我們能夠處理的快),它看起來像是一幅圖像。在我們的案例中,與其同時繪制所有四個圖層,不如繪制第一層,將其停用,繪制第二層并使其停用:這比我們知道發(fā)生任何變化的速度還快。這就是消息編寫者工作的原理,就像這樣:

使用視覺持久性的新繪制方法

首先,是一個新的繪制例程。我創(chuàng)建了一個 4 x 16二維數(shù)組(正確或錯誤)以表示LED立方體狀態(tài)的文字。繪制例程將通過簡單地對其進(jìn)行迭代并將每一層刷新到立方體一小會兒來實(shí)現(xiàn)視覺的持久性。它將繼續(xù)以當(dāng)前狀態(tài)繪制自己,直到刷新時間過去為止,此時我們將控制權(quán)傳遞回main loop()。我已將代碼的這一部分保存在此LED_cube_POV文件中,因此,如果您只想開始編寫自己的游戲,然后隨時使用它作為基礎(chǔ)。

應(yīng)用2:Game of生活

現(xiàn)在,讓我們將其開發(fā)為Conway的《人生游戲》的基本版本。對于不熟悉(嘗試使用Google搜索來查找令人敬畏的復(fù)活節(jié)彩蛋動畫)的人來說,生命游戲是細(xì)胞自動機(jī)的一個示例,它創(chuàng)造了一種令人著迷的給出的行為只有幾個簡單的規(guī)則。

例如,這是螞蟻在智力和蜂巢的思想下如何運(yùn)動的方式,盡管生物學(xué)事實(shí)表明它們實(shí)際上遵循非?;镜暮蔂柮梢?guī)則。這是完整的下載代碼:按下 reset 按鈕重新啟動。如果發(fā)現(xiàn)自己反復(fù)出現(xiàn)相同的模式,請嘗試按住rest按鈕更長的時間。

此處是生命博弈的規(guī)則:

任何少于兩個活鄰居的活細(xì)胞都會死亡,好像是由人口不足造成的。

有兩個活鄰居的活細(xì)胞或三個活著的鄰居繼續(xù)生活到下一代。

具有三個以上活著的鄰居的任何活細(xì)胞都會死去,就像人滿為患一樣。

任何有三個活著的鄰居的死細(xì)胞都會變成

運(yùn)行代碼。您會注意到,在5到10個“世代”內(nèi),自動機(jī)可能已經(jīng)停下來,穩(wěn)定在某個位置;有時,這種穩(wěn)定的模式會改變位置并在木板上移動。在極少數(shù)情況下,它們甚至可能完全消失。這是只能使用4x4x4 LED的限制,但無論如何都是一個很好的學(xué)習(xí)練習(xí)。

解釋代碼:

您可能不熟悉 memcpy()函數(shù)。我用它來保存以前的游戲狀態(tài),因?yàn)閿?shù)組不能像普通變量那樣相互分配-您必須在內(nèi)存空間中進(jìn)行實(shí)際復(fù)制(在這種情況下為64位)。

howManyNeighbours()函數(shù)應(yīng)該可以自我解釋,但如果情況并非如此,則此方法采用單個坐標(biāo),并遍歷每個可能的鄰居(與我們先前在蛇中使用的方向相同的數(shù)組)應(yīng)用程序),以檢查它們是否有效。然后,它會檢查那些相鄰的LED在先前的游戲狀態(tài)中是否“點(diǎn)亮”,并計(jì)數(shù)有多少。

該“生活游戲”應(yīng)用的主要功能是 progressGame(),這會將自動機(jī)規(guī)則應(yīng)用于當(dāng)前游戲狀態(tài)。

改進(jìn):到目前為止,我已經(jīng)花了太長時間了,但是您可能想要嘗試添加一張支票,該支票在經(jīng)過5代左右的相同模式后會自動將板復(fù)位。那請告訴我!我也建議您嘗試將POV方法添加到蛇游戲中,以期有可能使更長的蛇成為可能。

今天就是我了。我可能稍后會再訪問一些Arduino LED多維數(shù)據(jù)集應(yīng)用程序,但希望您能夠修改我的代碼并創(chuàng)建自己的游戲規(guī)則:讓我們知道您在注釋中提出了什么,以便我們都可以下載您的創(chuàng)作!與以往一樣,我將在這里回答您的問題并捍衛(wèi)我的可怕編碼能力。

責(zé)任編輯:wv

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

    關(guān)注

    242

    文章

    23411

    瀏覽量

    664224
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6478

    瀏覽量

    188139
  • 立方體
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    6434
收藏 人收藏

    評論

    相關(guān)推薦

    AURIX TC4x虛擬化技術(shù)詳解

    AURIX TC4x CDSP介紹及應(yīng)用 AURIX TC4x 硬件支持包助您實(shí)現(xiàn)初期開發(fā),加速開發(fā)進(jìn)程 AURIX TC4x 如何使用MathWorks Matlab工具箱自動生成PPU目標(biāo)代碼 AURIX TC
    的頭像 發(fā)表于 02-07 11:47 ?176次閱讀
    AURIX TC<b class='flag-5'>4x</b>虛擬化技術(shù)詳解

    ADS42B4x EVM用戶指南

    電子發(fā)燒友網(wǎng)站提供《ADS42B4x EVM用戶指南.pdf》資料免費(fèi)下載
    發(fā)表于 12-10 14:08 ?0次下載
    ADS42B<b class='flag-5'>4x</b> EVM用戶指南

    ADS58H4x EVM用戶指南

    電子發(fā)燒友網(wǎng)站提供《ADS58H4x EVM用戶指南.pdf》資料免費(fèi)下載
    發(fā)表于 12-10 13:51 ?0次下載
    ADS58H<b class='flag-5'>4x</b> EVM用戶指南

    PCM512x/4x EVM用戶指南

    電子發(fā)燒友網(wǎng)站提供《PCM512x/4x EVM用戶指南.pdf》資料免費(fèi)下載
    發(fā)表于 12-10 13:48 ?0次下載
    PCM512<b class='flag-5'>x</b>/<b class='flag-5'>4x</b> EVM用戶指南

    TCAN4x5x評估模塊用戶指南

    電子發(fā)燒友網(wǎng)站提供《TCAN4x5x評估模塊用戶指南.pdf》資料免費(fèi)下載
    發(fā)表于 11-25 15:12 ?0次下載
    TCAN<b class='flag-5'>4x5x</b>評估模塊用戶指南

    CC13x4、CC26x4 Simplelink? 無線MCU技術(shù)參考手冊

    電子發(fā)燒友網(wǎng)站提供《CC13x4、CC26x4 Simplelink? 無線MCU技術(shù)參考手冊.pdf》資料免費(fèi)下載
    發(fā)表于 11-14 15:48 ?0次下載
    CC13<b class='flag-5'>x4</b>、CC26<b class='flag-5'>x4</b> Simplelink? 無線MCU技術(shù)參考手冊

    TLV320AIC32x4電源時序

    電子發(fā)燒友網(wǎng)站提供《TLV320AIC32x4電源時序.pdf》資料免費(fèi)下載
    發(fā)表于 10-18 10:15 ?0次下載
    TLV320AIC32<b class='flag-5'>x4</b>電源時序

    TLV320AIC32x4睡眠和待機(jī)模式

    電子發(fā)燒友網(wǎng)站提供《TLV320AIC32x4睡眠和待機(jī)模式.pdf》資料免費(fèi)下載
    發(fā)表于 10-18 09:43 ?0次下載
    TLV320AIC32<b class='flag-5'>x4</b>睡眠和待機(jī)模式

    為TM4C12x MCU開發(fā)LCD應(yīng)用

    電子發(fā)燒友網(wǎng)站提供《為TM4C12x MCU開發(fā)LCD應(yīng)用.pdf》資料免費(fèi)下載
    發(fā)表于 09-19 10:40 ?0次下載
    為TM<b class='flag-5'>4C12x</b> MCU開發(fā)LCD應(yīng)用

    TDA4x(LDC) 畸變矯正應(yīng)用說明

    電子發(fā)燒友網(wǎng)站提供《TDA4x(LDC) 畸變矯正應(yīng)用說明.pdf》資料免費(fèi)下載
    發(fā)表于 09-10 10:58 ?0次下載
    TDA<b class='flag-5'>4x</b>(LDC) 畸變矯正應(yīng)用說明

    Jacinto7 AM6x/DRA8x/TDA4x原理圖檢查清單

    電子發(fā)燒友網(wǎng)站提供《Jacinto7 AM6x/DRA8x/TDA4x原理圖檢查清單.pdf》資料免費(fèi)下載
    發(fā)表于 09-06 11:19 ?0次下載
    Jacinto7 AM6<b class='flag-5'>x</b>/DRA8<b class='flag-5'>x</b>/TDA<b class='flag-5'>4x</b>原理圖檢查清單

    雙TDA4x系統(tǒng)解決方案

    電子發(fā)燒友網(wǎng)站提供《雙TDA4x系統(tǒng)解決方案.pdf》資料免費(fèi)下載
    發(fā)表于 09-03 10:13 ?0次下載
    雙TDA<b class='flag-5'>4x</b>系統(tǒng)解決方案

    創(chuàng)意挑戰(zhàn)丨從0自制“自平衡立方體”(分享開源資料)

    一個非常有意思的項(xiàng)目,利用反作用力輪保持平衡的立方體! 項(xiàng)目概覽 這個立方體能夠在頂點(diǎn)處保持平衡,同時還能以受控方式繞軸旋轉(zhuǎn)。這一功能是通過巧妙地控制和一組三個反作用力輪來實(shí)現(xiàn)的。這個裝置
    發(fā)表于 06-19 14:00

    16通道、 2/4/8時分多路復(fù)用局部調(diào)光背光LED驅(qū)動器TLC696x2/4/8數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《16通道、 2/4/8時分多路復(fù)用局部調(diào)光背光LED驅(qū)動器TLC696x2/4/8數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 03-25 09:08 ?0次下載
    16通道、 2/<b class='flag-5'>4</b>/8時分多路復(fù)用局部調(diào)光背光<b class='flag-5'>LED</b>驅(qū)動器TLC696<b class='flag-5'>x</b>2/<b class='flag-5'>4</b>/8數(shù)據(jù)表

    可以使用CLI命令同時使用多個miniprog4(例如,3~4)對多個CCG7x設(shè)備進(jìn)行編程嗎?

    我有一個關(guān)于使用帶有 miniprog4 的 CLI 命令編程 CCG7x 的問題。 我們可以使用 CLI 命令同時使用多個 miniprog4(例如,3~
    發(fā)表于 02-22 06:30
    主站蜘蛛池模板: 中文字幕成人乱码在线电影 | 亚洲一级毛片在线观播放 | 午夜视频在线观看国产 | 久久精品94精品久久精品 | 国产嫩草影院在线观看 | 国产精品美女视频 | 免费午夜视频在线观看 | 最好看最新的中文字幕1 | 久青草国产手机在线观 | 黄色小视频免费看 | 男人j桶女人j免费视频 | 国产国产人免费人成免费视频 | 99热都是精品 | 一本大道加勒比久久综合 | 亚洲一区三区 | 免费在线色 | 亚洲视频1 | 天堂资源在线播放 | www一级毛片| 高清精品女厕在线观看 | 国产伦精品一区二区三区女 | 天天舔天天操天天干 | 两性色午夜视频免费播放 | www.av在线免费观看 | 98色花堂永久地址国产精品 | 欧美日韩a | 国产久爱青草视频在线观看 | 美女露出扒开尿口让男人桶 | 欧美在线观看一区二区三 | 男人的网址| 在线观看免费视频网站色 | 国内精品久久久久久影院老狼 | 日韩免费视频一区二区 | 韩国一区二区三区视频 | 色综合天天综合网国产国产人 | 美女网站一区二区三区 | 视频h在线 | 亚洲a网 | 一区二区三区四区在线观看视频 | 国产三级日本三级在线播放 | 国产精品午夜国产小视频 |