电子说
第1步:构建原理图
主要原理图:
因此,使用Adafruit_NeoPixel库将WS2812 Strip与Arduino接口非常简单。
LED灯条有3个引脚: VCC,DATA, GND 即可。 VCC连接到5V,GND连接到地,中间的 DATA引脚连接到连接到Arduino上的LED_DATA引脚D6。现在条带上的每个LED都有一个WS2812芯片在它上面接收从Arduino接收的数据并将其传递到下一个LED,因此我们只需要将Led数据一次送到条带上的第一个LED。
逻辑按钮改变模式,电位计控制亮度将在下一步中解释。
确切的原理图可以在fritzing文件的屏幕截图中找到,也可以下载。
注意 非常重要仅通过二极管将Arduino 5V引脚连接到电源,因此Arduino是如果我们插入USB线进行编程,则不会损坏。 10nF和1000uF也是出于安全考虑,因此不存在任何电源短缺。
对于 MSGEQ7电路:
这是最常见的将MSGEQ7连接到Arduino的电路。这也是您需要 3.5mm音频插孔的地方。大多数音频插孔的中间引脚为GND,左/右引脚是立体声通道,通过10nF电容连接到MSGEQ7的信号输入引脚,如原理图所示。您还可以在Signal In Pin中添加一个电位计来控制音频信号的灵敏度,但实际上并不是必需的。 MSGEQ7 连接到Arduino ,模拟输出引脚连接连接到A1 (MSGEQ_OUT), Strobe 将固定到D2 (STROBE),重置将固定到D5 (重置)。
第2步:代码
关于代码的注释:
在代码中,我们使用新的Adafruit_NeoPixel对象声明WS2812 Strip对象,传入Leds的数量(为您设置更改NUM_LEDS ),连接到LED_DATA引脚的Arduino引脚,以及编码类型+颜色值传输的速度。
一旦完成,我们通过 setBrightness(0-255)中设置默认亮度 》并使用开始()打开Strip。我们现在可以将每个像素/LED 设置为具有 setPixel(LED,颜色)的特定RGB颜色。完成后,将所有LED设置为新值,我们使用strip.show()更新条带。这基本上是编程我们想要的任何动画所需的所有代码逻辑。现在要实际控制动画/模式,我们将一个按钮/Tactile Switch添加到Arduino。因此,我们将按钮的一端连接到VCC,将另一端连接到Arduino引脚D3 ,并将一个10k欧姆的电阻连接到GND。我们在设置()中为此PIN附加中断,每次按下按钮时都会触发对changeMode()方法的调用。在 changeMode()中,我们简单切换到下一个模式并告诉当前动画中断。一旦发生这种情况,loop()将被新执行,并将播放新的动画/模式。
提供的动画包括:彩虹色渐变,红色,绿色,蓝色,白色,音乐分析器模式
此外,我添加了 10kOhm电位计 来控制条带的亮度。方法 checkBrightness()检查连接到引脚A2的电位计输出(电位器的中间引脚)并相应地更新条带的亮度。
用于musicAnalyzer()模式通过MSGEQ7:
此模式可视化连接到MSGEQ7的信号输入的音频信号。 MSGEQ输出模拟信号,显示单个音频频段(8个频段,从低频到高频)。 musicAnalyzer()方法通过重置MSGEQ然后缓冲提供的模拟值来获取音频带的当前值。输出的波段可以通过在Strobe Pin上放置一个高侧翼来改变。在所有8个波段都被缓冲后,方法将所有LED像素值向后移动 并计算LED 0的新值。颜色包括:低频(低音)红色,中频绿色和高频蓝色。在加载新值之前移动值会给我们一个很好的平滑定时动画。
步骤3:在PC上设置音频
要将您的音乐/音频输入MSGEQ7但仍然在您的扬声器上播放音乐,您要么拥有使用RealtekHD Stereomix功能或将MSGEQ音频输入连接到例如声卡/主板的后置扬声器输出。
要在Win10中启用Stereomix,请右键单击右下方的扬声器图标,然后单击“声音”,此处可以在“录制”选项卡中激活Stereomix(右键单击 - 》激活)。如果看不到Stereomix,请右键单击选择“显示已禁用的设备”。现在打开Stereomix的设置并告诉它听取并复制主扬声器的音频。
如果您想使用后置扬声器输出,请在“声音”中打开主扬声器的设置菜单,选项卡“改进”,然后从列表中选择“环境”,然后在下面的下拉菜单中选择“房间”。
现在可以启用扬声器和MSGEQ7的并行音频输出。
第4步:注释
由于原理图没有那么复杂也没有大尺寸我设法把整个电路放到一个小盒子里用于USB连接器,音频插孔,DC插孔,电位计和按钮的孔。您可以简单地使用公/母针头并通过跳线将3根电缆连接到WS2812带。
全部0条评论
快来发表一下你的评论吧 !