28117浏览
楼主: 驴友花雕

[ESP8266/ESP32] 最像Arduino Uno的ESP32开发板之WeMos D1 R32

[复制链接]

驴友花雕  中级技神
 楼主|

发表于 2022-11-16 15:36:03

实验场景图

最像Arduino Uno的ESP32开发板之WeMos D1 R32图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-11-16 20:56:53

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百七十七:Wemos D1 R32 ESP32开发板
  项目之四十五:WS2812b音乐反应灯

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验一百七十七:Wemos D1 R32 ESP32开发板
  4.   项目之四十五:WS2812b音乐反应灯
  5. */
  6. #include<FastLED.h>
  7. #define LED_PIN 23
  8. #define NUM_LEDS 256
  9. CRGB leds[NUM_LEDS];
  10. uint8_t hue = 0;
  11. int soundsensor = 39;
  12. void setup() {
  13.   delay(2000);
  14.   FastLED.addLeds<WS2812B, LED_PIN, GRB>(leds, NUM_LEDS);
  15.   FastLED.setBrightness(55);
  16.   pinMode(soundsensor, INPUT);
  17. }
  18. void loop() {
  19.   int sensval = digitalRead(soundsensor);
  20.   if (sensval == 1) {
  21.     leds[0] = CRGB :: Red;
  22.     fill_solid(leds, NUM_LEDS, CRGB :: Blue);
  23.     rainbow_moving();
  24.     FastLED.show();
  25.     delay(6);
  26.   }
  27.   else {
  28.     leds[0] = CRGB :: Black;
  29.     fill_solid(leds, NUM_LEDS, CRGB :: Black);
  30.     FastLED.show();
  31.     delay(6);
  32.   }
  33. }
  34. void rainbow_moving() {
  35.   for (int i = 0; i < NUM_LEDS; i++) {
  36.     leds[i] = CHSV(hue + (i * 10), 255, 255);
  37.   }
  38.   EVERY_N_MILLISECONDS(10) {
  39.     hue++;
  40.   }
  41. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-11-17 07:14:34

实验场景图  动态图

最像Arduino Uno的ESP32开发板之WeMos D1 R32图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-11-17 07:36:01

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-11-17 19:05:28

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目之四十六:基于虚拟轮生成颜色的256位音乐可视化


  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验一百七十七:Wemos D1 R32 ESP32开发板
  4.   项目之四十六:基于虚拟轮生成颜色的256位音乐可视化
  5. */
  6. #include <FastLED.h>
  7. // LED LIGHTING SETUP
  8. #define LED_PIN     23
  9. #define NUM_LEDS    256
  10. #define BRIGHTNESS  30
  11. #define LED_TYPE    WS2811
  12. #define COLOR_ORDER GRB
  13. CRGB leds[NUM_LEDS];
  14. #define UPDATES_PER_SECOND 100
  15. // AUDIO INPUT SETUP
  16. int audio = 38;
  17. // STANDARD VISUALIZER VARIABLES
  18. int loop_max = 0;
  19. int k = 255; // COLOR WHEEL POSITION
  20. int decay = 0; // HOW MANY MS BEFORE ONE LIGHT DECAY
  21. int decay_check = 0;
  22. long pre_react = 0; // NEW SPIKE CONVERSION
  23. long react = 0; // NUMBER OF LEDs BEING LIT
  24. long post_react = 0; // OLD SPIKE CONVERSION
  25. // RAINBOW WAVE SETTINGS
  26. int wheel_speed = 4;
  27. void setup()
  28. {
  29.   // LED LIGHTING SETUP
  30.   delay( 3000 ); // power-up safety delay
  31.   FastLED.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
  32.   FastLED.setBrightness(  BRIGHTNESS );
  33.   // CLEAR LEDS
  34.   for (int i = 0; i < NUM_LEDS; i++)
  35.     leds[i] = CRGB(0, 0, 0);
  36.   FastLED.show();
  37.   // SERIAL AND INPUT SETUP
  38.   Serial.begin(115200);
  39.   pinMode(audio, INPUT);
  40.   Serial.println("\nListening...");
  41. }
  42. CRGB Scroll(int pos) {
  43.   CRGB color (0,0,0);
  44.   if(pos < 85) {
  45.     color.g = 0;
  46.     color.r = ((float)pos / 85.0f) * 255.0f;
  47.     color.b = 255 - color.r;
  48.   } else if(pos < 170) {
  49.     color.g = ((float)(pos - 85) / 85.0f) * 255.0f;
  50.     color.r = 255 - color.g;
  51.     color.b = 0;
  52.   } else if(pos < 256) {
  53.     color.b = ((float)(pos - 170) / 85.0f) * 255.0f;
  54.     color.g = 255 - color.b;
  55.     color.r = 1;
  56.   }
  57.   return color;
  58. }
  59. void rainbow(){
  60.   for(int i = NUM_LEDS - 1; i >= 0; i--) {
  61.     if (i < react)
  62.       leds[i] = Scroll((i * 256 / 50 + k) % 256);
  63.     else
  64.       leds[i] = CRGB(0, 0, 0);      
  65.   }
  66.   FastLED.show();
  67. }
  68. void loop(){
  69.   int audio_input = analogRead(audio)*5.5; // 在此处调整,以获得更多敏感性  
  70.   if (audio_input > 0)
  71.   {
  72.     pre_react = ((long)NUM_LEDS * (long)audio_input) / 1023L; // TRANSLATE AUDIO LEVEL TO NUMBER OF LEDs
  73.     if (pre_react > react) // ONLY ADJUST LEVEL OF LED IF LEVEL HIGHER THAN CURRENT LEVEL
  74.       react = pre_react;
  75.     Serial.print(audio_input);
  76.     Serial.print(" -> ");
  77.     Serial.println(pre_react);
  78.   }
  79.   rainbow(); // APPLY COLOR
  80.   k = k - wheel_speed; // SPEED OF COLOR WHEEL
  81.   if (k < 0) // RESET COLOR WHEEL
  82.     k = 255;
  83.   // REMOVE LEDs
  84.   decay_check++;
  85.   if (decay_check > decay)
  86.   {
  87.     decay_check = 0;
  88.     if (react > 0)
  89.       react--;
  90.   }
  91.   delay(1);
  92. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-11-17 19:09:43

实验场景图  动态图

最像Arduino Uno的ESP32开发板之WeMos D1 R32图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-11-17 19:18:51

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-11-17 20:00:27

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百七十七:Wemos D1 R32 ESP32开发板
  项目之四十七:快速傅里叶变换256位频谱仪

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验一百七十七:Wemos D1 R32 ESP32开发板
  4.   项目之四十七:快速傅里叶变换256位频谱仪
  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 39
  14. #define DATA_PIN 23
  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(2);      
  110. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-11-17 20:17:47

实验场景图

最像Arduino Uno的ESP32开发板之WeMos D1 R32图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-11-17 20:25:37

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-11-17 20:30:56

实验场景图  动态图

最像Arduino Uno的ESP32开发板之WeMos D1 R32图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-11-17 20:37:45

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-11-17 21:15:38

实验场景图

最像Arduino Uno的ESP32开发板之WeMos D1 R32图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-11-17 21:28:18

实验的视频记录
优酷:
B站:https://www.bilibili.com/video/B ... 87403d97f8d3cc0b7e5



回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-11-17 21:31:23

实验场景图  动态图

最像Arduino Uno的ESP32开发板之WeMos D1 R32图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-11-18 20:20:47

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百七十七:Wemos D1 R32 ESP32开发板
  项目之四十八:Arduino 和 FastLED多彩音乐灯

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验一百七十七:Wemos D1 R32 ESP32开发板
  4.   项目之四十八:Arduino 和 FastLED多彩音乐灯
  5. */
  6. #include <FastLED.h>
  7. #define SAMPLEPERIODUS 200
  8. #define MIC_PIN 39
  9. #define LED_DT 23
  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-11-18 20:33:13

实验场景图

最像Arduino Uno的ESP32开发板之WeMos D1 R32图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-11-18 20:36:35

实验的视频记录
优酷:
B站:https://www.bilibili.com/video/B ... 87403d97f8d3cc0b7e5



回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-11-18 20:38:47

实验场景图  动态图

最像Arduino Uno的ESP32开发板之WeMos D1 R32图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-11-18 20:45:46

实验的视频记录
优酷:
B站:https://www.bilibili.com/video/B ... 87403d97f8d3cc0b7e5



回复

使用道具 举报

lonely2100  学徒

发表于 2022-12-28 16:27:21

up你好,我最近也在研究这块板子,我想插上cnc shield扩展板结合A4988用来控制步进电机,可插上后一直报错,如下: 16:27:24.888 -> rst:0x10 (RTCWDT_RTC_RESET),boot:0x33 (SPI_FAST_FLASH_BOOT),不知道啥问题,先上传代码,再插扩展板也是一样,只要不插扩展板程序上传就一点问题没有,不知哪的问题,还请赐教,谢谢
回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail