×

为电视或桌子的背面构建RGB LED背光灯

消耗积分:0 | 格式:zip | 大小:0.10 MB | 2022-11-09

李秀兰

分享资料个

描述

这是从我原来的Instructables导入的(点击这里

欢迎来到我的教程,了解如何为电视或桌子的背面构建RGB LED 背光灯。

原理图本身非常简单,因为WS2812 LED 灯条很容易与Arduino Nano等接口

注意:如果您只想要没有音频可视化的 LED 背光,则不必使用额外的 MSGEQ7 音频分析器威廉希尔官方网站 。

我提供了使用过的零件的详细清单以及在哪里可以买到它们:

  • WS2812 RGB LED 灯条亚马逊/全球速卖通),注意 IP 代表保护(例如,如果需要防水),数字代表灯条每米有多少个 LED(对电源很重要)
  • 5V 电源亚马逊)(取决于 LED 灯条的数量)-> 每个 LED 需要约 20mA,本教程中使用的灯条有 45 个 LED(每米 30 个)所以我需要 45*20mA ~ 1、5Ampere 电源(Arduino, MSGEQ7也需要一些),我连接了一个提供3A的电源,这对我们来说已经足够了
  • 电阻器(1x 10kOhm,1x 220Ohm,用于 MSGEQ7:2x100kOhm)

补给品:

第 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 引脚连接到电源非常重要,这样如果我们插入 USB 电缆对其进行编程,Arduino 就不会损坏。10nF 和 1000uF 也是出于安全考虑,因此不会出现任何电源短缺的情况。

对于MSGEQ7 威廉希尔官方网站

这是将 MSGEQ7 连接到 Arduino 的最常见威廉希尔官方网站 。这也是您需要3.5 毫米音频插孔的地方大多数音频插孔的中间引脚是 GND,左/右的引脚是立体声通道,通过一个 10nF 电容连接到 MSGEQ7 的信号输入引脚,如图所示。您可以在 Signal In Pin 上额外添加一个电位器来控制音频信号的灵敏度,但实际上没有必要。MSGEQ7连接到 Arduino 模拟输出引脚连接A1 (MSGEQ_OUT),选通引脚连接到 D2 (STROBE),复位引脚连接到 D5 (RESET)。

 

第 2 步:代码

完成 Sketch的GitHub链接RGBStripe_Control_WS2812

代码注释:

在代码中,我们使用新的 Adafruit_NeoPixel 对象声明 WS2812 Strip 对象,传入 Led 的数量(为您的设置更改 NUM_LEDS ),连接到 LED_DATA 引脚的 Arduino 引脚,以及编码类型 + 颜色值传输的速度。

完成后,我们通过setBrightness(0-255)在 setup() 中设置默认亮度,并使用begin()打开 Strip 我们现在可以使用setPixel(LED, Color)将每个单独的 Pixel/LED设置为特定的 RGB 颜色当我们完成将所有 LED 设置为新值后,我们使用 strip.show() 更新条带这基本上是我们编写任何我们想要的动画所需的所有代码逻辑。现在要实际控制动画/模式,我们向 Arduino添加一个按钮/触觉开关。因此,我们将 Button 的一端连接到 VCC,另一端连接到 Arduino 引脚 D3 ,并使用 10kOhm 电阻连接到 GND。我们在 setup()中为这个 Pin 附加一个中断,每次按下按钮时都会触发对 changeMode() 方法的调用。changeMode()中,我们简单地切换到下一个模式并告诉当前动画中断。一旦发生这种情况,loop() 就会被新执行,并将播放新的动画/模式。

提供的动画包括:彩虹色渐变、红色、绿色、蓝色、白色、音乐分析器模式

此外,我添加了一个10kOhm 电位器来控制 Strip 的亮度方法checkBrightness()检查连接到引脚 A2(电位器的中间引脚)的电位器的输出,并相应地更新条带的亮度。

对于通过 MSGEQ7 的 musicAnalyzer() 模式:

此模式可视化连接到 MSGEQ7 的 Signal In 的音频信号。MSGEQ 输出一个模拟信号,显示单个音频波段(8 个波段,从低频到高频)。musicAnalyzer ()方法通过重置 MSGEQ 然后缓冲提供的模拟值来获取音频波段的当前值。可以通过在选通引脚上放置一个高边来更改输出的波段。在缓冲所有 8 个波段后,该方法将所有 LED 像素值向后移动一个并计算 LED 0 的新值颜色包括:低频(低音)红色、中频绿色和高频蓝色。在加载新值之前改变值给了我们一个很好的平滑定时动画。

第 3 步:在 PC 上设置音频

 

要将您的音乐/音频输入 MSGEQ7 但仍让您的音乐在扬声器上播放,您必须使用 RealtekHD Stereomix 功能或将 MSGEQ 音频输入连接到例如声卡/主板的后置扬声器输出。

要在 Win10 中启用 Stereomix,右键单击右下角的扬声器图标,然后单击“声音”,您可以在“录音”选项卡中激活 Stereomix(右键单击 -> 激活)。如果 Stereomix 不可见,请右键单击并选择“显示禁用的设备”。现在打开 Stereomix 的设置并告诉它收听和复制主扬声器的音频。

如果要使用后置扬声器输出,请在“声音”菜单中打开主扬声器的设置,选项卡“改进”,然后从列表中选择“环境”,然后在下面的下拉菜单中选择“房间”。

这现在可以实现扬声器和 MSGEQ7 的并行音频输出。

第 4 步:注释

由于原理图既不复杂也不大,我设法将整个威廉希尔官方网站 放入一个带有 USB 连接器、音频插孔、DC 插孔、电位器和按钮的孔的小盒子中。您可以简单地使用公/母排针并通过跳线将 3 根电缆连接到 WS2812 条。


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

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'为电视或桌子的背面构建RGB LED背光灯',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);