数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 2172|回复: 89

[other] 【Arduino】168种传感器系列实验(214)---8x32位全彩WS2812B屏

[复制链接]
发表于 2022-10-21 18:01:18 | 显示全部楼层 |阅读模式
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百一十四:WS2812B全彩RGB像素屏 8x32点阵LED显示屏 可编程硬屏模块



本帖子中包含更多资源

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

x

打赏

参与人数 1家元 +20 收起 理由
玛德陛下 + 20 認真發帖

查看全部打赏

发表于 2023-2-22 15:01:12 | 显示全部楼层
感谢分享,坚持更新分享不容易。
回复 支持 反对

使用道具 举报

发表于 2023-2-16 22:35:55 | 显示全部楼层
eagler8 发表于 2022-10-21 18:15
WS2812B灯屏电原理参考图

感谢分享 学习学习
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-17 07:15:30 | 显示全部楼层
实验场景图  动态图


本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-16 10:32:54 | 显示全部楼层
实验场景图  动态图


本帖子中包含更多资源

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

x
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-11-16 10:31:54 | 显示全部楼层
实验场景图



本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-16 10:04:11 | 显示全部楼层
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百七十七:Wemos D1 R32 ESP32开发板
  项目之四十二:WS2812FX库最简单的点亮形式

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验一百七十七:Wemos D1 R32 ESP32开发板
  4.   项目之四十二:WS2812FX库最简单的点亮形式
  5. */

  6. #include <WS2812FX.h> //导入库
  7. #define LED_COUNT 256 //WS2812B LED数量
  8. #define LED_PIN    23 //WS2812B LED接脚

  9. WS2812FX ws2812fx = WS2812FX(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);

  10. void setup() {
  11.   ws2812fx.init(); //初始化
  12.   ws2812fx.setBrightness(35); //设置亮度(0-255),可以控制总电流(重要!)
  13.   ws2812fx.setSpeed(100); // 设置速度
  14.   ws2812fx.setMode(FX_MODE_FIREWORKS_RANDOM);// 设置模式(内置63种模式)
  15.   ws2812fx.start(); //启动
  16. }

  17. void loop() {
  18.   ws2812fx.service(); //循环运行
  19. }
复制代码


回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-16 09:34:33 | 显示全部楼层
实验场景图


本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-16 09:31:28 | 显示全部楼层
使用ESP32控制
实验场景图  动态图




本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-7 18:12:32 | 显示全部楼层
Arduino 系列传感器和执行器模块实验目录清单:
【花雕动手做】有趣好玩的音乐可视化项目(01)---LED节奏灯
https://www.mydigit.cn/thread-278513-1-1.html
【花雕动手做】有趣好玩的音乐可视化项目(02)---OLED频谱灯
https://www.mydigit.cn/thread-278659-1-1.html
【花雕动手做】有趣好玩的音乐可视化项目(03)---RGB律动灯
https://www.mydigit.cn/thread-278910-1-1.html
【花雕动手做】有趣好玩的音乐可视化项目(04)---WS2812条灯
https://www.mydigit.cn/thread-279138-1-1.html
【花雕动手做】有趣好玩的音乐可视化项目(05)---WS2812柱跳灯
https://www.mydigit.cn/thread-279227-1-1.html
【花雕动手做】有趣好玩的音乐可视化项目(06)---点阵频谱灯
https://www.mydigit.cn/thread-279412-1-1.html
【花雕动手做】有趣好玩的音乐可视化系列小项目(07)---大方格频谱灯
https://www.mydigit.cn/thread-283363-1-1.html
【花雕动手做】有趣好玩的音乐可视化系列小项目(08)---四位32段点阵屏
https://www.mydigit.cn/thread-286035-1-1.html
【花雕动手做】有趣好玩音乐可视化项目(09)--X Music Spectrum
https://www.mydigit.cn/thread-289124-1-1.html
【花雕动手做】有趣好玩的音乐可视化系列小项目(10)---WS2812硬板屏
https://www.mydigit.cn/thread-289553-1-1.html

