0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

声控LED频谱分析仪的制作

454398 来源:wv 2019-10-17 10:03 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

第1步:测试您的LED

将所有东西布置在适当大小的工作空间上。插入电烙铁。您要做的第一件事就是测试您的LED。

我很快了解到这些灯不喜欢在没有数据的情况下响应电源。如果您跳起来尝试仅用电源测试它们而它们不起作用,请稍等片刻。他们可能只需要注入一些代码即可激活LED。在切割LED灯条之前,请遵循本指南将灯条连接至Arduino/电源。然后运行此处找到的示例代码。

注意:一端确实已预焊接了导线。随意尝试一下。在卷轴上,我收到了预包装的电缆,但没有用(哼哼声),所以我不得不切断两个LED并从卷轴的裸露端开始。

步骤2:焊接VU防护板

抓住Shifty VU防护板和Arduino。

VU防护板带有一组接头引脚,用于连接到Arduino的。这些接头需要焊接,因为连接太松,甚至不能出于测试目的而简单地插入。有关如何将屏蔽层焊接到Arduino的技巧,请参阅Sparkfun的这份出色指南。

步骤3:切割LED灯条

对于这个项目,我使用了3条带,每条带38个LED。

您可以决定要保留多长时间。较短的灯条(少于10个LED)可能不会给您带来很大的效果,但是请确定适合您的项目的长度,并相应调整本指南中的步骤。

LDP8806灯带每节带有两个LED,每16个LED与焊锡相连。您可以在插排的任何点进行切割和连接,但是如果需要在连接点断开插排的连接,请务必拆焊。观看此视频,该视频显示了如何分割这种类型的条带。

步骤4:连接准备

在本指南中,我将使用黑色,红色,黄色和绿色的线。您可以使用所需的任何颜色,但是请记住,在以下步骤中将参考这些颜色。

剥开两端的线以获得每种四种颜色的几根导线。

获取您的LED指示灯。您想找到箭头指向远离带状切口的末端。

小心地切掉密封条的末端,这样就可以到达连接器(或将其完全切掉)。

用焊料固定连接器。这样可以更轻松地焊接电线。再次注意箭头的方向;注意它是如何指向远离焊料的。这就是数据流的方向,如果将它们混在一起,可能会损坏条带。

只需检查一下,箭头方向是否正确?如果没有,您将破产。

第5步:连接LED

这些LED有四个引脚;地,5v,C(时钟)和D(数据)。条带的某些部分上标有值,有些则没有。没关系,只要知道您要焊接到哪个引脚即可。继续操作时请参阅接线图,并仔细检查条带面对的方向。

将条带焊接在一起,确保每个输出都连接到其各自的输入。

第6步:连接到Arduino/电源

获取5V电源和Arduino。

从在插排布置的输入端开始,将绿色数据线连接到引脚2,将黄色时钟线连接到引脚3。红色5V线直接连接到电源,并且电源和LED灯带与驱动器共享公共接地。 Arduino。

请参阅上面的接线图,并仔细检查所有连接。

第7步:代码

将Arduino连接到您的PC。抓住您的音频分配器并将其连接到PC。使用一根音频电缆连接至VU屏蔽,另一根电缆连接至扬声器。将电源适配器连接到电源插座。

一旦一切都连接好,请从步骤0开始运行测试程序以再次检查所有指示灯是否点亮。

从Github下载项目代码并添加到您的Arduino库。打开Arduino IDE并上传。

#include “fix_fft.h”

#include “HSBColor.h”

#include “LPD8806.h”

#include “SPI.h”

// Choose 2 pins for Arduino output

#define DATA_PIN 2

#define CLOCK_PIN 3

// Defines the number and arrangement of LEDs in the visualizer. For a vertical setup, this will determine the space to light ratio as they wrap

#define NUM_BARS 12

#define BAR_LENGTH 12

// The difference in hue for each bar after the first.

#define BAR_HUE_DIFF 8

// Create a LPD8806 instance to control the strip

LPD8806 strip = LPD8806(NUM_BARS * BAR_LENGTH, DATA_PIN, CLOCK_PIN);

// The current hue of the first strip of the bar

int curHue = 0;

// FFT data storage

char im[NUM_BARS * 2], data[NUM_BARS * 2];

int prev[NUM_BARS];

// HSB/RGB data buffer

int rColor[3];

// Converts a 2d visualizer point to it‘s location on the strip

int getStripLocation(int col, int row)

{

// Controls the strip in alternating directions. This allows for chaining horizontal bars end-to-end

if (col % 2 == 0)

row = BAR_LENGTH - row - 1;

return col * BAR_LENGTH + row;

}

void setup()

{

analogReference(DEFAULT);

strip.begin();

strip.show();

}

void loop()

