数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 4326|回复: 28

[影音] 【花雕动手做】有趣好玩的音乐可视化项目(04)---WS2812条灯

[复制链接]
发表于 2021-10-8 09:52:06 | 显示全部楼层 |阅读模式
本帖最后由 eagler8 于 2021-10-8 19:24 编辑

偶然脑子发热心血来潮,想要做一个声音可视化的系列专题。这个专题的难度有点高,涉及面也比较广泛,相关的FFT和FHT等算法也相当复杂,不过还是打算从最简单的开始,实际动手做做试验,耐心尝试一下各种方案,逐步积累些有用的音乐频谱可视化的资料,也会争取成型一些实用好玩的音乐可视器项目。


【花雕动手做】有趣好玩的音乐可视化系列小项目(04)---WS2812条灯

项目所需材料如下:



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
发表于 2024-3-2 15:26:59 | 显示全部楼层
eagler8 发表于 2021-10-8 16:22
【花雕动手做】有趣好玩的音乐可视化系列小项目(04)---WS2812条灯
  项目之三:12位环形音乐反应灯

请问有接线图嘛,按照您的做了效果不一样欸
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-8 19:03:32 | 显示全部楼层
【花雕动手做】有趣好玩的音乐可视化系列小项目(04)---WS2812条灯
  项目之四:音乐反应8位环形灯

  实验视频剪辑

https://v.youku.com/v_show/id_XN ... hcb.playlsit.page.5



回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-8 17:22:29 | 显示全部楼层
本帖最后由 eagler8 于 2021-10-8 18:24 编辑

【花雕动手做】有趣好玩的音乐可视化系列小项目(04)---WS2812条灯
  项目之四:音乐反应8位环形灯

  实验场景动态图




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-8 17:20:14 | 显示全部楼层

【花雕动手做】有趣好玩的音乐可视化系列小项目(04)---WS2812条灯
  项目之四:音乐反应8位环形灯

  实验开源代码


  1. /*
  2.   【花雕动手做】有趣好玩的音乐可视化系列小项目(04)---WS2812条灯
  3.   项目之四:音乐反应8位环形灯
  4. */

  5. #include<FastLED.h>
  6. #define LED_PIN 6
  7. #define NUM_LEDS 8

  8. CRGB leds[NUM_LEDS];
  9. uint8_t hue = 0;
  10. int soundsensor = 7;

  11. void setup() {
  12.   delay(2000);
  13.   Serial.begin(9600);
  14.   FastLED.addLeds<WS2812B, LED_PIN, GRB>(leds, NUM_LEDS);
  15.   FastLED.setBrightness(255);
  16.   pinMode(soundsensor, INPUT);
  17. }

  18. void loop() {
  19.   int sensval = digitalRead(soundsensor);

  20.   if (sensval == 1) {
  21.     Serial.println("ON");
  22.     leds[0] = CRGB :: Red;
  23.     fill_solid(leds, NUM_LEDS, CRGB :: Blue);
  24.     rainbow_moving();
  25.     FastLED.show();
  26.     delay(10);
  27.   }
  28.   else {
  29.     leds[0] = CRGB :: Black;
  30.     fill_solid(leds, NUM_LEDS, CRGB :: Black);
  31.     FastLED.show();
  32.     delay(10);
  33.   }
  34. }

  35. void rainbow_moving() {
  36.   for (int i = 0; i < NUM_LEDS; i++) {
  37.     leds[i] = CHSV(hue + (i * 10), 255, 255);
  38.   }
  39.   EVERY_N_MILLISECONDS(10) {
  40.     hue++;
  41.   }
  42. }
复制代码


回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-8 17:19:31 | 显示全部楼层

:loveliness: 谢谢鼓励
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-8 17:05:23 | 显示全部楼层
本帖最后由 eagler8 于 2021-10-8 18:12 编辑

     【花雕动手做】有趣好玩的音乐可视化系列小项目(04)---WS2812条灯     项目之三:12位环形音乐反应灯

  实验视频剪辑

https://v.youku.com/v_show/id_XNTgxMTczNDcwOA==.html?firsttime=0


回复 支持 反对

使用道具 举报