【花雕动手做】用快餐盒盖搭建极低成本的多种运动方式实验平台/机器人
https://www.mydigit.cn/thread-227134-1-1.html
【花雕动手做】超低成本,尝试做个五十元的麦克纳姆轮小车!
https://www.mydigit.cn/thread-220131-1-1.html
【花雕动手做】太搞笑啦,一支胶管制成二只蠕动机器人
https://www.mydigit.cn/thread-226476-1-1.html
【花雕动手做】超迷你哦,用徽商香烟盒做个智能小车!
https://www.mydigit.cn/thread-222085-1-1.html
【花雕动手做】五花八门的简易机器人66种
https://www.mydigit.cn/thread-221775-1-1.html
【花雕动手做】特别苗条,使用微波人体感应模块控制的纤细机器人小车
https://www.mydigit.cn/forum.php?mod=viewthread&tid=244463
素人学习Aduino编程的简单办法
https://www.mydigit.cn/forum.php?mod=viewthread&tid=34316
Arduino 语法手册的五个版本
https://www.mydigit.cn/thread-35089-1-1.html
ESP8266 Arduino开发环境搭建的五个备选地址
https://www.mydigit.cn/thread-40541-1-1.html
只用一块扩展板完成Arduino的9类37项实验(代码+图形+仿真)
https://www.mydigit.cn/thread-44343-1-1.html