{

uint16_t i, j, k;

uint32_t color;

// Read analog input

for (i = 0; i 《 NUM_BARS * 2; i++)

{

int val = (analogRead(3) + analogRead(2)) / 2;

data[i] = val * 2;

im[i] = 0;

delay(1);

}

// Set the background colour of the LEDs when they are not receiving music data

for (i = 0; i 《 NUM_BARS * BAR_LENGTH; i++)

strip.setPixelColor(i, 20, 20, 40);

// Set the proper pixels in each bar

for (i = 0; i 《 NUM_BARS; i++)

{

// Each LED bar has 2 FFT frequencies that are summed together

int fft_start = i * 2;

int fft_count = 2;

// Get a positive data point from the FFT

int curData = 0;

for (k = 0; k 《 fft_count; k++)

curData += sqrt(data[fft_start + k] * data[fft_start + k] + im[fft_start + k] * im[fft_start + k]);

// Account for the ShiftyVU’s filtering

if (i == 0 || i == 7)

curData /= 2;

// Smoothly drop from peaks by only allowing data points to be one LED lower than the previous iteration.

// This prevents seizure-inducing flashes which might be caused by the ShiftyVU‘s filtering (?)

if (prev[i] 》 BAR_LENGTH && curData 《 prev[i] - BAR_LENGTH)

curData = prev[i] - BAR_LENGTH;

// Base color for each bar

H2R_HSBtoRGB((curHue + i * 8) % 360, 99, 99, rColor);

color = strip.Color(rColor[0] / 2, rColor[1] / 2, rColor[2] / 2);

// If only the first LED is lit, but not fully. This is outside the for loop because the subtraction of

// BAR_LENGTH causes the value to wrap around to a very high number.

if (curData 《 BAR_LENGTH)

{

int brightness = curData * 99 / BAR_LENGTH;

H2R_HSBtoRGB((curHue + i * BAR_HUE_DIFF) % 360, 99, brightness, rColor);

// Colour of the base of each bar. Change this to match the background colour of the LEDs

strip.setPixelColor(i, 20, 20, 40);

}

else

{

for (j = 0; j 《 BAR_LENGTH; j++)

{

// Light up each fully lit LED the same way.

if (curData - BAR_LENGTH 》 j * BAR_LENGTH)

strip.setPixelColor(getStripLocation(i, j), color);

else if (curData 》 j * BAR_LENGTH)

{

// Dims the last LED in the bar based on how close the data point is to the next LED.

int brightness = (j * BAR_LENGTH - curData) * 99 / BAR_LENGTH;

H2R_HSBtoRGB((curHue + i * BAR_HUE_DIFF) % 360, 99, brightness, rColor);

strip.setPixelColor(getStripLocation(i, j), strip.Color(rColor[0] / 2, rColor[1] / 2, rColor[2] / 2));

}

}

}

// Store all of the data points for filtering of the next iteration.

prev[i] = curData;

}

// Cycle through all the colors.

if (curHue == 359)

curHue = 0;

else

curHue++;

// Display the strip.

strip.show();

}

步骤8:播放一些音乐

