<p>向日葵的种子排列成相互交织的螺旋,遵循黄金比例。这种被称为<em>phyllotaxis</em>(叶序)的模式广泛存在于自然界中——如松果、多肉植物以及蕨类植物的展开。工程师 Jagi Natarajan 将这种几何结构转化为了一个物理实体:一个圆形的 LED 显示屏,其中的每个灯光都位于源自相同螺旋数学的 Voronoi 镶嵌单元中。</p>
<h2>从数学草图到物理实体</h2>

第 2 段描述了生成显示屏几何形状的算法:沿径向线放置点,并将每个连续的点旋转黄金比例角度(约 137.5 度)。此图显示这些点形成熟悉的双螺旋,随后被镶嵌成容纳 LED 的 Voronoi 单元。
<p>该图案始于一个简单的算法:沿径向线放置点,然后将每个连续的点旋转一个源自黄金比例的角度(约 137.5°)。当这些点被绘制出来时,它们会形成熟悉的双螺旋。对这些点进行 Voronoi 镶嵌后,会产生不规则的、类似种荚的单元——这是放置单个 LED 的自然分区。</p>

第 3 段解释了 Natarajan 如何将单元边界从 Processing 草图导出到 CadQuery,构建合并单元的完整体积,变薄墙壁,并在每个单元中心雕刻出一个用于 LED 的孔。此 FreeCAD 渲染显示了在拆分为象限进行 3D 打印之前的最终面板模型。
<p>Natarajan 使用 <a href="https://github.com/CadQuery/cadquery">CadQuery</a>(一个参数化 CAD 库)将单元边界从 Processing 草图导出到 Python 中。该脚本构建所有合并单元的完整体积,然后减去每个单元缩小的轮廓以留下薄壁,最后在每个单元中心雕刻出一个用于放置 LED 的孔。生成的几何体被分成四个象限,以适应消费级 3D 打印机的打印床。</p>

第 4 段描述了第一个硬件版本:背板上手工焊接的 89 个 NeoPixel LED,由带 I2S 麦克风的 STM32 板驱动。这张照片展示了容纳这些手工制作的万用板电路的初始外壳。
<p>第一个版本使用了 89 个 WS2812B (NeoPixel) LED,每个 LED 都手工焊接在 3D 打印的背板上。一个半透明的桑皮纸面板扩散光线,并螺栓固定在单元壁上。一个 STM32 "Black Pill" 板通过 SPI 驱动灯条,一个 INMP441 数字 I2S 麦克风将音频输入微控制器。利用 ARM 的 CMSIS-DSP 库,固件运行傅里叶变换,并带有自动增益控制,将频谱分成多个频段,为代码提供可用的频率解析能量数据。</p>
<h2>音频反应式图案</h2>
<p>有了频率数据,固件可以将声音映射到光影上,使其产生灵动的效果。Natarajan 描述了一种径向螺旋图案,其中每个 LED 的亮度是结合其极角和半径的正弦波,并受时间调制。低频脉冲中心,高频在边缘波动。第一首“赋予其生命”的曲目是 Jon Hopkins 的 "Neon Pattern Drum"。</p>

第 7 段描述了第二版本的设计:五个相同的 PCB 排列成环,以利用制造工厂的标准五块电路板最小起订量,每块板 18 个 LED,共 90 个。这张照片展示了这种五块板的径向排列。
<p>动画框架将每一帧视为片段着色器:查找表为每个 LED 在单位圆上提供归一化的 (x, y) 位置,而逐像素函数根据位置、时间和当前的音频频段计算颜色。这种设计后来成为了 SDK 动画 ABI 的基础。</p>
<h2>第二版本:PCB、五倍对称和 Web 游乐场</h2>
<p>在新年派对上展示该作品后,Natarajan 着手构建一个更坚固、更具可复制性的版本。新设计不再使用四个独特的 3D 打印象限,而是使用五个排列成环的相同 PCB——利用制造工厂的标准五块电路板最小起订量。每块 PCB 携带 18 个 LED(共 90 个),单元壁作为独立的 3D 打印零件扣合在电路板上。</p>
<p>由于 NeoPixel 的焊点位于封装下方,手工焊接仍然很困难。在 <a href="https://www.recurse.com/">Recurse Center</a> 的一次编程聚会上,一位拥有热风重工站的朋友帮助完成了组装。控制器从 STM32 迁移到 ESP32 以实现 Wi-Fi 连接,且固件使用 Rust 重写。</p>
<p>ESP32 现在提供一个本地网站。Recurse Center 网络上的访客可以用 Rust、C 或 AssemblyScript 编写草图,将其编译为 WebAssembly(限制为 32 KB 模块和每帧约 120k 燃料单位),并将其上传到几个草图插槽之一。电路板以 60 fps 运行选定的 WASM 模块,并对输出进行伽马校正和功率限制。SDK 暴露了三个能力标志:<code>NONE</code>(生成艺术)、<code>AUDIO</code>(六个频段加上瞬态/持续包络)和<code>INPUT</code>(旋钮和按钮),这些标志由草图在加载时声明。</p>
<h2>开放挑战</h2>
<p>Natarajan 指出了一些尚未解决的问题:NeoPixel 的手工焊接仍然很繁琐;纸质面板很脆弱且难以维修;而且整体组装过程尚未针对赠送或小规模生产进行简化。第三版本的想法包括具有顶端焊点的 LED 以便于焊接、专业的 PCB 组装、覆盖在纸张上的透明亚克力保护层,以及磁性面板连接。</p>
<p>目前,该装置在 Recurse Center 运行——它是数学图案的物理体现,它倾听房间内的声音并将声音转化为光影,欢迎网络上的任何人对其进行重新编程。</p>]} ,