37种传感器实验(Arduino)记录每一次小小的进步
https://www.mydigit.cn/thread-35315-1-1.html
实验一百一十五: 震动马达模块 高低电平振动小电机 智能可穿戴式产品震动提醒模块
https://www.mydigit.cn/thread-76804-1-1.html
实验一百一十六:NRF24L01+ 无线模块 功率加强版 2.4G无线收发通信模块 黑金刚
https://www.mydigit.cn/thread-76843-1-1.html
实验一百一十七:蓝色诺基亚5110屏 LCD液晶屏模块 兼容3310 LCD
https://www.mydigit.cn/thread-77142-1-1.html
实验一百一十八:US-015 高分辨超声波测距模块 超声波传感器 US-020升级版
https://www.mydigit.cn/thread-77594-1-1.html
实验一百一十九:HB100微波雷达感应模块 10.525GHz多普勒探测器探头传感器
https://www.mydigit.cn/thread-78082-1-1.html
实验一百二十: SIM800L GPRS 转接板GSM模块 microSIM卡带天线4频通讯模块
https://www.mydigit.cn/thread-75498-1-1.html
实验一百二十一:五向导航按键模块 5D摇杆 单片机 独立键盘开关 按钮 Your Cee
https://www.mydigit.cn/thread-78274-1-1.html
实验一百二十二: BBC microbit micro:bit,bit go,bit club python图形编程开发板
https://www.mydigit.cn/thread-76145-1-1.html
实验一百二十三: P10单红V706模组  32*16单元板LED显示屏
https://www.mydigit.cn/thread-78460-1-1.html
实验一百二十四: PS2鼠标 键盘插座接口 PS2模块
https://www.mydigit.cn/thread-78589-1-1.html
实验一百二十五: 升级版 WeMos D1 R2 WiFi UNO 开发板 基于ESP8266
https://www.mydigit.cn/thread-78843-1-1.html
实验一百二十六:JQ6500语音模块 MP3模块 MCU串口控制播报 一对一5路控制 音乐IC
https://www.mydigit.cn/thread-79043-1-1.html
实验一百二十七:JoyStick Shield PS2游戏摇杆扩展板 模拟键盘鼠标功能 大摇杆
https://www.mydigit.cn/thread-79290-1-1.html
实验一百二十八:日本夏普SHARP PM2.5 灰尘/粉尘传感器 GP2Y1014AU0F 带线
https://www.mydigit.cn/thread-79385-1-1.html
实验一百二十九:GY-302 数字量光强度检测 光照传感器 BH1750FVI 光线检测模块
https://www.mydigit.cn/thread-79661-1-1.html
实验一百三十:XD-203多功能扩展板Multi-function Shield模块(12合1版)
https://www.mydigit.cn/thread-79777-1-1.html
实验一百三十一:24位 WS2812 5050 RGB LED 内置全彩驱动彩灯 圆形开发板
https://www.mydigit.cn/thread-80667-1-1.html
实验一百三十二:WT588D语音模块 语音芯片 可反复擦写高音质语音下载16P-16M 蓝板HW-708
https://www.mydigit.cn/thread-81018-1-1.html
实验一百三十三:夏普GP2Y0A02YK0F 红外测距传感器模块 20-150cm 距离传感器
https://www.mydigit.cn/thread-81360-1-1.html
实验一百三十四:2004A液晶屏 20X4 J204A字符显示液晶模块 204A LCD/LCM 蓝屏5V(带背光 IIC/I2C)
https://www.mydigit.cn/thread-81914-1-1.html
实验一百三十五:ESP8266机智云开发板 ESP12F wifi模块(支持云端的智能硬件开发套件)
https://www.mydigit.cn/thread-82229-1-1.html
实验一百三十六:基于STM32F103RCT6及多种传感器的UFUN2.0升级开发板
https://www.mydigit.cn/thread-100457-1-1.html
实验一百三十七:IIC I2C电平转换模块 5-3v系统兼容 2路
https://www.mydigit.cn/thread-121468-1-1.html
实验一百三十八:中文TTS文本转语音合成模块 替代SYN6288和XFS5152
https://www.mydigit.cn/thread-121781-1-1.html
实验一百三十九:电流互感器模块 5A量程 单相 交流电流传感器模块
https://www.mydigit.cn/thread-122217-1-1.html
实验一百四十:YL-004老款20按键独立键盘 跑马灯矩阵键盘模块
(4*4矩阵键盘+4位独立按键+8位跑马灯组合模块)
https://www.mydigit.cn/thread-122307-1-1.html
实验一百四十一:KY-027 魔术光杯 for UNO 魔术光环模块
https://www.mydigit.cn/thread-122579-1-1.html
实验一百四十二:LCD1602 字符液晶屏 输入输出扩展板 LCD Keypad Shield
https://www.mydigit.cn/thread-123105-1-1.html
实验一百四十三:I2C接口I/O扩展模块 支持级联PCF8574T模块
https://www.mydigit.cn/thread-127953-1-1.html
实验一百四十四:Ethernet W5100S 网络扩展板 SD卡扩展模块 支持MEGA
https://www.mydigit.cn/thread-130504-1-1.html
实验一百四十五:0.91寸OLED液晶屏显示模块 IIC 12832液晶屏 兼容3.3v-5V
https://www.mydigit.cn/thread-124905-1-1.html
实验一百四十六:MT8870 DTMF语音解码板模块 电话拨号控制音频解码处理电路
https://www.mydigit.cn/thread-128475-1-1.html
实验一百四十七:64位 WS2812B 8x8 RGB 5050 LED模块 ws2812s像素点阵屏
https://www.mydigit.cn/thread-127681-1-1.html
实验一百四十八:E18-D80NK 漫反射式红外光电开关避障传感器模块
https://www.mydigit.cn/thread-126831-1-1.html
实验一百四十九:MAX3232电平转TTL电平转换板 mini RS232 MCU串口转换模块
https://www.mydigit.cn/thread-126424-1-1.html
实验一百五十:AS608光学指纹识别模块 智能锁/考勤门禁开发/指纹采集模块
https://www.mydigit.cn/thread-124272-1-1.html
实验一百五十一:ESP-32掌控板 盛思 MicroPython微控制器开发板
https://www.mydigit.cn/thread-136590-1-1.html
实验一百五十二:GY-25 串口直接输出角度数据 倾斜度角度传感器模块 MPU-6050
https://www.mydigit.cn/thread-218333-1-1.html
实验一百五十三:Maixduino AI开发板 k210 RISC-V AI+lOT ESP32视觉听觉开发套装
https://www.mydigit.cn/thread-129551-1-1.html
实验一百五十四:ML8511紫外线传感器模块  模拟量输出UV Sensor Breakou
https://www.mydigit.cn/thread-143285-1-1.html
实验一百五十五:KA2284 电平指示模块 5点LED电量/音频音乐旋律显示器
https://www.mydigit.cn/thread-223567-1-1.html
实验一百五十六:恒压型LED无级触摸调光PWM控制板 电容式触摸开关器模块
https://www.mydigit.cn/thread-223681-1-1.html
实验一百五十七:SG3525 PWM控制器模块 频率可调 占空比可调 波形发生器
https://www.mydigit.cn/thread-129257-1-1.html
实验一百五十八:QMC5883L电子指南针罗盘模块 三轴磁场传感器GY-271
https://www.mydigit.cn/thread-230781-1-1.html
实验一百五十九:MAX9814麦克风放大器模块 MIC话筒声音放大/咪头传感器 CMA-4544PF-W
https://www.mydigit.cn/thread-129060-1-1.html
实验一百六十二:S12SD紫外线传感器模块太阳光强度检测传感器模块高灵敏LM358放大
https://www.mydigit.cn/thread-143194-1-1.html
实验一百六十四:Seeeduino Lotus开发板 传感器9件套 主板+扩展板二合一https://www.mydigit.cn/thread-141403-1-1.html
实验一百七十:L293D四路电机驱动模块 扩展板 motor control shield 马达板
https://www.mydigit.cn/thread-205585-1-1.html
实验一百七十一:HLK-V20 AI智能离线语音识别模块 150条本地指令离线识别
https://www.mydigit.cn/thread-206726-1-1.html
实验一百七十二:MX1508 四通道双路有刷直流马达驱动模块 2路直流电机驱动模块 双H桥步进电机 正反转PWM调速
https://www.mydigit.cn/thread-216710-1-1.html
实验一百七十三:2262/2272四路无线遥控套件 M4非锁接收板 四键无线遥控器发射模块
https://www.mydigit.cn/thread-224877-1-1.html
实验一百七十四:DRV8833 电机驱动板模块 小体积高性能 2路直流电机驱动板 自平衡小车 代替TB6612FNG
https://www.mydigit.cn/thread-220662-1-1.html
实验一百七十五:LD3320 语音识别模块 非特定人声 语音控制 智能家居开发板
https://www.mydigit.cn/thread-225247-1-1.html
实验一百七十九:0.66英寸OLED显示模块 液晶屏模块IIC/I2C接口 64*48像素 SSD1306驱动芯片
https://www.mydigit.cn/thread-278724-1-1.html
实验二百零一:OPT101模拟光照传感器 TEMT6000光强度模块 单片光电二极管 YourCee
https://www.mydigit.cn/thread-278450-1-1.html
实验二百零七:I2C红色8*8LED点阵模块ht16k33驱动1088BS树莓派物联网可扩展编程
https://www.mydigit.cn/thread-274979-1-1.html
实验二百十一:LED 圆环内置IC全彩点控1-8-12-16-24-32 WS2812B 93灯 环形 圆盘
https://www.mydigit.cn/thread-342373-1-1.html
实验二百一十四:WS2812B全彩RGB像素屏 8x32点阵LED显示屏 可编程硬屏模块
https://www.mydigit.cn/thread-348881-1-1.html
实验二百一十六:WS2812B幻彩LED灯带 5V全彩灯条5050灯珠内置IC炫彩单点单控软灯条模块
https://www.mydigit.cn/thread-323872-1-1.html
实验二百一十七:EPD Eink 电子墨水显示器 SUNY 2.9 英寸 EPD 屏幕无线数字电子纸显示器模块  DEPG0290RWS800F6黑白红三色墨水屏(珠海三一科技)
https://www.mydigit.cn/thread-282165-1-1.html
实验二百一十八:1.3寸 TFT显示屏 ST7735S驱动240x240高清ips模块
https://www.mydigit.cn/thread-320866-1-1.html
实验二百一十九:INMP441全向麦克风模块 I2S接口 MEMS 高精度 低功耗 支持ESP32
https://www.mydigit.cn/thread-325234-1-1.html
实验二百二十:P6全彩LED模组 16X32显示屏单元板 P6-RGB-16X32-8S室内全彩8扫电子屏(HX-P6-16X32-A)
https://www.mydigit.cn/thread-352884-1-1.html