一旦上传了所有内容,就播放一些音乐!现在,您应该具有类似的内容(我的上面覆盖有用于扩散的光面板)。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    244

    文章

    24729

    浏览量

    692579
  • 声控
    +关注

    关注

    3

    文章

    93

    浏览量

    33880
  • 频谱分析仪
    +关注

    关注

    16

    文章

    1341

    浏览量

    89854
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何正确使用频谱分析仪

    频谱分析仪是电子研发与通信测试中不可或缺的工具,正确使用不仅能确保测量精度,还能有效保护设备。以下是简明操作指南,助您高效完成测量。
    的头像 发表于 04-11 15:46 463次阅读
    如何正确使用<b class='flag-5'>频谱分析仪</b>

    频谱分析仪的分类与应用

    频谱分析仪(Spectrum Analyzer)是电子工程领域中不可或缺的核心测量仪器,被誉为射频量测的“万用表”。它通过将时域信号转换为频域图谱,直观呈现信号的频率成分与功率分布,广泛应用于无线通信、雷达、广播电视、电磁兼容(EMC)测试及科研教育等领域。
    的头像 发表于 04-11 15:07 441次阅读
    <b class='flag-5'>频谱分析仪</b>的分类与应用

    频谱分析仪与网络分析仪的区别

    在电子测量领域,频谱分析仪与网络分析仪是两种极为重要且应用广泛的测试仪器,尽管它们均用于信号分析,但其设计原理、功能定位及应用场景存在显著差异。 一、测量对象与核心功能不同 频谱分析仪
    的头像 发表于 03-18 16:13 267次阅读
    <b class='flag-5'>频谱分析仪</b>与网络<b class='flag-5'>分析仪</b>的区别

    频谱分析仪与信号分析仪的区别

    在现代电子测量领域,频谱分析仪与信号分析仪是两种广泛应用且功能强大的仪器,它们在无线通信、雷达系统、电子对抗及科研开发中发挥着不可替代的作用。尽管两者均用于信号的采集与分析,功能上亦有交集,但其设计定位、
    的头像 发表于 03-17 15:29 241次阅读
    <b class='flag-5'>频谱分析仪</b>与信号<b class='flag-5'>分析仪</b>的区别

    频谱分析仪是什么?频谱仪常见问题解答

    频谱分析仪和信号分析仪这两个术语往往可以互换使用,不过两者在功能和能力上还是有一定区别。当今的分析仪可进行更全面的频域、时域和调制域信号分析,用“信号
    的头像 发表于 03-11 17:33 867次阅读
    <b class='flag-5'>频谱分析仪</b>是什么?<b class='flag-5'>频谱仪</b>常见问题解答

    频谱分析仪的分类与主要用途

    频谱分析仪,简称频谱仪,是用于显示输人信号的幅度(或功率)相对于频率分布的仪器。由于频谱仪的测量功能较多,因此被广泛应用于广播、电视、通信、无线电探测、导航及各种电路的设计、制造和电子设备的维护、修理等方面。
    的头像 发表于 03-04 17:32 1082次阅读
    <b class='flag-5'>频谱分析仪</b>的分类与主要用途

    频谱分析仪的工作原理与应用

    频谱分析仪是一种关键的电子测量设备,广泛应用于射频(RF)与微波信号的分析与检测。它通过将信号从时域转换到频域,帮助工程师和技术人员深入了解信号的特性,确保信号质量并优化系统性能。   一、频谱分析仪
    的头像 发表于 03-02 17:05 841次阅读
    <b class='flag-5'>频谱分析仪</b>的工作原理与应用

    频谱分析仪与电压探头匹配指南

    如何实现频谱分析仪与电压探头的精准匹配?核心逻辑可概括为“三对齐一适配”——参数对齐、接口对齐、设置对齐+场景适配,最终目标是规避信号反射、衰减与失真问题,确保测量数据(幅度、频率、波形)的准确性
    的头像 发表于 12-29 14:51 573次阅读
    <b class='flag-5'>频谱分析仪</b>与电压探头匹配指南

    频谱分析仪的应用范围与技术解析

    频谱分析仪集信号分析、网络测试与EMC评估于一体,具备高动态范围、多频段覆盖及扩展测量功能,广泛应用于通信、电磁兼容及射频元件测试
    的头像 发表于 10-29 16:11 945次阅读

    如何合理选择频谱分析仪,便携式频谱分析仪,手持式频谱分析仪

    我们应该如何合理选择频谱分析仪呢?使用者往往在选择或使用频谱分析仪的时候,其最主要的核心关注点在于它的测量能力、使用场景、操作效率等这三大维度方面。那应该如何选择,具体可以以SYN5213系列平板
    的头像 发表于 09-17 17:53 994次阅读

    如何挑选一款合适的便携式实时频谱分析仪

    在当今复杂的电磁环境中,便携式实时频谱分析仪成为众多领域不可或缺的工具。无论是通信领域的信号监测与干扰排查,还是科研工作中的频谱分析,亦或是工业生产中的电磁兼容性检测,一款合适的便携式实时频谱分析仪
    的头像 发表于 09-17 17:52 760次阅读

    是德频谱分析仪的远程控制与自动化测试方案详解

    是德科技(Keysight Technologies)的频谱分析仪凭借其高精度、多功能性和灵活性,在无线通信、射频微波、电磁兼容等众多领域得到了广泛应用。随着测试需求的日益复杂和对效率要求的不断提高
    的头像 发表于 06-19 15:16 1017次阅读
    是德<b class='flag-5'>频谱分析仪</b>的远程控制与自动化测试方案详解

    4052E信号频谱分析仪

    4052E信号频谱分析仪 2Hz~26.5GHz 4052系列信号/频谱分析仪 简述 Ceyear 4052具备出色的测试动态范围、相位噪声、幅度精度和测试速度,具备频谱分析、I/Q分析
    的头像 发表于 06-17 17:48 777次阅读
    4052E信号<b class='flag-5'>频谱分析仪</b>

    是德频谱分析仪对微波信号频率稳定性的测量与分析

    微波信号频率稳定性在现代通信、雷达、电子对抗等领域至关重要。是德频谱分析仪作为高精度的测量设备,能够对微波信号的频率稳定性进行准确测量与深入分析。以下是相关探讨。 测量原理及方法 是德频谱分析仪通过
    的头像 发表于 06-13 13:54 992次阅读
    是德<b class='flag-5'>频谱分析仪</b>对微波信号频率稳定性的测量与<b class='flag-5'>分析</b>

    USB微型频谱分析仪模块介绍

    SYN5216型USB微型频谱分析仪模块是一种重要的电子测量仪器,用于测量信号的频谱特性。它能够将信号分解为频率成分,并提供关于每个频率成分的幅度和相位信息。频谱分析仪广泛应用于各个领域,提供了丰富
    的头像 发表于 06-06 13:55 750次阅读