我想知道一个发光的乐器在黑暗中会是什么样子。
为了考虑到照明模式和乐器声音的某种依赖性,音频频谱分析似乎是一种合理的方法。
作为乐器,我选择了尤克里里,因为有价格合理的 DIY(自己动手)建筑套件,而且我对如何安装 LED 有一个粗略的想法。
在这里快速浏览一下结果:带有 3 个光学元件的音乐会尤克里里琴(指板上的 2 个 LED 灯条,音孔周围的 1 个 LED 环)。
更新 1:同时我构建了第二个(更大的)LED Ukulele 并添加了一些燃烧的火焰效果,见下文。
对未来的想法:
尤克里里
这一切都始于购买合适的DIY ukulele 构建套件。以下方面对我来说似乎最重要:
电子产品
由于可用空间有限(它是四弦琴,而不是吉他),我选择了Arduino Nano 。它的内存和速度应该足以进行音频频谱分析,并且它与用于控制我连接到 WS2812B 类型条带的 LED PCB 的 FastLED 库一起工作。
为了让 Arduino Nano 发出四弦琴的声音,我决定使用 Adafruit 的制动板(Adafruit MAX4466 驻极体麦克风),它使用宽带驻极体麦克风记录声音并允许调整增益。因此,可以调整 Arduino 的输入声级(因为我不知道 ukulele 身体的声音分布如何)。此外,包装足够小,可以满足使用 ukulele 的有限建筑空间的要求。Aruino Nano 的 3.3 V 和 GND 之间的 470µF 电容器用于降低 3.3 V 电源线中的噪声(否则会导致指板中每个 LED 灯条中的第一个两个 LED 闪烁。只需在面包板测试设置中将其移除即可明白我在说什么。)。
我还添加了一个电位器,可以调节 LED 的亮度。这可能会派上用场,以将 LED 亮度调整到周围的光线水平。在相当黑暗的房间里,太亮的 LED 可能会令人不安。此外,如果您的电源耗尽或所有 LED 都以最大亮度点亮,电压可能会下降到导致 Arduino 运行不稳定的水平。
添加了一个简单的按钮,以方便选择不同的闪电模式/操作模式。这可以通过软件简单地改变(例如,添加或删除新的组合)。如果在执行代码的设置部分期间按下按钮(实际上只是在为电子设备供电之前按下它)所有 LED 将打开和关闭一次,以提供一种快速检查 LED 功能/连接到发光二极管。
典型的可用 LED 串(RGB,可单独寻址)具有等间距的 LED。由于音柱之间的距离不断变化,这对我的项目来说不是一个有用的方法。我偶然发现了 WS2812b 类型的单个 LED (即 RGB LED,带板载 WS2811 IC,见下图),可以像典型的 WS2812B LED 灯串一样使用 FastLED 库轻松控制。确保这些 LED PCB 的高度适合您的指板厚度。不幸的是,我无法向卖家提供链接,因为他不再提供此类 LED。:-(
剩下的就是电线、焊料和耐心……(为什么要有耐心?30 个 LED PCB,带 6 个紧密间隔的焊料连接,每个都结合了有限的工具集和工匠技能……你会自己发现的…… )
制造第1 部分:为尤克里里添加 LED
对我来说最关键和不确定的部分是我是否可以制造包含 LED PCB 的指板,所以...
...我首先在指板背面标记 LED PCB 的位置。之后,我在标记位置的中心钻了一些凹坑,并且足够深,以便它们可以容纳来自/进入指板后侧的 LED PCB (在我的情况下约为 3 毫米)。这里更厚的(如上所述的 6 毫米指板)可以让我选择为焊料和电线提供一些安装空间,但是,我只有 4 毫米厚的指板可用。
这时我也不得不意识到,特别是在指板的上部狭窄部分(品格 1 到 5),我无法达到必要的精度来将 4 个 LED PCB 彼此相邻放置(只有一个品格)。这就是为什么我最终在品格 1 到 5 中只有 2 个 LED PCB,在品位 6 到 10 中只有 4 个 LED PCB(总共 10 + 20 = 30 个 LED PCB)。
接下来,我使用普通的手工艺品胶水将 LED PCB 粘贴到凹坑中。由于 LED PCB 有 6 个焊盘(2x GND、2x VCC、1x Din、1x Dout),我决定了下图所示的方向。注意数据流向!由于每个 LED PCB 分别有 2 个互连的 GND 和 VCC 焊盘,因此只有 1 个 DataIn 和 1 个 DataOut 焊盘,因此此处 LED PCB 的连接顺序/方向/方向很重要。选择的方向和对齐允许直接连接每个 LED PCB 的 GND 和 VCC。
此外(由于上面提到的事实,我没有成功在所有音品中安装 4 个 LED)我将 LED 分成 2 个单独的光学元件/串。为了节省宝贵的安装空间,第 2 串 LED 的 GND 和 VCC 直接连接到第 1 串 LED 的适当位置(从而为第 2 串节省了单独的 VCC 和 GND 线)。
现在必须将带有 LED PCB 的指板安装到琴颈上。如果能够以完美的直线将 LED 与电线连接起来,则可以考虑将电缆铣入颈部的通道。我也尝试过使用铜带,但由于拓扑结构的原因,我无法获得足够的电接触。
但是,如下图所示,在我的情况下,电线连接远不是直线排列的。此外,虽然凹坑可以很好地容纳 LED PCB,但焊料却伸出了这些凹坑。因此我决定使用一些大约 2 毫米厚的泡沫橡胶(“Moosgummi”)。我使用多用途胶水/手工艺品胶水将泡沫橡胶粘在指板和琴颈之间. 这是最精细的制造步骤之一,因为它是不可逆的。就像如果您只是使用 DIY 构造套件制造四弦琴(不带任何 LED),您必须以适当的压力压缩这个三重堆栈(琴颈、泡沫、指板)一段时间。数字?不知道。倾听你内心的工匠。如果您需要有关如何将各个部分组合在一起以最终制作出尤克里里琴的信息,还可以查看视频教程。
我很高兴看到在这个具有挑战性的制造步骤之后我仍然可以控制所有的 LED。关于胶水:我建议在进行上述不可逆制造步骤之前进行一些测试。在我的情况下,木胶没有起到作用。它没有粘在橡胶泡沫上。我试过的另一种“办公桌”胶水没有粘在脖子上。最后我的妻子想出了合适的胶水。谢谢!还要确保您的胶水既不导电(这可能会使 LED PCB 或电缆的某些部分短路),也没有可能损坏 LED PCB 的腐蚀性溶剂。起初我担心泡沫橡胶可能会过多地抑制/抑制尤克里里琴弦的振动,从而导致尤克里里发出无声的声音。这不是真的,至少在我的印象中不是这样(尽管我没有将它与基于相同的 DIY 构造套件制造的第二个尤克里里琴进行比较,没有光学元件和/或泡沫橡胶)。
完成此操作后,四弦琴其余部分的组装非常简单。教程、视频等可以在 www. 这是我购买 DIY 工具包的地方,它们还链接到教程视频:( https://www.kirstein.de/Konzert-Ukulelen/Classic-Cantabile-UC-240-DIY-Ukulele-Bausatz-Konzert.html?userInput =ukuele&ignoreForCache[]=userInput&queryFromSuggest=true&ignoreForCache[]=queryFromSuggest )。
我还添加了第三个光学元件:环绕四弦琴音孔的 LED 环。这个 LED 环具有相似的 LED 类型(可能还有 WS2812B,但不再 100% 确定了),因此可以通过与指板上的两个 LED 条相同的软件例程进行控制。详情见下文软件说明。我的印象是这个 LED 环确实对尤克里里的声音有影响。这是有道理的,因为弦乐器的声音——至少在我的理解中——很大程度上受到身体上下部分振动的影响。目前我用双面胶带将 LED 环粘在机身上。如果只用例如 4 个螺钉而不是胶带连接它,也许会改善这种情况。
制造第 2 部分:为尤克里里添加电子和电路
我选择的安装位置如下图所示。我的边界条件是:
虽然对于某些元件,安装孔可以简单地通过钻孔来建立,但对于其他部件,必须使用钻孔和锯切的组合。
最后说说电源。通常,WS2812B LED 已经在 3.5 和 5 V 之间的相当低的电压下运行。虽然 3.5 V 对 Arduino 来说太低而无法可靠运行,但超过5.some V 会损坏 LED。由于我想使用可充电电池,我决定使用 4 节 AA 尺寸的可充电镍氢蓄电池。注意:如果有人放入不可充电电池(通常每个电池提供 1.5 V),电源可能会杀死您的 LED。(我个人非常不喜欢这种情况,因为大部分工作都涉及将 LED 放入指板。对于简单的保护电路有什么想法吗?)
关于电流消耗:假设所有 3 个 LED 元件以中等(~0.5)亮度和“半白”(即各种颜色的混合)完全点亮,单个全白点亮 WS2812B LED 消耗 60 mA,电流约为(10 + 20 个 LED) * ( 0.5 x 60 mA) * 0.5 ~ 450 mA 是必需的,可由所选电池供电。提高亮度(使用电位计)会导致功耗显着增加,有时(我假设)Arduino Nano 运行不稳定(由于电压降)和“奇怪”或“卡住”的照明模式。
电源将通过一些钩环紧固件(“Klettverschluss”)连接到尤克里里琴体的背面,以实现真正的移动应用。
这就是硬件。其他任何东西都是软件。
在尝试重现 Antoine Rochebois 项目时,我学到了很多关于 FFT 和 WS2812B LED 控制的知识(https://create.arduino.cc/projecthub/AntoineKia/interactive-led-table-for-50-650b83?ref=platform&ref_id=424_trending___&offset= 84 ) 使用 Arduino Uno。
所以我基本上是把东西插在一起,修改了一些部分,添加了几行代码。下面代码中的注释应该包含所有必要的解释。
一般的
对于每个 LED 灯条/环,使用一个单独的阵列(以便于访问和编程)。
每个 LED 灯条/环的控制(色调、饱和度和值)由单独的子程序完成 - 这些子程序仅在相关变量的名称(阵列名称、阵列中的 LED 数量等)上有所不同。这可以通过仅使用 1 个子程序/函数来改进,该子程序/函数被称为 w/适当的参数集。但是,我在编程方面经验不足,尤其是在将数组移交给函数时。幸运的是,由于 LED 的数量有限,这不是必需的。
设置
在设置例程中,每个 LED 都会点亮一次,以检查它们是否仍在工作。
主要的
在主要部分,首先收集音频数据,然后是 FFT。
之后,通过评估电位器设置来确定 LED 亮度。这以及音频数据收集是在 Arduino 中所谓的 ADC自由运行模式下通过直接访问微处理器的寄存器来完成的。
接下来,根据按下按钮的次数确定闪电模式。(如果没有按下按钮,则所有光学元件都关闭!)
最后将相应的值写入 LED 阵列,并通过调用 FastLED.show() 显示所有内容。
虽然我仍然喜欢四弦琴在演奏时不断变化的照明,但我的印象是这种模式并不是 FFT 的结果。然而,这可能是将音频频谱从 20 Hz - 20 kHz 分别映射到仅 2 个(品格 1 到 5)或 4 个(品格 6 到 10)LED 箱的结果。此外,每个 LED 箱的高度非常有限,只有 5 个 LED。另一方面,尤克里里产生的声音(尤其是在项目特定修改之后)可能是真的,与正弦波相差甚远,导致宽带 FFT 响应很难看到播放的低频或高频的任何差异。或者,麦克风制动板与四弦琴的刚性机械耦合可能会为预期的音频输入增加一些“机械”噪声/振动/频率。
尽管如此,我在项目中学到了一些东西,结果仍然让我满意。欢迎提出建设性意见和改进建议!
希望您喜欢阅读本教程,如果您进行类似的项目,它会对您有所帮助
祝你好运,有很多见识,特别有趣!
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !