历史上的今天
返回首页

历史上的今天

今天是:2025年01月03日(星期五)

正在发生

2020年01月03日 | 声控LED频谱分析仪的制作

2020-01-03 来源:elecfans

第1步:测试您的LED

声控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:播放一些音乐

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

推荐阅读

史海拾趣

Goldentech Discrete Semiconductor Inc公司的发展小趣事

在快速发展的同时,Goldentech始终关注环境保护和社会责任。公司积极推行绿色制造理念,采用环保材料和节能技术,减少生产过程中的碳排放和资源消耗。此外,Goldentech还投入大量资金研发可回收和可降解的半导体产品,旨在为全球电子行业的可持续发展贡献力量。这一环保理念不仅提升了公司的社会形象,还吸引了更多注重可持续发展的客户和合作伙伴。

华润微(CRMICRO)公司的发展小趣事

2020年,华润微成功在科创板上市,开启了公司发展的新篇章。上市以来,华润微充分利用资本市场的力量,不断扩大生产规模,提升技术水平。在科创板挂牌上市的推动下,公司业绩实现了快速增长。2022年,公司营收突破百亿大关,净利润达到26亿元,较2019年增长5.5倍。这一成绩的取得,充分展示了华润微在电子行业中的强大实力和竞争力。

Faraday Electronics Inc公司的发展小趣事

随着技术的不断进步,Faraday Electronics Inc意识到单一的产品线已无法满足市场的多样化需求。于是,公司开始积极拓展市场布局,将产品线拓展至智能家居、汽车电子等领域。通过不断的技术创新和市场拓展,公司逐渐在多个领域取得了领先地位,成为了电子行业的佼佼者。

EM Devices Corporation公司的发展小趣事

EM Devices Corporation的创始人在电子工程领域有着深厚的背景,他们看到了当时市场上对高性能电子元件的迫切需求。于是,他们决定创办EM Devices Corporation,专注于研发和生产高质量的电子元件。起初,公司面临了资金、技术和市场等多方面的挑战。然而,凭借创始人对技术的执着追求和对市场的敏锐洞察,公司成功研发出了一款具有竞争力的产品,并逐渐在市场上获得了认可。

FCI / Amphenol公司的发展小趣事

FCI公司起源于1988年,当时由Framatome组建,其初衷是作为核能领域外的一个多样化经营项目。然而,随着市场的变化和公司的战略调整,FCI逐渐将重心转向连接器制造。经过20多次的精心收购和策略性扩张,FCI在短短20年内便成长为全球最大的连接器制造公司之一。这一转变不仅展现了FCI对市场敏锐的洞察力,也体现了其卓越的管理能力和执行力。

Advanced Energy公司的发展小趣事

AE公司一直将创新作为企业发展的核心动力。公司不断投入研发资源,推动电源技术的持续创新。同时,AE公司也积极与各大电子企业建立合作伙伴关系,共同推动电子行业的发展。通过与合作伙伴的紧密合作,AE公司不仅获得了更多的市场机会,也提升了自身的技术水平和创新能力。

问答坊 | AI 解惑

HFSS的理论原理

HFSS虽然是一个很傻瓜的软件,但是如果对其处理方法的基本原理和微波方面的基础知识不熟悉,是不可能很好的使用它的。附件是HFSS8.0带的一个文档,说明了其激励,端口等各个方面的theory。大家可以看看,希望有帮助。…

查看全部问答>

基于51单片机开发的DS18B20的数字温度计(源程序+原理图)

基于51单片机开发的DS18B20的数字温度计 原程序用C编写可调试。原理图用protel设计 DS18B20为美国达拉斯(Dallas)公司开发的温度传感芯片,DS18B20可以直接 将被测温度转成串行数字信号,以供单片机处理! 感觉还行的朋友别忘了顶下啊! 请下 ...…

查看全部问答>

比赛能用焊好元件的板吗?

本帖最后由 paulhyde 于 2014-9-15 09:03 编辑 听说不能用焊好元件的板,通用板和PCB板都不行,只能带一块空板,比赛时盖过章之后再焊上元件,最小系统板除外。是这样的吗? 那如果买的一辆小车上已经有控制PCB并且已经焊好电路了,那到时不能 ...…

查看全部问答>

什么叫TTL电路?TTL电路的电平信号及TTL电路的优缺点

什么叫TTL电路? TTL(电路中的)2008-05-15 02:22TTL(逻辑门电路) 全称Transistor-Transistor Logic,即BJT-BJT逻辑门电路,是数字电子技术中常用的一种逻辑门电路,应用较早,技术已比较成熟。 TTL的主要分类 TTL主要有BJT(Bipolar Junction Trans ...…

查看全部问答>

ISA总线的地址设置问题

ISA总线上的A12~A31是20位数据总线,我用的是A28~A31不同的主板对地址的处理方式不一样,我现在手上有两款工控机,有一款是这么处理的,在程序里发送地址8,A28~A31就是1000,再没送其他地址之前,A28到A31始终保持是1000,但另一款不一样,不管送 ...…

查看全部问答>

S7-200几种保持数据的方法

1.CPU内置超级电容,在不太长的断电时间内为保持数据和始终提供电源,不需要附件。2.CPU上附加电池卡,与内置超级电容配合,长期为时钟和数据保持提供电源。3.使用数据块,永久保存不需要更改的数据。4.编程时设置系统块,可在CPU断电时自动永久保 ...…

查看全部问答>

大家帮分析一下,这个LED供电电路是否有误?

电路如图所示,24V供电,分为AB两组LED,平时只亮其中的一组,通过切换电源220V开关选择,原因是这样的:客户给A组LED通电连续点亮了3个月左右,又给AB组同时通电了几天,最后单独给B组通电,约20天后,发现B组严重暗了许多,于是马上把B组断电只亮A组,现在A组 ...…

查看全部问答>

AVR单片机程序实例

AVR单片机程序实例…

查看全部问答>