资料介绍
描述
什么?
雪花球和熔岩灯有一个共同点:它们看起来非常简单和漂亮。而且你不能得到足够的他们两个!雪球只不过是一个包含微型化场景的透明球体。球体充满了水,其中包含白色的小薄片。你可以花几个小时一遍又一遍地摇晃地球,看着雪花慢慢地沉到地上。非常平静和冥想!
在北半球,圣诞节是在冬季,因此传统上与降雪有关。这就是为什么雪球中经常出现圣诞场景的原因。
为什么?
雪花球很漂亮,它们就像熔岩灯一样令人愉悦。自己制作雪球可能很棘手,因为您需要合适的液体和合适的薄片。而且一定要封好,不然你的客厅会泛滥成灾。以及如何制作将放置在球体中的防水场景?如果您不想玩水和玻璃碗,那么您必须以数字方式构建它。
如何?
现代时代使现代解决方案成为可能。因此,迈向数字雪球不再那么困难了。您只需要一个显示器、一个电池、一个加速度计和一个微处理器。
M5Stack Core 模块为小巧而方便的数字雪花球提供了完美的基础。所有必要的部件都已经很好地内置在一个外壳中。
集成的加速度传感器可用于确定设备的方向。这里不需要高精度。雪只应始终根据重力方向向下落。因此不需要传感器融合或温度校正,只需要 X 和 Y 方向的加速度值。
一个简单的物理雪花模型。
幸运的是,自由飘落的雪花的物理模拟非常简单。
雪花的质量小,表面积大。在真空中,它们下落的速度与 50 公斤的哑铃一样快,但在大气中,空气阻力会减慢它们的速度。它们在短暂的加速阶段后达到最大速度,然后以恒定速度落到地面。这不仅美观,而且易于模拟。
在降雪模拟的每个时间间隔内,每片雪花只需要在重力方向上移动一个常数值即可。而已。
但如果你完全那样做,它看起来根本不现实。雪花之所以如此迷人,是因为它们缓慢而难以预测的下落方式。由于它们的重量很轻,它们不仅会缓慢地落到地上,而且它们的运动方向也会随着微小的空气运动而改变。模拟这些空气运动及其对每片雪花的影响会使软件变得非常复杂。
一个简单的解决方案是使用添加到下降运动的随机值。此外,每个雪花都有自己的速度因子,因此并非所有雪花都以相同的速度下落。自然界也是如此,因为雪花的形状和大小不同,下落的速度也不同。
// 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);
内容。
我为自己编写了一个 R 脚本,它将图像转换为uint16_t RGB565 图像数组。R 是用于统计数据分析的强大工具,但它也可以用于许多其他事情。例如,用于图像处理。R 的好处之一是,它也可以从命令行调用。
要使用该脚本,您需要在计算机上安装R 环境。然后,您可以使用 R GUI 运行脚本,或从命令行调用它。
在 GUI 中,只需加载脚本,然后突出显示所有文本并运行它。将出现一个打开的对话框,您可以选择图像。然后头文件会自动保存在同一目录中。
注意:在第一次调用脚本后,R 必须安装一些必需的库。这需要一些时间,但只需要一次。
注意:有时 .BMP 图像会被错误读取。最好使用 .PNG 或 .JPG 图片。
从命令行调用脚本需要一些准备工作,但工作起来又快又好:
R 有一个程序可以从命令行调用脚本。在 Windows 下,该程序称为“Rscript.exe”,位于 R 的 bin 目录中:
复制路径,以便您可以绝对寻址程序。这可能看起来像这样,例如:
"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 文件中的路径。现在您只需双击 .bat 文件。然后会打开一个控制台窗口,在其中执行 R 脚本。将出现一个打开的对话框,您可以在其中选择图像。然后,该脚本会创建包含 uint16_t 数组的 .h 文件和包含已转换图像的 PDF 文件。
不要忘记在代码中调整图像的名称。在代码中,我使用了以下名称:
const uint16_t background_image[76800] = { ... };
如何显示。
模拟应平滑显示且无闪烁。为了实现这一点,使用了具有 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的工厂监控系统
- M5Stack智能植物浇水开源项目
- Bareboat Necessities的M5Stack坚韧Arduino船展示
- 基于M5Stack的PID控制学习平台
- 基于M5Stack的抗COVID安全门
- 带M5Stack的音频频谱显示
- 基于M5Stack的圣诞老人照相馆 0次下载
- 配备M5Stack的智能工厂
- 使用M5StickC Plus进行M5Stack圣诞节的圣诞老人追踪器
- 用M5Stack设备装饰圣诞树
- 用于M5Stack的Arduino大型国际象棋
- 带有M5Stack的电报控制无人机
- M5Stack Core2外部传感器开源
- 使用myCobot280 M5Stack控制器
- LED圣诞灯电路图 LED圣诞灯的工作原理和特点 487次阅读
- STM32WB如何一次性烧写FUS+STACK+APP? 1770次阅读
- 如何使用IC555和双触发器IC构建圣诞树照明电路图 819次阅读
- 一款基于树莓派CM4的小型Arm Linux迷你电脑 2227次阅读
- 什么是stack? 2128次阅读
- M5Stack IOT智能门禁系统–基础篇(Blockly+MQTT) 3026次阅读
- 使用Lumerical STACK求解器优化OLED 854次阅读
- 利用M5Stack设计一个BLE保温杯 2874次阅读
- 如何使用M5Stick和M5Stamp触发蓝牙操作BLE通信 3418次阅读
- 基于NE555制作一颗圣诞树 2619次阅读
- 开源过程中的5件注意事项 3548次阅读
- 源创通信BPI-M1+ 开源硬件开发板介绍 2648次阅读
- 源创通信 BPI-M64 四核心64位开源单板计算机介绍 2619次阅读
- 简易LED圣诞树制作教程 6377次阅读
- 视觉享受!用Raspberry Pi实现圣诞树灯光秀 8127次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多