資料介紹
描述
什么?
雪花球和熔巖燈有一個共同點:它們看起來非常簡單和漂亮。而且你不能得到足夠的他們兩個!雪球只不過是一個包含微型化場景的透明球體。球體充滿了水,其中包含白色的小薄片。你可以花幾個小時一遍又一遍地?fù)u晃地球,看著雪花慢慢地沉到地上。非常平靜和冥想!
在北半球,圣誕節(jié)是在冬季,因此傳統(tǒng)上與降雪有關(guān)。這就是為什么雪球中經(jīng)常出現(xiàn)圣誕場景的原因。
為什么?
雪花球很漂亮,它們就像熔巖燈一樣令人愉悅。自己制作雪球可能很棘手,因為您需要合適的液體和合適的薄片。而且一定要封好,不然你的客廳會泛濫成災(zāi)。以及如何制作將放置在球體中的防水場景?如果您不想玩水和玻璃碗,那么您必須以數(shù)字方式構(gòu)建它。
如何?
現(xiàn)代時代使現(xiàn)代解決方案成為可能。因此,邁向數(shù)字雪球不再那么困難了。您只需要一個顯示器、一個電池、一個加速度計和一個微處理器。
M5Stack Core 模塊為小巧而方便的數(shù)字雪花球提供了完美的基礎(chǔ)。所有必要的部件都已經(jīng)很好地內(nèi)置在一個外殼中。
集成的加速度傳感器可用于確定設(shè)備的方向。這里不需要高精度。雪只應(yīng)始終根據(jù)重力方向向下落。因此不需要傳感器融合或溫度校正,只需要 X 和 Y 方向的加速度值。

一個簡單的物理雪花模型。
幸運的是,自由飄落的雪花的物理模擬非常簡單。
雪花的質(zhì)量小,表面積大。在真空中,它們下落的速度與 50 公斤的啞鈴一樣快,但在大氣中,空氣阻力會減慢它們的速度。它們在短暫的加速階段后達(dá)到最大速度,然后以恒定速度落到地面。這不僅美觀,而且易于模擬。
在降雪模擬的每個時間間隔內(nèi),每片雪花只需要在重力方向上移動一個常數(shù)值即可。而已。
但如果你完全那樣做,它看起來根本不現(xiàn)實。雪花之所以如此迷人,是因為它們緩慢而難以預(yù)測的下落方式。由于它們的重量很輕,它們不僅會緩慢地落到地上,而且它們的運動方向也會隨著微小的空氣運動而改變。模擬這些空氣運動及其對每片雪花的影響會使軟件變得非常復(fù)雜。
一個簡單的解決方案是使用添加到下降運動的隨機值。此外,每個雪花都有自己的速度因子,因此并非所有雪花都以相同的速度下落。自然界也是如此,因為雪花的形狀和大小不同,下落的速度也不同。
// get the acceleration data
// values are in g (9.81 m/s2)
M5.IMU.getAccelData(&accX,&accY,&accZ);
// use gravity vector for movement
float dx = (accX*-10.0) + (round(accX)*random(5)) + (round(accY)*(random(10)-5));
float dy = (accY*10.0) + (round(accX)*random(5)) + (round(accY)*(random(10)-5));
flakeArray[i].x = flakeArray[i].x + round(dx*flakeArray[i].speed);
flakeArray[i].y = flakeArray[i].y + round(dy*flakeArray[i].speed);
// push the snowflake to the sprite on top of the background image
img.drawXBitmap((int)(flakeArray[i].x-flakeWidth),
(int)(flakeArray[i].y-flakeHeight),
snowflake, flakeWidth, flakeHeight, TFT_WHITE);

內(nèi)容。
?
我為自己編寫了一個 R 腳本,它將圖像轉(zhuǎn)換為uint16_t RGB565 圖像數(shù)組。R 是用于統(tǒng)計數(shù)據(jù)分析的強大工具,但它也可以用于許多其他事情。例如,用于圖像處理。R 的好處之一是,它也可以從命令行調(diào)用。
要使用該腳本,您需要在計算機上安裝R 環(huán)境。然后,您可以使用 R GUI 運行腳本,或從命令行調(diào)用它。
在 GUI 中,只需加載腳本,然后突出顯示所有文本并運行它。將出現(xiàn)一個打開的對話框,您可以選擇圖像。然后頭文件會自動保存在同一目錄中。
注意:在第一次調(diào)用腳本后,R 必須安裝一些必需的庫。這需要一些時間,但只需要一次。

注意:有時 .BMP 圖像會被錯誤讀取。最好使用 .PNG 或 .JPG 圖片。
從命令行調(diào)用腳本需要一些準(zhǔn)備工作,但工作起來又快又好:
R 有一個程序可以從命令行調(diào)用腳本。在 Windows 下,該程序稱為“Rscript.exe”,位于 R 的 bin 目錄中:

復(fù)制路徑,以便您可以絕對尋址程序。這可能看起來像這樣,例如:
"C:\Program Files\R\R-4.0.2\bin\Rscript.exe"
or
"C:\Users\Name\Documents\R\R-4.0.3\bin\x64\Rscript.exe"
使用 R 腳本更改目錄中的 .bat 文件中的路徑。現(xiàn)在您只需雙擊 .bat 文件。然后會打開一個控制臺窗口,在其中執(zhí)行 R 腳本。將出現(xiàn)一個打開的對話框,您可以在其中選擇圖像。然后,該腳本會創(chuàng)建包含 uint16_t 數(shù)組的 .h 文件和包含已轉(zhuǎn)換圖像的 PDF 文件。

