Game of Lights - 使用 WS2812 矩阵的 Life 游戏

创意展示、DIY分享、经验交流
回复
头像
shaoziyang
帖子: 3917
注册时间: 2019年 10月 21日 13:48

Game of Lights - 使用 WS2812 矩阵的 Life 游戏

#1

帖子 shaoziyang »

来自:https://www.hackster.io/josh-holder/gam ... hts-1d74af

显示随着声音变化,可以随机播放Conway的《生命游戏》,并随着音乐的节奏和时间变化。

图片

 
概述:
基本操作原理如下:
  • PocketBeagle 初始化《生命游戏》的随机种子
  • 声音检测器从环境中读取和处理声音数据,并确定环境中播放的音乐中“拍子”的计时。
  • 在每次跳动时,微处理器都会计算游戏的下一次迭代,并将此数据发送到LED矩阵
  • LED矩阵相应点亮
  • 这一直持续到整个游戏结束,在这种情况下,将产生《生命游戏》的新种子。
硬件
该项目的硬件元素相对简单,易于使用。主要硬件元素如下:
  • NeoPixel LED灯带(LED矩阵形式)
  • Sparkfun声音探测器
  • PocketBeagle 
首先,应该处理LED矩阵,因为这被证明是该项目最具挑战性的方面。LED矩阵的选择至关重要,这将影响项目的许多方面。最初,我尝试使用Adafruit(https://www.adafruit.com/product/1484 )出售的更传统的32x32 LED矩阵。但是,由于缺少用于该项目的专用Linux库,而且文档不多,因此使用矩阵非常困难。相反,Adafruit NeoPixel LED灯带易于使用并提供相同的功能,尽管形式较不方便。(阅读以下链接以获取有关NeoPixel接线,示例代码以及提示和技巧的详细信息:https ://learn.adafruit.com/adafruit-neopixel-uberguide )需要完成一些物理工作才能将LED灯带转换为LED的“矩阵”。首先,将NeoPixel字符串分成所需矩阵大小的条带,确保使用锋利的剪刀并沿青铜或银焊垫切割(如果需要方形矩阵,则切成与每条LED一样多的条带)

图片
12条LED NeoPixel灯带(该项目中使用了15条LED灯带)


接下来,切成适当大小的一块木头(对于15x15的矩阵,将其切成10英寸乘10英寸),然后将条带以矩阵形式粘贴到木头上,如下所示。请注意,为了在矩阵上获得均匀的长宽比,必须在放置在板上的每个LED条之间留出间隙。同样,指向数据流的箭头必须在连续的条上指向相反的方向,以便在焊接电路板时数据以正确的方式流动。

图片
木板,以矩阵形式排列的LED灯条合照


需要仔细的焊接工作以保持基体的连续性。
图片
条对条焊料连接的特写


声音检测器和PocketBeagle很好用。但是,您可能会发现有必要根据以下文档在板上放置R17来调整声音传感器的灵敏度:(https://learn.sparkfun.com/tutorials/sound-detector-hookup-guide?_ga = 2.135478513.1535210145.1574136336-1929768982.1567124256 )电子/接线:下面是系统的Fritzing图:图片
PocketBeagle通过P1_19直接连接到声音检测器,并通过P1_8直接连接到NeoPixel。 电源连接:


图片
按照NeoPixel指南的建议,系统中添加了一个100微法的电容器,以防止电涌对LED灯带产生负面影响。此外,我们在电源接地和PocketBeagle接地之间增加了47欧姆的电阻,以减少声音检测器的噪声。


LED数据信号处理:
图片
同样,遵循NeoPixel指南提供的建议:在数据输入之间添加一个470欧姆电阻,以保护LED免受电压尖峰的影响。需要CJMCU单元将PocketBeagle的GPIO输出从3.3V转换为NeoPixel板条所需的5V。


 声音检测器模拟输出处理:
图片
声音检测器以5V输出数据,而PocketBeagle AIN端口只能处理1.8V。因此,我们必须构造一个分压器以将声音检测器的输出电压降低到必要的水平。 

回复

  • 随机主题
    回复总数
    阅读次数
    最新文章