0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样对Arduino 4x4x4 LED立方体编程

454398 来源:网络整理 作者:网络整理 2019-12-02 16:40 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

上周,我构建了一个LED立方体– 64个LED ,您可以对其进行编程以进行梦幻般的未来派灯光秀,而且我希望您也这样做,因为它激励您并扩展Arduino技能的绝佳项目。我为您提供了一些基本的应用程序,以帮助您进行思考,但是今天,我将介绍为多维数据集制作的更多软件以及代码说明。这样做的目的不仅是为您提供更多运行的灯光秀,而且是为了了解对多维数据集进行编程的一些限制,并在此过程中学习一些新的编程概念。

这是一些相当高级的编码。在自定义提供的代码之前,您确实需要阅读我以前的所有 Arduino教程和我们的初学者Arduino指南。

应用程序1:迷你蛇

我不想运行一套像蛇一样的图案序列,而是想对一条蛇进行编程,这是一种人工的蛇,它可以自己做出随机选择,而且完全不可预测。仅限于2个细分,我将在后面解释,您可以在下面查看演示。在此处下载完整的代码。

处理3D空间时,单个点需要3个坐标: X, Y 和 Z 。

但是,在我们的立方体中,X和Z平面由LED引脚表示,而Y直接由LED引脚表示。映射到阴极平面。为了方便使用这些坐标并弄清楚立方体周围的运动,我创建了一个新的数据类型(使用结构)来表示立方体上的单个点,我称之为“ xyz”。它仅由两个整数组成:“ xz”和“ y”。通过这种结构,我还可以在下面的特殊(xz,y)坐标系中表示一个方向:

Y运动 (向上,向下):(xz,y + 1),(xz,y-1)

Z 运动 (向前,向后) :(xz-1,y),(xz + 1,y)

X运动 (左,右):(xz + 4,y),( xz-4,y)

例如,要将LED沿一个位置向左移动(0,0),我们应用(xz + 4,y) 并以(0,4)结尾。

对移动有一定限制-即Y坐标只能是可能的 0到3 (0是最底层,3是最上层),而XZ坐标只能是 0到15 。在Z轴运动上设置了另一个限制,以防止从立方体的后部到前面的“跳跃”,反之亦然。在这种情况下,我们使用模数函数测试4的倍数,并拒绝该移动尝试。这是逻辑,用 valid()函数表示,如果建议的方向是可以接受的移动,则返回true,否则返回false。我添加了另一个函数来检查反向 –也就是说,如果蛇正朝一个方向前进,即使它是移动到–和 move()《的有效位置,我们也不希望它向后退。/strong》函数,该函数将获取坐标,方向并返回新坐标。

XYZ 数据类型, valid(), move()和 inverse()函数都可以在下载的 xyz.h 文件中找到。如果您想知道为什么将其放入一个单独的文件而不是主程序文件中,那是由于一些复杂的Arduino编译器规则阻止了返回自定义数据类型;它们必须放置在自己的文件中,然后在主文件的开头导入。

在主运行时文件中,一个方向数组存储了蛇可能做出的所有可能动作;我们可以简单地选择一个随机数组成员来获得新的方向。还创建了变量来存储当前位置(现在),先前的方向和先前的位置。其余代码对您来说应该是显而易见的。只需f o r个循环,然后打开和关闭LED。在主循环中,我们检查建议的方向是否有效,如果是,则按照这种方式进行。如果没有,我们会选择一个新的方向。

在主循环中唯一要指出的是一些检查,以纠正我发现的涉及多路复用的错误:如果新位置在相同的阴极平面或相同的阴极平面上阳极引脚,关闭前一个LED会导致两个LED都熄灭。也是在这一点上,我意识到在我当前的实现中,超越2段蛇形是不可能的:尝试以角落布置方式点亮3个LED。您不能这样做,因为激活2层和2个LED引脚后,将打开4个LED,而不是3个。这是我们有限的多维数据集设计固有的问题,但不必担心:我们只需要使用视觉持久性以重写绘图方法。

视觉持久性意味着当光线顺序到达我们的眼睛时(比我们能够处理的快),它看起来像是一幅图像。在我们的案例中,与其同时绘制所有四个图层,不如绘制第一层,将其停用,绘制第二层并使其停用:这比我们知道发生任何变化的速度还快。这就是消息编写者工作的原理,就像这样:

使用视觉持久性的新绘制方法

首先,是一个新的绘制例程。我创建了一个 4 x 16二维数组(正确或错误)以表示LED立方体状态的文字。绘制例程将通过简单地对其进行迭代并将每一层刷新到立方体一小会儿来实现视觉的持久性。它将继续以当前状态绘制自己,直到刷新时间过去为止,此时我们将控制权传递回main loop()。我已将代码的这一部分保存在此LED_cube_POV文件中,因此,如果您只想开始编写自己的游戏,然后随时使用它作为基础。

