eagler8

  • 2021-10-21
  • 回复了主题帖: 【花雕动手做】有趣好玩的音乐可视化系列小项目(02)---OLED频谱灯

    w494143467 发表于 2021-10-20 17:08 这效果非常不错呀!可费心思了吧!
    谢谢鼓励,研究学习了很久。。。。

  • 2021-10-17
  • 回复了主题帖: 【花雕动手做】有趣好玩的音乐可视化系列小项目(06)---点阵频谱灯

    dcexpert 发表于 2021-10-16 20:00 和老外这个对比一下     https://learn.adafruit.com/mini-led-matrix-audio-visua ...
    谢谢老师,查到老外这块13x9 IS31FL3741 LED 矩阵屏幕了,15美元,国内还没有(淘宝上没搜到)   与常规的 8x8 DotStar 网格不同,这些不是 NeoPixel 或 DotStar 或其他“智能”RGB LED。不是在每个 LED 中都有一个小芯片,而是一个大型控制器芯片,可以为您处理所有 PWM。ISSI IS32FL3741 通过 I2C 进行通信,并且可以使用 8 位 PWM 设置每个 LED 元件,以获得 RGB 元件的 24 位颜色,以获得美丽的色彩!有一个可调节的电流驱动器,因此您可以在不损失色彩分辨率的情况下使整个显示器变亮或变暗。

  • 2021-10-13
  • 回复了主题帖: 【花雕动手做】有趣好玩的音乐可视化系列小项目(06)---点阵频谱灯

      【花雕动手做】音乐可视化系列小项目(06)---点阵频谱灯    十六段arduinoFFT高速频谱灯      实验场景动态图  

  • 回复了主题帖: 【花雕动手做】有趣好玩的音乐可视化系列小项目(06)---点阵频谱灯

      【花雕动手做】音乐可视化系列小项目(06)---点阵频谱灯    十六段arduinoFFT高速频谱灯      实验视频剪辑   https://v.youku.com/v_show/id_XNTgxMzAxMzcxMg==.html?firsttime=0    

  • 回复了主题帖: 【花雕动手做】有趣好玩的音乐可视化系列小项目(06)---点阵频谱灯

      【花雕动手做】音乐可视化系列小项目(06)---点阵频谱灯    十六段arduinoFFT浮点频谱灯    实验场景动态图  

  • 回复了主题帖: 【花雕动手做】有趣好玩的音乐可视化系列小项目(06)---点阵频谱灯

      【花雕动手做】音乐可视化系列小项目(06)---点阵频谱灯    十六段arduinoFFT浮点频谱灯      实验视频剪辑   https://v.youku.com/v_show/id_XNTgxMzAwMzEyOA==.html?firsttime=0    

  • 回复了主题帖: 【花雕动手做】有趣好玩的音乐可视化系列小项目(06)---点阵频谱灯

      【花雕动手做】音乐可视化系列小项目(06)---点阵频谱灯    项目之三:arduinoFFT浮点频谱灯      实验场景动态图  

  • 回复了主题帖: 【花雕动手做】有趣好玩的音乐可视化系列小项目(06)---点阵频谱灯

      【花雕动手做】音乐可视化系列小项目(06)---点阵频谱灯    项目之三:arduinoFFT浮点频谱灯      实验视频剪辑   https://v.youku.com/v_show/id_XNTgxMjk4ODQyMA==.html?firsttime=0        

  • 回复了主题帖: 【花雕动手做】有趣好玩的音乐可视化系列小项目(06)---点阵频谱灯

      【花雕动手做】音乐可视化系列小项目(06)---点阵频谱灯    项目之三:arduinoFFT浮点频谱灯      实验开源代码   /* 【花雕动手做】音乐可视化系列小项目(06)---点阵频谱灯 项目之三:arduinoFFT浮点频谱灯 */ #include <arduinoFFT.h> #include <MD_MAX72xx.h> #include <SPI.h> #define SAMPLES 64 #define HARDWARE_TYPE MD_MAX72XX::FC16_HW #define MAX_DEVICES 4 #define CLK_PIN 13 #define DATA_PIN 11 #define CS_PIN 10 #define xres 32 #define yres 8 int MY_ARRAY[]={0, 128, 192, 224, 240, 248, 252, 254, 255}; int MY_MODE_1[]={0, 128, 192, 224, 240, 248, 252, 254, 255}; int MY_MODE_2[]={0, 128, 64, 32, 16, 8, 4, 2, 1}; int MY_MODE_3[]={0, 128, 192, 160, 144, 136, 132, 130, 129}; int MY_MODE_4[]={0, 128, 192, 160, 208, 232, 244, 250, 253}; int MY_MODE_5[]={0, 1, 3, 7, 15, 31, 63, 127, 255}; double vReal[SAMPLES]; double vImag[SAMPLES]; char data_avgs[xres]; int yvalue; int displaycolumn , displayvalue; int peaks[xres]; const int buttonPin = 2; int state = HIGH; int previousState = LOW; int displaymode = 1; unsigned long lastDebounceTime = 0; unsigned long debounceDelay = 50; MD_MAX72XX mx = MD_MAX72XX(HARDWARE_TYPE, CS_PIN, MAX_DEVICES); arduinoFFT FFT = arduinoFFT(); void setup() { ADCSRA = 0b11100101; ADMUX = 0b00000000; pinMode(buttonPin, INPUT); mx.begin(); delay(50); } void loop() { // ++ Sampling for(int i=0; i<SAMPLES; i++) { while(!(ADCSRA & 0x10)); ADCSRA = 0b11110101 ; int value = ADC - 512 ; vReal[i]= value/8; vImag[i] = 0; } FFT.Windowing(vReal, SAMPLES, FFT_WIN_TYP_HAMMING, FFT_FORWARD); FFT.Compute(vReal, vImag, SAMPLES, FFT_FORWARD); FFT.ComplexToMagnitude(vReal, vImag, SAMPLES); int step = (SAMPLES/2)/xres; int c=0; for(int i=0; i<(SAMPLES/2); i+=step) { data_avgs[c] = 0; for (int k=0 ; k< step ; k++) { data_avgs[c] = data_avgs[c] + vReal[i+k]; } data_avgs[c] = data_avgs[c]/step; c++; } for(int i=0; i<xres; i++) { data_avgs[i] = constrain(data_avgs[i],0,80); data_avgs[i] = map(data_avgs[i], 0, 80, 0, yres); yvalue=data_avgs[i]; peaks[i] = peaks[i]-1; if (yvalue > peaks[i]) peaks[i] = yvalue ; yvalue = peaks[i]; displayvalue=MY_ARRAY[yvalue]; displaycolumn=15-i; mx.setColumn(displaycolumn, displayvalue); } displayModeChange (); } void displayModeChange() { int reading = digitalRead(buttonPin); if (reading == HIGH && previousState == LOW && millis() - lastDebounceTime > debounceDelay) { switch (displaymode) { case 1: displaymode = 2; for (int i=0 ; i<=8 ; i++ ) { MY_ARRAY[i]=MY_MODE_2[i]; } break; case 2: displaymode = 3; for (int i=0 ; i<=8 ; i++ ) { MY_ARRAY[i]=MY_MODE_3[i]; } break; case 3: displaymode = 4; for (int i=0 ; i<=8 ; i++ ) { MY_ARRAY[i]=MY_MODE_4[i]; } break; case 4: displaymode = 5; for (int i=0 ; i<=8 ; i++ ) { MY_ARRAY[i]=MY_MODE_5[i]; } break; case 5: displaymode = 1; for (int i=0 ; i<=8 ; i++ ) { MY_ARRAY[i]=MY_MODE_1[i]; } break; } lastDebounceTime = millis(); } previousState = reading; }  

  • 回复了主题帖: 【花雕动手做】有趣好玩的音乐可视化系列小项目(06)---点阵频谱灯

       实验场景动态图    

  • 回复了主题帖: 【花雕动手做】有趣好玩的音乐可视化系列小项目(06)---点阵频谱灯

     【花雕动手做】音乐可视化系列小项目(06)---点阵频谱灯    项目之十六段音乐可视化动态频谱仪(使用FFT算法)      实验视频剪辑   https://v.youku.com/v_show/id_XNTgxMjkxMjkxNg==.html?firsttime=0    

  • 回复了主题帖: 【花雕动手做】有趣好玩的音乐可视化系列小项目(06)---点阵频谱灯

    jobszheng5 发表于 2021-10-13 10:11 看上去还挺有意思的呀
    谢谢老师的鼓励

  • 回复了主题帖: 【花雕动手做】有趣好玩的音乐可视化系列小项目(06)---点阵频谱灯

       实验场景动态图  

  • 回复了主题帖: 【花雕动手做】有趣好玩的音乐可视化系列小项目(06)---点阵频谱灯

    本帖最后由 eagler8 于 2021-10-13 13:20 编辑  【花雕动手做】音乐可视化系列小项目(06)---点阵频谱灯    项目之二:FFT算法,八段音乐可视化动态频谱仪      实验视频剪辑   https://v.youku.com/v_show/id_XNTgxMjkwMjA5Ng==.html?spm=a2hcb.playlsit.page.1          

  • 回复了主题帖: 【花雕动手做】有趣好玩的音乐可视化系列小项目(06)---点阵频谱灯

     【花雕动手做】音乐可视化系列小项目(06)---点阵频谱灯    项目之二:FFT算法,八段音乐可视化动态频谱仪      实验开源代码   /* 【花雕动手做】音乐可视化系列小项目(06)---点阵频谱灯 项目之二:FFT算法,八段音乐可视化动态频谱仪 */ #include <arduinoFFT.h> #include <MD_MAX72xx.h> #include <SPI.h> MD_MAX72XX disp = MD_MAX72XX(MD_MAX72XX::FC16_HW, 10, 4); arduinoFFT FFT = arduinoFFT(); double realComponent[64]; double imagComponent[64]; int spectralHeight[] = {0b00000000,0b10000000,0b11000000, 0b11100000,0b11110000,0b11111000, 0b11111100,0b11111110,0b11111111}; int index, c, value; void setup() { disp.begin(); Serial.begin(9600); } void loop() { int sensitivity = map(analogRead(A6),0,1023,50,100); Serial.println (analogRead(A6)); for(int i=0; i<64; i++) { realComponent[i] = analogRead(A7)/sensitivity; imagComponent[i] = 0; } FFT.Windowing(realComponent, 64, FFT_WIN_TYP_HAMMING, FFT_FORWARD); FFT.Compute(realComponent, imagComponent, 64, FFT_FORWARD); FFT.ComplexToMagnitude(realComponent, imagComponent, 64); for(int i=0; i<32; i++) { realComponent[i] = constrain(realComponent[i],0,80); realComponent[i] = map(realComponent[i],0,80,0,8); index = realComponent[i]; value = spectralHeight[index]; c = 31 - i; disp.setColumn(c, value); } }  

  • 回复了主题帖: 【花雕动手做】有趣好玩的音乐可视化系列小项目(06)---点阵频谱灯

     【花雕动手做】音乐可视化系列小项目(06)---点阵频谱灯    项目之两位点阵屏八段分频音乐频谱仪      实验视频剪辑   https://v.youku.com/v_show/id_XNTgxMjgzMTQ5Mg==.html?firsttime=0    

  • 回复了主题帖: 【花雕动手做】有趣好玩的音乐可视化系列小项目(06)---点阵频谱灯

    实验场景动态图  

  • 回复了主题帖: 【花雕动手做】有趣好玩的音乐可视化系列小项目(06)---点阵频谱灯

    jobszheng5 发表于 2021-10-13 09:10 楼主 厉害了。 我一直觉得arduino也就是玩一玩简单的
    谢谢老师的鼓励,比较敢于去尝试而已

  • 回复了主题帖: 【花雕动手做】有趣好玩的音乐可视化系列小项目(06)---点阵频谱灯

     【花雕动手做】音乐可视化系列小项目(06)---点阵频谱灯    项目之一:两位点阵屏八段分频音乐频谱仪    实验场景图    

  • 2021-10-12
  • 回复了主题帖: 【花雕动手做】有趣好玩的音乐可视化系列小项目(06)---点阵频谱灯

       实验场景动态图  

统计信息

已有92人来访过

  • 芯积分:1761
  • 好友:2
  • 主题:53
  • 回复:1538
  • 课时:--
  • 资源:--

留言

你需要登录后才可以留言 登录 | 注册


eagler8 2020-4-8
   你都搜到什么了? 我的微信13805010660,加你了
9zhmke 2020-4-8
刚去网上搜了下,搞不好你比我大.....我72年的,加个好友吧,我QQ693985,微信msold5
9zhmke 2020-4-8
eagler8:    老师早上好,我是偶然爱好的,没有什么基础,呵呵
你的时间安排上有没有精力做其他东西呢?
9zhmke 2020-4-7
eagler8: 中午好
下午好,你的干劲好足啊,是你的工作还是因为你是学生呢?有兴趣一起做些东西吗?我有挺多想法,但总是没有时间弄。
查看全部