发表于 2021-10-8 17:01:27 来自手机浏览器 | 显示全部楼层
杀马特效果
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-8 16:31:28 | 显示全部楼层
  实验场景动态图



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-8 16:22:43 | 显示全部楼层
【花雕动手做】有趣好玩的音乐可视化系列小项目(04)---WS2812条灯
  项目之三:12位环形音乐反应灯

  实验场景图



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-8 16:13:52 | 显示全部楼层
【花雕动手做】有趣好玩的音乐可视化系列小项目(04)---WS2812条灯
  项目之三:12位环形音乐反应灯

  实验开源代码

  1. /*
  2.   【花雕动手做】有趣好玩的音乐可视化系列小项目(04)---WS2812条灯
  3.   项目之三:12位环形音乐反应灯
  4. */

  5. #define FASTLED_INTERRUPT_RETRY_COUNT 0
  6. //#define FASTLED_ESP8266_RAW_PIN_ORDER

  7. #include <FastLED.h>
  8. #define NUM_LEDS 12
  9. CRGB leds[NUM_LEDS];

  10. const int ledPin = 6;
  11. int sensorPin = 7;
  12. boolean val = 0;

  13. void setup() {
  14.   pinMode(ledPin, OUTPUT);
  15.   pinMode(sensorPin, INPUT);
  16.   Serial.begin (9600);
  17.   FastLED.addLeds<WS2812B, ledPin, RGB>(leds, NUM_LEDS);
  18. }

  19. void loop () {
  20.   val = digitalRead(sensorPin);
  21.   Serial.println (val);
  22.   if (val == HIGH) {
  23.     leds[0] = CRGB(180, 0, 0);
  24.     FastLED.show();
  25.     delay(3);
  26.     leds[1] = CRGB(0, 180, 0);
  27.     FastLED.show();
  28.     delay(3);
  29.     leds[2] = CRGB(0, 0, 240);
  30.     FastLED.show();
  31.     delay(3);
  32.     leds[3] = CRGB(150, 0, 240);
  33.     FastLED.show();
  34.     delay(5);
  35.     leds[4] = CRGB(180, 200, 20);
  36.     FastLED.show();
  37.     delay(5);
  38.     leds[5] = CRGB(85, 60, 180);
  39.     FastLED.show();
  40.     delay(10);
  41.     leds[6] = CRGB(50, 220, 20);
  42.     FastLED.show();
  43.     delay(5);
  44.     FastLED.show();
  45.     leds[7] = CRGB(0, 0, 250);
  46.     FastLED.show();
  47.     delay(5);
  48.     FastLED.show();
  49.     leds[8] = CRGB(240, 0, 0);
  50.     FastLED.show();
  51.     delay(10);
  52.     leds[9] = CRGB(0, 250, 0);
  53.     FastLED.show();
  54.     delay(10);
  55.     leds[10] = CRGB(0, 0, 255);
  56.     FastLED.show();
  57.     delay(10);
  58.     leds[11] = CRGB(220, 200, 20);
  59.     FastLED.show();
  60.     delay(10);
  61.   }
  62.   else {
  63.     leds[12] = CRGB(150, 0, 255);
  64.     FastLED.show();
  65.   }
  66.   FastLED.clear();
  67. }
复制代码


回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-8 15:24:08 | 显示全部楼层
  实验场景动态图



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-8 15:22:56 | 显示全部楼层
【花雕动手做】有趣好玩的音乐可视化系列小项目(04)---WS2812条灯
  项目之二:数字信号驱动的七色节奏灯

  实验视频剪辑

https://v.youku.com/v_show/id_XNTgxMTgyNDkwNA==.html?firsttime=0