不要忘記在代碼中調(diào)整圖像的名稱。在代碼中,我使用了以下名稱:
const uint16_t background_image[76800] = { ... };
如何顯示。
模擬應(yīng)平滑顯示且無閃爍。為了實現(xiàn)這一點,使用了具有 16 位顏色深度的全屏精靈。
// Sprite object "img" with pointer to "M5.Lcd" object
// the pointer is used by pushSprite() to push it onto the LCD
TFT_eSprite img = TFT_eSprite(&M5.Lcd);
16 位精靈很大。您將需要 M5Stack Fire 的 PSRAM 才能運行此代碼。并且您需要在編譯器中啟用 PSRAM。使用 PlatformIO,只需在platformio.ini文件中添加以下行:
build_flags =
-DBOARD_HAS_PSRAM
-mfix-esp32-psram-cache-issue
首先,將背景圖像繪制到精靈中,然后在其上繪制每片雪花。一旦完成,精靈就會被推送到屏幕上。這使得模擬運行良好且流暢,因此觀看起來很有趣。就像一個真正的雪球。
更新:
16 位精靈不是必需的。該代碼還適用于具有 8 位顏色深度的全屏精靈。這意味著該代碼也適用于 M5Stack-Gray。
反饋
我希望您喜歡“雪球”,并且此代碼可以證明對你們中的某些人有用。如果您有任何問題或意見,請隨時給我留言。
?
- StickC M5Stack LED閃爍
- 帶M5Stack的工廠監(jiān)控系統(tǒng)
- M5Stack智能植物澆水開源項目
- Bareboat Necessities的M5Stack堅韌Arduino船展示
- 基于M5Stack的PID控制學(xué)習(xí)平臺
- 基于M5Stack的抗COVID安全門
- 帶M5Stack的音頻頻譜顯示
- 基于M5Stack的圣誕老人照相館 0次下載
- 配備M5Stack的智能工廠
- 使用M5StickC Plus進(jìn)行M5Stack圣誕節(jié)的圣誕老人追蹤器
- 用M5Stack設(shè)備裝飾圣誕樹
- 用于M5Stack的Arduino大型國際象棋
- 帶有M5Stack的電報控制無人機
- M5Stack Core2外部傳感器開源
- 使用myCobot280 M5Stack控制器
- LED圣誕燈電路圖 LED圣誕燈的工作原理和特點 1810次閱讀
- STM32WB如何一次性燒寫FUS+STACK+APP? 1988次閱讀
- 如何使用IC555和雙觸發(fā)器IC構(gòu)建圣誕樹照明電路圖 1124次閱讀
- 一款基于樹莓派CM4的小型Arm Linux迷你電腦 2591次閱讀
- 什么是stack? 3000次閱讀
- M5Stack IOT智能門禁系統(tǒng)–基礎(chǔ)篇(Blockly+MQTT) 3613次閱讀
- 使用Lumerical STACK求解器優(yōu)化OLED 1048次閱讀
- 利用M5Stack設(shè)計一個BLE保溫杯 3072次閱讀
- 如何使用M5Stick和M5Stamp觸發(fā)藍(lán)牙操作BLE通信 3758次閱讀
- 基于NE555制作一顆圣誕樹 2954次閱讀
- 開源過程中的5件注意事項 3621次閱讀
- 源創(chuàng)通信BPI-M1+ 開源硬件開發(fā)板介紹 2811次閱讀
- 源創(chuàng)通信 BPI-M64 四核心64位開源單板計算機介紹 2773次閱讀
- 簡易LED圣誕樹制作教程 6804次閱讀
- 視覺享受!用Raspberry Pi實現(xiàn)圣誕樹燈光秀 8344次閱讀
下載排行
本周
- 1DD3118電路圖紙資料
- 0.08 MB | 1次下載 | 免費
- 2AD庫封裝庫安裝教程
- 0.49 MB | 1次下載 | 免費
- 3PC6206 300mA低功耗低壓差線性穩(wěn)壓器中文資料
- 1.12 MB | 1次下載 | 免費
- 4網(wǎng)絡(luò)安全從業(yè)者入門指南
- 2.91 MB | 1次下載 | 免費
- 5DS-CS3A P00-CN-V3
- 618.05 KB | 1次下載 | 免費
- 6海川SM5701規(guī)格書
- 1.48 MB | 次下載 | 免費
- 7H20PR5電磁爐IGBT功率管規(guī)格書
- 1.68 MB | 次下載 | 1 積分
- 8IP防護(hù)等級說明
- 0.08 MB | 次下載 | 免費
本月
- 1貼片三極管上的印字與真實名稱的對照表詳細(xì)說明
- 0.50 MB | 103次下載 | 1 積分
- 2涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 89次下載 | 1 積分
- 3錦銳科技CA51F2 SDK開發(fā)包
- 24.06 MB | 43次下載 | 1 積分
- 4錦銳CA51F005 SDK開發(fā)包
- 19.47 MB | 19次下載 | 1 積分
- 5PCB的EMC設(shè)計指南
- 2.47 MB | 16次下載 | 1 積分
- 6HC05藍(lán)牙原理圖加PCB
- 15.76 MB | 13次下載 | 1 積分
- 7802.11_Wireless_Networks
- 4.17 MB | 12次下載 | 免費
- 8蘋果iphone 11電路原理圖
- 4.98 MB | 6次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191390次下載 | 10 積分
- 5十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183342次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81588次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65989次下載 | 10 積分
評論