应用2:Game of生活

现在,让我们将其开发为Conway的《人生游戏》的基本版本。对于不熟悉(尝试使用Google搜索来查找令人敬畏的复活节彩蛋动画)的人来说,生命游戏是细胞自动机的一个示例,它创造了一种令人着迷的给出的行为只有几个简单的规则。

例如,这是蚂蚁在智力和蜂巢的思想下如何运动的方式,尽管生物学事实表明它们实际上遵循非常基本的荷尔蒙规则。这是完整的下载代码:按下 reset 按钮重新启动。如果发现自己反复出现相同的模式,请尝试按住rest按钮更长的时间。

此处是生命博弈的规则:

任何少于两个活邻居的活细胞都会死亡,好像是由人口不足造成的。

有两个活邻居的活细胞或三个活着的邻居继续生活到下一代。

具有三个以上活着的邻居的任何活细胞都会死去,就像人满为患一样。

任何有三个活着的邻居的死细胞都会变成

运行代码。您会注意到,在5到10个“世代”内,自动机可能已经停下来,稳定在某个位置;有时,这种稳定的模式会改变位置并在木板上移动。在极少数情况下,它们甚至可能完全消失。这是只能使用4x4x4 LED的限制,但无论如何都是一个很好的学习练习。

解释代码:

您可能不熟悉 memcpy()函数。我用它来保存以前的游戏状态,因为数组不能像普通变量那样相互分配-您必须在内存空间中进行实际复制(在这种情况下为64位)。

howManyNeighbours()函数应该可以自我解释,但如果情况并非如此,则此方法采用单个坐标,并遍历每个可能的邻居(与我们先前在蛇中使用的方向相同的数组)应用程序),以检查它们是否有效。然后,它会检查那些相邻的LED在先前的游戏状态中是否“点亮”,并计数有多少。

该“生活游戏”应用的主要功能是 progressGame(),这会将自动机规则应用于当前游戏状态。

改进:到目前为止,我已经花了太长时间了,但是您可能想要尝试添加一张支票,该支票在经过5代左右的相同模式后会自动将板复位。那请告诉我!我也建议您尝试将POV方法添加到蛇游戏中,以期有可能使更长的蛇成为可能。