回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-28 05:21:54 | 显示全部楼层
mengfc 发表于 2022-10-27 20:16
这么好的帖子,顶起来。

谢谢鼓励
回复 支持 反对

使用道具 举报

发表于 2022-10-27 20:16:21 | 显示全部楼层
这么好的帖子,顶起来。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-27 20:07:02 | 显示全部楼层
实验场景图



本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-27 20:03:31 | 显示全部楼层
实验的视频记录
优酷:
B站:https://www.bilibili.com/video/B ... 87403d97f8d3cc0b7e5



回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-27 19:58:49 | 显示全部楼层
实验场景图  动态图



本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-27 19:52:31 | 显示全部楼层
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百一十四:WS2812B全彩RGB像素屏 8x32点阵LED显示屏 硬屏模块
  项目程序二十一:通过快速傅里叶变换在8*32灯板上显示频谱

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验二百一十四:WS2812B全彩RGB像素屏 8x32点阵LED显示屏 硬屏模块
  4.   项目程序二十一:通过快速傅里叶变换在8*32灯板上显示频谱
  5. */

  6. #include  "arduinoFFT.h"
  7. #include <FastLED.h>   

  8. #define NUM_LEDS 256   
  9. #define LED_TYPE WS2812
  10. #define COLOR_ORDER GRB

  11. arduinoFFT FFT = arduinoFFT();
  12. CRGB leds[NUM_LEDS];           

  13. #define CHANNEL A0
  14. #define DATA_PIN 6

  15. const uint8_t max_bright = 2;         
  16. const uint16_t samples = NUM_LEDS / 4;
  17. const byte halfsamples = samples / 2;  
  18. uint8_t gHue;                          
  19. int value;                             
  20. double vReal[samples];                 
  21. double vImag[samples];                 
  22. char toData[halfsamples];              

  23. int pointJump[halfsamples];
  24. int uJump[halfsamples];     
  25. int dJump[halfsamples];   

  26. int uValue;                 
  27. int dValue;                 
  28. int tValue;                 
  29. int toDown = 0;            
  30. uint8_t toDownSpeed = 3;   
  31. int pointDown = 0;         
  32. uint8_t pointDownSpeed = 9;

  33. void setup(){
  34.   delay(100);              
  35.   Serial.println("Ready");
  36.   FastLED.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
  37.   FastLED.setBrightness(max_bright);
  38. }

  39. void loop(){
  40.   FastLED.clear();                        
  41.   EVERY_N_MILLISECONDS(10) {
  42.     gHue += 10;  
  43.   }
  44.   for (int i = 0; i < samples; i++)        
  45.   {
  46.     value = analogRead(CHANNEL);
  47.     vReal[i] = value;      
  48.     vImag[i] = 0.0;         
  49.   }
  50.   
  51.   FFT.Windowing(vReal, samples, FFT_WIN_TYP_HAMMING, FFT_FORWARD);
  52.   FFT.Compute(vReal, vImag, samples, FFT_FORWARD);
  53.   FFT.ComplexToMagnitude(vReal, vImag, samples);
  54.   
  55.   for (int i = 0; i < halfsamples; i++)
  56.   {
  57.     toData[i] = vReal[i + halfsamples / 2];   
  58.     toData[i] = constrain(toData[i], 0, 100);
  59.     toData[i] = map(toData[i], 0, 100, 1, 7);
  60.   }
  61.   for (int i = 0; i < halfsamples; i++)
  62.   {
  63.     uValue = toData[i];   
  64.     uJump[i]++;            
  65.     if (uValue > uJump[i])
  66.     {
  67.       uValue = uJump[i];
  68.     }
  69.     else
  70.     {
  71.       uJump[i] = uValue;
  72.     }
  73.     dValue = uValue;
  74.     toDown++;                     
  75.     if (toDown % toDownSpeed == 0)
  76.     {
  77.       dJump[i]--;
  78.       toDown = 0;
  79.     }
  80.     if (dValue > pointJump[i])
  81.     {
  82.       dJump[i] = dValue;
  83.     }
  84.     else
  85.     {
  86.       dValue = dJump[i];
  87.     }
  88.     tValue = uValue;                     
  89.     pointDown++;                        
  90.     if (pointDown % pointDownSpeed == 0)
  91.     {
  92.       pointJump[i]--;
  93.       pointDown = 0;  
  94.     }
  95.     if (tValue > pointJump[i])
  96.     {
  97.       pointJump[i] = tValue;
  98.     }
  99.     else
  100.     {
  101.       tValue = pointJump[i];
  102.     }
  103.     fill_rainbow(leds + 8 * i, uValue, gHue, 30);
  104.     fill_rainbow(leds + 8 * i, dValue, gHue, 30);
  105.     fill_solid(leds + 8 * i + tValue, 1, CRGB::White);
  106.    
  107.   }
  108.   FastLED.show();
  109.   delay(10);      
  110. }