回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-8 14:59:01 | 显示全部楼层
  【花雕动手做】有趣好玩的音乐可视化系列小项目(04)---WS2812条灯
  项目之二:数字信号驱动的七色节奏灯

  实验开源代码

  1. /*
  2.   【花雕动手做】有趣好玩的音乐可视化系列小项目(04)---WS2812条灯
  3.   项目之二:数字信号驱动的七色节奏灯
  4. */

  5. #define FASTLED_INTERRUPT_RETRY_COUNT 0
  6. //#define FASTLED_ESP8266_RAW_PIN_ORDER

  7. #include <FastLED.h>
  8. #define NUM_LEDS 8
  9. CRGB leds[NUM_LEDS];

  10. const int ledPin = 6;
  11. int sensorPin = 7;
  12. boolean val = 0;

  13. void setup() {
  14.   pinMode(ledPin, OUTPUT);
  15.   pinMode(sensorPin, INPUT);
  16.   Serial.begin (9600);
  17.   FastLED.addLeds<WS2812B, ledPin, RGB>(leds, NUM_LEDS);
  18. }

  19. void loop () {
  20.   val = digitalRead(sensorPin);
  21.   Serial.println (val);
  22.   if (val == HIGH) {
  23.     leds[0] = CRGB(180, 0, 0);
  24.     FastLED.show();
  25.     delay(3);
  26.     leds[1] = CRGB(0, 180, 0);
  27.     FastLED.show();
  28.     delay(3);
  29.     leds[2] = CRGB(0, 0, 240);
  30.     FastLED.show();
  31.     delay(3);
  32.     leds[3] = CRGB(150, 0, 240);
  33.     FastLED.show();
  34.     delay(5);
  35.     leds[4] = CRGB(220, 200, 20);
  36.     FastLED.show();
  37.     delay(5);
  38.     leds[5] = CRGB(85, 60, 180);
  39.     FastLED.show();
  40.     delay(10);
  41.     leds[6] = CRGB(50, 220, 20);
  42.     FastLED.show();
  43.     delay(10);
  44.     FastLED.show();
  45.     leds[7] = CRGB(220, 220, 250);
  46.     FastLED.show();
  47.     delay(10);
  48.     FastLED.show();
  49.   }
  50.   else {
  51.     leds[8] = CRGB(150, 0, 255);
  52.     FastLED.show();
  53.   }
  54.   FastLED.clear();
  55. }
复制代码


回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-8 14:37:00 | 显示全部楼层
  实验场景动态图



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-8 14:26:43 | 显示全部楼层
本帖最后由 eagler8 于 2021-10-8 14:37 编辑
wfzdm 发表于 2021-10-8 14:03
这个灯是随音乐变化改变颜色和亮度吧

这个是使用简单声音模块的,通过声级大小来触发,偏向节奏灯
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-8 14:24:54 | 显示全部楼层
【花雕动手做】有趣好玩的音乐可视化系列小项目(04)---WS2812条灯
  项目之一: 使用KY—038声音模块的阙值触发WS2812节奏灯条


  实验视频剪辑

https://v.youku.com/v_show/id_XNTgxMTgxMjMwOA==.html?firsttime=0



回复 支持 反对

使用道具 举报

发表于 2021-10-8 14:03:38 来自手机浏览器 | 显示全部楼层
这个灯是随音乐变化改变颜色和亮度吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-8 13:51:41 | 显示全部楼层
  【花雕动手做】有趣好玩的音乐可视化系列小项目(04)---WS2812条灯
  项目之一: 使用KY—038声音模块的阙值触发WS2812节奏灯条

  实验场景图



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-8 13:20:46 | 显示全部楼层
  【花雕动手做】有趣好玩的音乐可视化系列小项目(04)---WS2812条灯
  项目之一: 使用KY—038声音模块的阙值触发WS2812节奏灯条

  实验开源代码

  1. /*
  2.   【花雕动手做】有趣好玩的音乐可视化系列小项目(04)---WS2812条灯
  3.   项目之一: 使用KY—038声音模块的阙值触发WS2812节奏灯条
  4. */

  5. #include<FastLED.h>
  6. #define LED_PIN 6
  7. #define NUM_LEDS 8

  8. CRGB leds[NUM_LEDS];
  9. uint8_t hue = 0;
  10. int soundsensor = 7;

  11. void setup() {
  12.   delay(2000);
  13.   Serial.begin(9600);
  14.   FastLED.addLeds<WS2812B, LED_PIN, GRB>(leds, NUM_LEDS);
  15.   FastLED.setBrightness(255);
  16.   pinMode(soundsensor, INPUT);
  17. }

  18. void loop() {
  19.   int sensval = digitalRead(soundsensor);

  20.   if (sensval == 1) {
  21.     Serial.println("ON");
  22.     leds[0] = CRGB :: Red;
  23.     fill_solid(leds, NUM_LEDS, CRGB :: Blue);
  24.     rainbow_moving();
  25.     FastLED.show();
  26.     delay(10);
  27.   }
  28.   else {
  29.     leds[0] = CRGB :: Black;
  30.     fill_solid(leds, NUM_LEDS, CRGB :: Black);
  31.     FastLED.show();
  32.     delay(10);
  33.   }
  34. }

  35. void rainbow_moving() {
  36.   for (int i = 0; i < NUM_LEDS; i++) {
  37.     leds[i] = CHSV(hue + (i * 10), 255, 255);
  38.   }
  39.   EVERY_N_MILLISECONDS(10) {
  40.     hue++;
  41.   }
  42. }
复制代码


回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-8-2 22:32 , Processed in 0.171600 second(s), 10 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表