今天就是我了。我可能稍后会再访问一些Arduino LED多维数据集应用程序,但希望您能够修改我的代码并创建自己的游戏规则:让我们知道您在注释中提出了什么,以便我们都可以下载您的创作!与以往一样,我将在这里回答您的问题并捍卫我的可怕编码能力。

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    243

    文章

    24434

    浏览量

    687442
  • Arduino
    +关注

    关注

    190

    文章

    6515

    浏览量

    195969
  • 立方体
    +关注

    关注

    0

    文章

    6

    浏览量

    6541
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于VL53L4CX的飞行时间传感器扩展板:X-NUCLEO-53L4A2技术解析

    STMicroelectronics X-NUCLEO-53L4A2扩展板设计用于配备Arduino R3连接器的任何STM32 Nucleo开发板。X-NUCLEO-53L4A2扩展板包括完整的评估套件,可让用户使用具有扩展距
    的头像 发表于 10-30 16:10 323次阅读
    基于VL53L<b class='flag-5'>4</b>CX的飞行时间传感器扩展板:<b class='flag-5'>X-NUCLEO-53L4</b>A2技术解析

    ‌TPS65296 完整 LPDDR4/LPDDR4X 内存电源解决方案技术文档总结

    TPS65296器件以最低的总成本和最小的空间为 LPDDR4/LPDDR4X 存储器系统提供完整的电源解决方案。它符合 LPDDR4/LPDDR4X 上电和断电序列要求的 JEDEC
    的头像 发表于 09-09 14:11 946次阅读
    ‌TPS65296 完整 LPDDR<b class='flag-5'>4</b>/LPDDR<b class='flag-5'>4X</b> 内存电源解决方案技术文档总结

    TLC696x2/4/8系列16通道智能LED背光驱动芯片技术解析

    Texas Instruments TLC696x2/4/8TLC696x2/4/8-Q1背光驱动器是与TLC696x0/TLC696
    的头像 发表于 08-21 14:54 770次阅读
    TLC696<b class='flag-5'>x</b>2/<b class='flag-5'>4</b>/8系列16通道智能<b class='flag-5'>LED</b>背光驱动芯片技术解析

    0.25 - 2.15 GHz 4x2 开关矩阵,带音调/电压解码器 skyworksinc

    电子发烧友网为你提供()0.25 - 2.15 GHz 4x2 开关矩阵,带音调/电压解码器相关产品参数、数据手册,更有0.25 - 2.15 GHz 4x2 开关矩阵,带音调/电压解码器的引脚图
    发表于 08-07 18:35
    0.25 - 2.15 GHz <b class='flag-5'>4x</b>2 开关矩阵,带音调/电压解码器 skyworksinc

    4 x 2 开关矩阵,带音调/电压解码器 250 MHz–2.15 GHz skyworksinc

    电子发烧友网为你提供()4 x 2 开关矩阵,带音调/电压解码器 250 MHz–2.15 GHz相关产品参数、数据手册,更有4 x 2 开关矩阵,带音调/电压解码器 250 MHz–
    发表于 08-06 18:30
    <b class='flag-5'>4</b> <b class='flag-5'>x</b> 2 开关矩阵,带音调/电压解码器 250 MHz–2.15 GHz skyworksinc

    3Dfindit 提供的数字立方体模型为研究项目的可视化提供了支持

    作为学习项目的一部分,罗伊特林根教育大学的学生们在比辛根集中营纪念地的博物馆中使用 3Dfindit 动画立方体模型进行了学习。作为历史教学研讨会的一部分,学生们研究了巴登-符腾堡州比辛根在
    发表于 08-01 14:36

    MT7615 802.11ac Wi-Fi4x4 双频单芯片资料

    电子发烧友网站提供《MT7615 802.11ac Wi-Fi4x4 双频单芯片资料.pdf》资料免费下载
    发表于 06-08 10:06 4次下载

    如何使用多个miniprog4对多个CCG7x设备进行编程

    我有一个关于使用带有 miniprog4 的 CLI 命令编程 CCG7x 的问题。 我们可以使用 CLI 命令同时使用多个 miniprog4(例如,3~
    发表于 05-26 06:28

    HMC370LP4/370LP4E x4有源倍频器SMT技术手册

    HMC370LP4(E)是一款利用InGaP GaAs HBT技术制造而成的有源微型x4倍频器,采用4x4 mm无铅表面贴装封装。 在5V电源电压下,功率输出为0 dBm(典型值)且相对输入功率
    的头像 发表于 04-17 11:30 668次阅读
    HMC370LP<b class='flag-5'>4</b>/370LP<b class='flag-5'>4</b>E <b class='flag-5'>x4</b>有源倍频器SMT技术手册

    Sky5® LB/LMB/MB/HB 和 4x4 MIMO 分集接收模块 skyworksinc

    电子发烧友网为你提供()Sky5® LB/LMB/MB/HB 和 4x4 MIMO 分集接收模块相关产品参数、数据手册,更有Sky5® LB/LMB/MB/HB 和 4x4 MIMO 分集接收模块
    发表于 04-11 15:21
    Sky5® LB/LMB/MB/HB 和 <b class='flag-5'>4x4</b> MIMO 分集接收模块 skyworksinc

    HMC596 CMOS 4x2开关矩阵,采用SMT封装技术手册

    HMC596LP4(E)是一款低成本4x2开关矩阵产品,采用无引脚QFN 4x4 mm表贴封装,可用于卫星/DBS、LNB和200 MHz至3000 MHz的多路开关。 开关上集成由正电压控制的
    的头像 发表于 03-07 16:50 1393次阅读
    HMC596 CMOS <b class='flag-5'>4x</b>2开关矩阵,采用SMT封装技术手册

    AMS-MTX_4x4:多功能视频画面控制器,重塑视听体验的新篇章

    的AMS-MTX_4x4多功能视频画面控制器,凭借其卓越的性能和多样化的功能,成为了市场上的明星产品,引领着视听行业的新潮流。 AMS-MTX_4x4是一款集视频采集、视频矩阵、画面分割、画面拼接四大功能于一的多功能视频画面控
    的头像 发表于 12-26 10:50 723次阅读
    AMS-MTX_<b class='flag-5'>4x4</b>:多功能视频画面控制器,重塑视听体验的新篇章

    ADS42B4x EVM用户指南

    电子发烧友网站提供《ADS42B4x EVM用户指南.pdf》资料免费下载
    发表于 12-10 14:08 0次下载
    ADS42B<b class='flag-5'>4x</b> EVM用户指南

    ADS58H4x EVM用户指南

    电子发烧友网站提供《ADS58H4x EVM用户指南.pdf》资料免费下载
    发表于 12-10 13:51 0次下载
    ADS58H<b class='flag-5'>4x</b> EVM用户指南

    PCM512x/4x EVM用户指南

    电子发烧友网站提供《PCM512x/4x EVM用户指南.pdf》资料免费下载
    发表于 12-10 13:48 1次下载
    PCM512<b class='flag-5'>x</b>/<b class='flag-5'>4x</b> EVM用户指南