复制代码


回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-27 10:24:24 | 显示全部楼层
实验的视频记录
优酷:
B站:https://www.bilibili.com/video/B ... 87403d97f8d3cc0b7e5



回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-27 10:23:01 | 显示全部楼层
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百一十四:WS2812B全彩RGB像素屏 8x32点阵LED显示屏 硬屏模块
  项目程序二十:Arduino 和 FastLED多彩音乐灯

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验二百一十四:WS2812B全彩RGB像素屏 8x32点阵LED显示屏 硬屏模块
  4.   项目程序二十:Arduino 和 FastLED多彩音乐灯
  5. */

  6. #include <FastLED.h>
  7. #define SAMPLEPERIODUS 200
  8. #define MIC_PIN A0
  9. #define LED_DT 6
  10. #define COLOR_ORDER GRB
  11. #define LED_TYPE WS2812
  12. #define NUM_LEDS 256
  13. uint8_t max_bright = 33;
  14. struct CRGB leds[NUM_LEDS];
  15. CRGBPalette16 currentPalette = RainbowColors_p;
  16. CRGBPalette16 targetPalette;

  17. void setup() {
  18.   pinMode(LED_BUILTIN, OUTPUT);
  19.   LEDS.addLeds<LED_TYPE, LED_DT, COLOR_ORDER>(leds, NUM_LEDS);
  20.   FastLED.setBrightness(max_bright);
  21. }

  22. float bassFilter(float sample) {
  23.   static float xv[3] = {0, 0, 0}, yv[3] = {0, 0, 0};
  24.   xv[0] = xv[1]; xv[1] = xv[2];
  25.   xv[2] = sample / 9.1f;
  26.   yv[0] = yv[1]; yv[1] = yv[2];
  27.   yv[2] = (xv[2] - xv[0]) + (-0.7960060012f * yv[0]) + (1.7903124146f * yv[1]);
  28.   return yv[2];
  29. }

  30. float envelopeFilter(float sample) {
  31.   static float xv[2] = {0, 0}, yv[2] = {0, 0};
  32.   xv[0] = xv[1];
  33.   xv[1] = sample / 160.f;
  34.   yv[0] = yv[1];
  35.   yv[1] = (xv[0] + xv[1]) + (0.9875119299f * yv[0]);
  36.   return yv[1];
  37. }

  38. float beatFilter(float sample) {
  39.   static float xv[3] = {0, 0, 0}, yv[3] = {0, 0, 0};
  40.   xv[0] = xv[1]; xv[1] = xv[2];
  41.   xv[2] = sample / 7.015f;
  42.   yv[0] = yv[1]; yv[1] = yv[2];
  43.   yv[2] = (xv[2] - xv[0]) + (-0.7169861741f * yv[0]) + (1.4453653501f * yv[1]);
  44.   return yv[2];
  45. }

  46. void loop() {
  47.   unsigned long time = micros();
  48.   float sample, value, envelope, beat, thresh, micLev;
  49.   for (uint8_t i = 0; ; ++i) {
  50.     sample = (float)analogRead(MIC_PIN);
  51.     micLev = ((micLev * 67) + sample) / 68;
  52.     sample -= micLev;
  53.     value = bassFilter(sample);
  54.     value = abs(value);
  55.     envelope = envelopeFilter(value);
  56.     if (i == 200) {
  57.       beat = beatFilter(envelope);
  58.       thresh = 0.02f * 75.;

  59.       if (beat > thresh) {
  60.         digitalWrite(LED_BUILTIN, LOW);

  61.         int strt = random8(NUM_LEDS / 2);
  62.         int ende = strt + random8(NUM_LEDS / 2);
  63.         for (int i = strt; i < ende; i++) {
  64.           uint8_t index = inoise8(i * 30, millis() + i * 30);
  65.           leds[i] = ColorFromPalette(currentPalette, index, 255, LINEARBLEND);
  66.         }
  67.       } else {
  68.         digitalWrite(LED_BUILTIN, HIGH);
  69.       }
  70.       i = 0;
  71.     }

  72.     EVERY_N_SECONDS(5) {
  73.       uint8_t baseC = random8();
  74.       targetPalette = CRGBPalette16(CHSV(baseC + random8(32), 255, random8(128, 255)),
  75.                                     CHSV(baseC + random8(64), 255, random8(128, 255)),
  76.                                     CHSV(baseC + random8(64), 192, random8(128, 255)),
  77.                                     CHSV(baseC + random8(),   255, random8(128, 255)));
  78.     }

  79.     EVERY_N_MILLISECONDS(50) {
  80.       uint8_t maxChanges = 24;
  81.       nblendPaletteTowardPalette(currentPalette, targetPalette, maxChanges);
  82.     }

  83.     EVERY_N_MILLIS(50) {
  84.       fadeToBlackBy(leds, NUM_LEDS, 64);
  85.       FastLED.show();
  86.     }

  87.     for (unsigned long up = time + SAMPLEPERIODUS; time > 20 && time < up; time = micros()) {  }

  88.   } // for i
  89. } // loop()
复制代码


回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-24 09:33:13 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-24 09:28:22 | 显示全部楼层
实验场景图  动态图



本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

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

本版积分规则

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

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-6-22 05:09 , Processed in 0.249601 second(s), 13 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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