【花雕动手做】有趣好玩音乐可视化系列(17)--光导纤维灯
2022-08-162.9万
AI 快速预览详细
本文介绍了如何使用50米光导纤维制作音乐可视化灯。项目从最简单的方案开始,逐步积累音乐频谱可视化的实用资料。涉及复杂的FFT和FHT算法,适合零基础新手尝试。最终效果是将音频信号转换为视觉效果,就像一场光影秀。
偶然心血来潮,想要做一个声音可视化的系列专题。这个专题的难度有点高,涉及面也比较广泛,相关的FFT和FHT等算法也相当复杂,不过还是打算从最简单的开始,实际动手做做试验,耐心尝试一下各种方案,逐步积累些有用的音乐频谱可视化的资料,也会争取成型一些实用好玩的音乐可视器项目。这回在网上采购了50米的光导纤维,想试试作为音乐灯是否可行,不过收到快递时还是吓我一跳,太细太迷你了。![]() |





https://mc.dfrobot.com.cn/thread-311167-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(2)---OLED频谱灯
https://mc.dfrobot.com.cn/thread-311174-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(3)---RGB律动灯
https://mc.dfrobot.com.cn/thread-311183-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(4)---WS2812条灯
https://mc.dfrobot.com.cn/thread-311190-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(5)---WS2812柱跳灯
https://mc.dfrobot.com.cn/thread-311192-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(6)---点阵频谱灯
https://mc.dfrobot.com.cn/thread-311201-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(7)---大方格频谱灯
https://mc.dfrobot.com.cn/thread-311364-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(8)---四位32段点阵屏
https://mc.dfrobot.com.cn/thread-311490-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(9)---X Music Spectrum
https://mc.dfrobot.com.cn/thread-311627-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(10)---WS2812硬板屏
https://mc.dfrobot.com.cn/thread-311641-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(11)---WS2812幻彩灯带
https://mc.dfrobot.com.cn/thread-313648-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(12)---米管快速节奏灯
https://mc.dfrobot.com.cn/thread-313708-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(13)---有机棒立柱灯
https://mc.dfrobot.com.cn/thread-313723-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(14)---水杯水瓶灯
https://mc.dfrobot.com.cn/thread-313803-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(15)--横排LED方管灯
https://mc.dfrobot.com.cn/thread-313811-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(16)--热干胶棒棒灯
https://mc.dfrobot.com.cn/thread-313844-1-1.html
【花雕动手做】有趣好玩音乐可视化系列(17)--光导纤维灯
https://mc.dfrobot.com.cn/thread-313867-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(18)--LED平面板灯
https://mc.dfrobot.com.cn/thread-313951-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(19)--通体光纤灯
https://mc.dfrobot.com.cn/thread-313962-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(20)--首饰盒镜子灯
https://mc.dfrobot.com.cn/thread-313969-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(21)--CD 光盘灯
https://mc.dfrobot.com.cn/thread-313984-1-1.html
【花雕动手做】看见声音,基于Arduino系列音乐可视器(22)--LED无限魔方
https://mc.dfrobot.com.cn/thread-313994-1-1.html
【花雕动手做】有趣好玩的音乐可视化(23)--3合1闪点光纤
https://mc.dfrobot.com.cn/thread-314168-1-1.html
【花雕动手做】有趣好玩的音乐可视化(24)--无限LED镜子灯
https://mc.dfrobot.com.cn/thread-314180-1-1.html
【花雕动手做】有趣好玩音乐可视化(25)--水龙卷旋涡灯
https://mc.dfrobot.com.cn/thread-314231-1-1.html
【花雕动手做】有趣好玩音乐可视化系列(26)--LED 超立方体
https://mc.dfrobot.com.cn/thread-314244-1-1.html
【花雕动手做】有趣好玩的音乐可视化(27)--磁搅LED水旋灯
https://mc.dfrobot.com.cn/thread-314273-1-1.html
https://v.youku.com/v_show/id_XNTg5NDMyMDIyNA==.html?spm=a2hcb.playlsit.page.1
[media=x,500,375]https://v.youku.com/v_show/id_XNTg5NDMyMDIyNA==.html?spm=a2hcb.playlsit.page.1[/media]
话说回来,上次那个胶棒直接横着粘在灯带上,几十根胶棒排成一排效果会更惊艳
图示是一根胶棒,这样的胶棒像你之前做有机玻璃棒那样排成一排
https://v.youku.com/v_show/id_XNTg5NDMxMTIwMA==.html?spm=a2hcb.playlsit.page.1
[media=x,500,375]https://v.youku.com/v_show/id_XNTg5NDMxMTIwMA==.html?spm=a2hcb.playlsit.page.1[/media]
项目程序之三:光纤音乐反应灯
[code]/*
【花雕动手做】有趣好玩的音乐可视化系列小项目(17)--光导纤维灯
项目程序之三:光纤音乐反应灯
*/
#define FASTLED_INTERRUPT_RETRY_COUNT 0
//#define FASTLED_ESP8266_RAW_PIN_ORDER
#include
#define NUM_LEDS 4
CRGB leds[NUM_LEDS];
const int ledPin = 6;
int sensorPin = 7;
boolean val = 0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(sensorPin, INPUT);
FastLED.addLeds
}
void loop () {
val = digitalRead(sensorPin);
Serial.println (val);
if (val == HIGH) {
leds[0] = CRGB(250, 0, 0);
FastLED.show();
delay(8);
leds[1] = CRGB(0, 250, 0);
FastLED.show();
delay(8);
leds[2] = CRGB(0, 0, 250);
FastLED.show();
delay(8);
leds[3] = CRGB(250, 0, 250);
FastLED.show();
delay(8);
}
else {
leds[4] = CRGB(250, 20, 20);
FastLED.show();
}
FastLED.clear();
}[/code]
项目程序之二:使用FastLED库的简易流动变色
[code]/*
【花雕动手做】有趣好玩的音乐可视化系列小项目(17)--光导纤维灯
项目程序之二:使用FastLED库的简易流动变色
*/
#include
#define LED_PIN 6
#define NUM_LEDS 4
CRGB leds[NUM_LEDS];
void setup() {
FastLED.addLeds
}
void loop() {
for (int i = 0; i <= 3; i++) {
leds[i] = CRGB ( 0, 0, 255);
FastLED.show();
delay(80);
}
for (int i = 3; i >= 0; i--) {
leds[i] = CRGB ( 220, 0, 0);
FastLED.show();
delay(80);
}
for (int i = 0; i <= 3; i++) {
leds[i] = CRGB ( 0, 230, 0);
FastLED.show();
delay(80);
}
for (int i = 3; i >= 0; i--) {
leds[i] = CRGB ( 150, 50, 0);
FastLED.show();
delay(80);
}
}[/code]
项目程序之一:简单测试的呼吸灯
[code]/*
【花雕动手做】有趣好玩的音乐可视化系列小项目(17)--光导纤维灯
项目程序之一:简单测试的呼吸灯
*/
#include
#define PIN 6
#define MAX_LED 4
#define ADD true
#define SUB false
int val = 0;
boolean stat = ADD;
Adafruit_NeoPixel strip = Adafruit_NeoPixel( MAX_LED, PIN, NEO_RGB + NEO_KHZ800 );
void setup() {
strip.begin();
strip.show();
}
void loop() {
uint32_t color = strip.Color(val, val, val);
strip.setPixelColor(0, color);
if (val >= 235)
stat = SUB;
if (val <= 0)
stat = ADD;
strip.show();
delay(15);
if (stat == SUB) val --;
else if (stat == ADD) val++;
}[/code]
1、折射率
折射率可以用来计算在物质里的光线速度。在真空里,及外太空,光线的传播速度最快,大约为3亿米/秒。一种物质的折射率是真空光速除以光线在这物质里传播的速度。所以,根据定义,真空折射率是1。折射率越大,光线传播的速度越慢。通常光纤的核心的折射率是1.48,包覆的折射率是1.46。所以,光纤传导信号的速度粗算大约为2亿米/秒。电话信号,经过光纤传导,从纽约到悉尼,大约12000公里距离,会有最低0.06秒时间的延迟。
2、全内反射
镭射的反弹于一根压克力棍内部,显示出光线的全反射。
当移动于密度较高的介质的光线,以大角度入射于核心-包覆边界时,假若这入射角(光线与边界面的法线之间的夹角)的角度大于临界角的角度,则这光线会被完全地反射回去。光纤就是应用这种效应来局限传导光线于核心。在光纤内部传播的光线会被边界反射过来,反射过去。由于光线入射于边界的角度必须大于临界角的角度,只有在某一角度范围内射入光纤的光线,才能够通过整个光纤,不会泄漏损失。这角度范围称为光纤的受光锥角(英语:acceptance cone),是光纤的核心折射率与包覆折射率的差值的函数。
光纤是圆柱形的介质波导,应用全内反射原理来传导光线。光纤的结构大致分为里面的纤芯部分与外面的包覆部分。为了要局限光信号于纤芯,包层的折射率必须小于纤芯的折射率。渐变光纤(英语:graded-index fiber)的折射率是缓慢改变的,从轴心到包覆,逐渐地减小;而突变光纤(英语:step-index profile)在核心-包覆边界区域的折射率是急剧改变的。图为各种各样的光纤。
[backcolor=rgb(255, 255, 255)][font="]VCC---这个引脚需要由一个5V-7V的直流电源接入。电压过高(7V)的话会烧毁LED,电压太低(5V)的话则会造成亮度过低,甚至造成LED不工作。[/font][/backcolor]
[backcolor=rgb(255, 255, 255)][font="]GND---公共引脚,接地,即接电源的负极。[/font][/backcolor]
[backcolor=rgb(255, 255, 255)][font="]IN---微控制器(或者是另外一个WS2812)的数据从这个引脚传入LED。[/font][/backcolor]
[backcolor=rgb(255, 255, 255)][font="]OUT---数据从这里输出给下一级的WS2812,如果这个WS2812是最后一级,则可直接悬空此引脚。[/font][/backcolor]
[backcolor=rgb(255, 255, 255)][font="]
[/font][/backcolor]