电子说
步骤1:材料
基本上,该项目包括两个部分:部件:MIDI接收电路和LED结构;还有一个微控制器来链接这些部分,并将来自DAW的MIDI信号“转换”到LED灯带。这是每个部分所需材料的列表。
MIDI接收电路:
1 x 6N138光电耦合器
1 x 1N914二极管
1 x 5针Din插孔(MIDI插孔)
2 x 220欧姆电阻
1 x 4.7K欧姆电阻
1个USB/MIDI插孔
LED结构:
我使用了基于WS2812B LED的RGB LED灯条,这些灯条只能通过1个数字端口进行控制。如果计划使用大量LED,则可能需要考虑所需的最大电流(1个LED最多可消耗60mA电流)。如果微控制器无法处理该最大值,则将需要另一个可以提供足够电流的5V电源。我使用了带有专用输出适配器和开关的5V-8A AC/DC适配器。
注意:似乎您可以使用计算机电源,因为它们能够提供一个非常大的电流,但是您必须确保它能够提供稳定的5V DC电压,可能是通过在地面(黑色)和5V输出(红色)之间使用36欧姆5瓦功率电阻来确保有足够的电流
最后,我使用了一个带螺丝屏蔽的简单Arduino Uno在MIDI信号和LED灯条之间建立链接。
第2步:构建MIDI输入电路
如果您对MIDI协议及其工作原理感兴趣,我强烈建议您查看Notes and Volts YouTube频道,那里有许多有趣且创新的教程和MIDI Arduino项目。
在这一部分中,我将仅关注MIDI输入电路。最好在原型板上构建原型,并在焊接组件之前检查微控制器是否很好地接收到来自DAW的MIDI信号。
以下两个视频介绍了如何构建和测试电路:
构建电路
测试电路
最后,检查此视频以了解CC消息以及微控制器如何解释自动剪辑以控制LED亮度也是一个好主意。
步骤3:配置FL Studio(可选)
使用FL Studio感到很舒服,我将说明如何正确配置其MIDI接口,但是我很确定如果您使用其他的数字音频工作站,则此过程不会有太大不同。
首先只需将USB/MIDI插孔插入计算机即可。通常,此类设备带有嵌入式固件,即使它们不受干扰也可以识别为MIDI设备。然后打开“设置”窗口(按F10键)。如果一切正常,您会在输出部分注意到一些输出MIDI设备。选择您的设备并确保其已打开。
然后,您必须定义端口号并记住它(例如0)。只需关闭此窗口(参数将自动保存),然后添加一个新通道:MIDI Out。
然后,您要做的最后一件事就是定义该新通道的端口:确保选择与您在“设置”部分中定义的端口号相同 :通过这样做,来自您的通道的MIDI信息现在已链接到MIDI输出。
现在,当通过MIDI Out通道播放音符时,将通过MIDI接口发送“ NoteOn”消息。以同样的方式,释放音符时将发送“ NoteOff”消息。
MIDI输出通道附带的另一个有趣的功能是可以用电位计控制不同的参数。右键单击它们之一,然后选择“配置。..”,可以使它们发送CCMessages(值从0到127),该消息将用于控制LED的亮度:选择CC,然后接受。
通常,FL Studio现在可以将数据发送到MIDI接口了!接下来是编写代码以在Arduino中闪存并使其适应您的LED结构。
步骤4:连接LED
连接LED灯条非常简单,因为它们仅需要+ 5V,GND和数据。但是,当我计划连接20多个时,我决定使用几个Arduino PWM引脚并声明Adafruit_NeoPixel的几个实例(在coe中),以避免任何意外的延迟。
所附图像还打算说明电子设备的工作原理:
LED灯条直接由电源供电。
使用电源开关为Arduino供电
打开开关时,Arduino会为MIDI输入电路供电
第5步:设计3D结构
到目前为止,这部分是最长的部分我对3D打印(和建模)完全陌生。我想设计一个看起来像是爆炸半截二十面体的结构(是的,我花了一些时间来找到形状的确切名称)。
当然,您可以自由设计自己的模型想要的形状!我不会详细介绍建模过程,但是如果您要设计这种结构,您会找到STL文件。
组装不同零件需要花费一些时间,因为我必须在每个面上分别放置一个LED,并且通过在内核中焊接大量目前非常混乱的导线来连接所有引脚!
注意:如果要设计这样的结构,则需要10个六角形零件(每次使用大约3个小时)一台PP3DP UP微型打印机)和6个五边形部件(2小时)。
一旦每个部件中只有一个LED,则必须将每个5V和GND端子连接在一起,并对多个输入和输出端子进行接线每个LED的连接方式。
最后,我使用LED扩散丙烯酸材料覆盖每个表面,并使它们始终如一地发光。
在此之后剩下的就是代码,它显示的并不是那么复杂!/p》
第6步:代码
正如我在上一部分中提到的那样,代码显示非常简单!
实际上,它仅包含一个MIDI实例和几个Adafruit_NeoPixel实例(以及不同的条带)。
基本上,一旦声明,MIDI类就可以使用“中断”:NoteOn,NoteOff和CCMessage。当MIDI输入小节将这些特定信号之一发送给Arduino时,将调用关联子例程。然后,代码要做的就是打开NoteOn信号上的特定LED,关闭相关的NoteOff信号,并更新CCMessage上条带的亮度。
我还定义了一个简单的该功能可通过读取NoteOn信号随附的速度来选择LED的颜色,然后根据速度值的不同,每个LED可以是红色,紫色,蓝色,绿松石,绿色,黄色,橙色或白色从0到127。
需要注意的重要一点是,当上传草图(串行端口用于此过程)时,您将必须断开RX引脚(来自MIDI输入电路)。连接到该引脚!
责任编辑:wv
全部0条评论
快来发表一下你的评论吧 !