久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: MAX9814 ws2812拾音燈Arduino程序 [打印本頁]

作者: wenhaitao    時間: 2021-10-6 14:20
標題: MAX9814 ws2812拾音燈Arduino程序


Arduino源程序如下:
  1. /*MAX9814掉落效果版本
  2.    WS2812 燈帶*1
  3.    MAX9814模塊*1
  4.    公對母杜邦線*6
  5.    ESP8266NODEMCU開發板*1

  6.   開發板選擇Wifiduino   《《====================================

  7.   最小系統接線(燈帶60燈珠以下)
  8.   MAX9814 WS2812   ES8266
  9.   VCC      +5V     3.3V
  10.   GND      GND     GND
  11.   OUT   /  DIN     A0/GPIO5
  12.   GAIN             3.3
  13. * * QQ群1147147694  《《=====================================
  14. */
  15. //中間擴散效果
  16. #include "FastLED.h"
  17. #define NUM_LEDS 144            // LED燈珠數量
  18. #define LED_DT 5                // 輸出控制信號引腳
  19. #define sigPin A0                // ESP8266ADC引腳接MAX9814 OUT信號引腳  GAIN接3.3V
  20. #define LED_TYPE WS2812       // LED燈帶型號
  21. #define COLOR_ORDER GRB
  22. CRGB leds[NUM_LEDS];            // 建立光帶leds




  23. int sig;//麥克風讀取數值
  24. int pre_si;//指示舊值
  25. int si;//指示新值
  26. int sig_min = 1024;//初始讀取值最大小值,開機后將重新界定
  27. int sig_max = 0;
  28. double triger_factor = 1.40;//閾值 過濾噪音 該數值調整范圍1-2 數值越高要求聲音越大才能觸發
  29. int drop_dot; //初始掉落位置
  30. unsigned long drop_time;//觸發掉落時機
  31. int interval = 30; //每次律動變化的過渡時間
  32. int drop_interval = 100; //掉落點收縮速度
  33. int maxBrightness = 250;
  34. int mid = int(NUM_LEDS / 2);
  35. int delta = int(maxBrightness / mid); //漸變量
  36. unsigned long triger_time = 0;
  37. int randC = 130; //掉落點隨機顏色初始
  38. bool raising = true;
  39. void setup() {
  40.   Serial.begin(115200);
  41.   LEDS.addLeds<LED_TYPE, LED_DT, COLOR_ORDER>(leds, NUM_LEDS);
  42.   // .setCorrection(TypicalLEDStrip);//如果燈帶未響應,請設置
  43.   FastLED.setBrightness(255);                            // 設置光帶亮度
  44.   pinMode(sigPin, INPUT);
  45. }


  46. void loop()
  47. {
  48.   musicV();
  49. }


  50. void musicV()
  51. {
  52.   //計算環境讀取最大最小值,所以在上電后循環幾次后達到平穩的觸發值。
  53.   sig = analogRead(sigPin);

  54.   if (sig < sig_max)//
  55.   {
  56.     sig_max = sig;
  57.   }
  58.   if (sig > sig_min)
  59.   {
  60.     sig_min = sig;
  61.   }

  62.   int mean = (sig_min + sig_max) / 2;

  63.   int _sig = abs(sig - mean ) + mean;


  64.   _sig = constrain(_sig, int(mean * triger_factor), sig_max);
  65.   //Serial.println(_sig);

  66.   si = map(_sig - int(mean * triger_factor), int(mean * triger_factor) - int(mean * triger_factor), int(sig_max) - int(mean * triger_factor), 0, mid - 2);
  67.   si = constrain(si, 0, mid - 2);
  68.   if (si == mid - 2) {
  69.     randC = random(0, 255);

  70.     pre_si = 0;
  71.   }
  72.   Serial.println(randC);
  73.   //===================================================================================================== PART1
  74.   if (si > pre_si)
  75.   {
  76.     if (si > drop_dot)
  77.     {
  78.       if (si * 1.6 < mid - 1) {
  79.         drop_dot = int(si * 1.6);
  80.       }
  81.       else {
  82.         drop_dot = mid - 3;
  83.       }




  84.     }
  85.     for (int j = pre_si - 1; j < si + 1; j++)
  86.     {
  87.       while ( millis() - triger_time < int(interval / (si - pre_si) + 2))
  88.       {

  89.         if ((drop_dot > j + 3 ) && (millis() - drop_time > drop_interval))
  90.         {
  91.           leds [mid + drop_dot + 1] = CRGB::Black;
  92.           leds [mid - 1 - drop_dot - 1] = CRGB::Black;
  93.           leds[mid + drop_dot] = CHSV(int(255 - randC), 255, maxBrightness);
  94.           leds[mid - 1 - drop_dot] = CHSV(int(255 - randC), 255, maxBrightness);

  95.           FastLED.show();
  96.           drop_dot--;
  97.           drop_time = millis();
  98.         }

  99.         leds [mid + j] = CHSV(delta * j, 255, maxBrightness - delta * j);
  100.         leds [mid - 1 - j] = CHSV(delta * j, 255, maxBrightness - delta * j);
  101.         //leds [mid + j] = CHSV(randC, 255, 255 - delta * j);
  102.         //leds [mid - 1 - j] = CHSV(randC, 255, 255 - delta * j);


  103.       }
  104.       FastLED.show();
  105.       triger_time = millis();
  106.     }
  107.   }
  108.   // --------------------------------------------------------------------------------------------------
  109.   //===================================================================================================== PART2
  110.   if (si < pre_si)
  111.   {
  112.     leds [mid + drop_dot + 1] = CRGB::Black;
  113.     leds [mid - 1 - drop_dot - 1] = CRGB::Black;
  114.     leds[mid + drop_dot] = CHSV(int(255 - randC), 255, maxBrightness);
  115.     leds[mid - 1 - drop_dot] = CHSV(int(255 - randC), 255, maxBrightness);
  116.     FastLED.show();
  117.     drop_dot--;
  118.     drop_time = millis();


  119.     for (int k = pre_si + 1; k > si - 1; k--)
  120.     {
  121.       while ( millis() - triger_time < int(interval / (pre_si - si) + 2))
  122.       {
  123.         if ((drop_dot > k + 3 ) && (millis() - drop_time > drop_interval))
  124.         {
  125.           leds [mid + drop_dot + 1] = CRGB::Black;
  126.           leds [mid - 1 - drop_dot - 1] = CRGB::Black;
  127.           leds[mid + drop_dot] = CHSV(int(255 - randC), 255, maxBrightness);
  128.           leds[mid - 1 - drop_dot] = CHSV(int(255 - randC), 255, maxBrightness);
  129.           FastLED.show();
  130.           drop_dot--;
  131.           drop_time = millis();

  132.         }


  133.         leds[mid + k] = CRGB::Black;

  134.         leds[mid - 1 - k] = CRGB::Black;
  135.       }
  136.       FastLED.show();
  137.       triger_time = millis();

  138.     }
  139.   }
  140.   // --------------------------------------------------------------------------------------------------

  141.   if (si == 0 && pre_si == 0 && drop_dot > -1 && (millis() - drop_time > drop_interval))
  142.   {
  143.     leds [mid + drop_dot + 1] = CRGB::Black;
  144.     leds [mid - 1 - drop_dot - 1] = CRGB::Black;

  145.     leds[mid + drop_dot] = CHSV(int(255 - randC), 255, maxBrightness);
  146.     leds[mid - 1 - drop_dot] = CHSV(int(255 - randC), 255, maxBrightness);
  147.     if (drop_dot == 0)
  148.     {
  149.       leds [mid + drop_dot] = CRGB::Black;
  150.       leds [mid - 1 - drop_dot] = CRGB::Black;
  151.     }
  152.     FastLED.show();
  153.     drop_dot--;
  154.     drop_time = millis();

  155.   }
  156.   pre_si = si;
  157. }
復制代碼


作者: YYSF2001    時間: 2021-10-9 10:24
正好手頭有這幾樣東東,花了一會時間就搭建好了電路,燒了程序,調整閥值,效果還可以。
作者: yanzhuangsongqi    時間: 2021-10-19 09:32
#include "FastLED.h"  請問這個頭文件有嗎?能否分享份完整的代碼,謝謝?
作者: q30893748q    時間: 2022-7-30 15:34
yanzhuangsongqi 發表于 2021-10-19 09:32
#include "FastLED.h"  請問這個頭文件有嗎?能否分享份完整的代碼,謝謝?

兄弟,你解決了沒?
作者: cj2333    時間: 2022-9-4 17:05
yanzhuangsongqi 發表于 2021-10-19 09:32
#include "FastLED.h"  請問這個頭文件有嗎?能否分享份完整的代碼,謝謝?

找個梯子,直接arduino里的庫能找到的
作者: fjm0218888    時間: 2022-9-7 10:57
樓主,刷了燈帶沒反應是啥情況?
作者: fjm0218888    時間: 2022-9-7 10:58
樓主,燒錄程序后燈帶無反應怎么解決?
作者: jianwuboss    時間: 2022-9-13 13:21
fjm0218888 發表于 2022-9-7 10:58
樓主,燒錄程序后燈帶無反應怎么解決?

你把VCC的電去掉




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 91精品国产91久久久久游泳池 | 狠狠入ady亚洲精品经典电影 | 91美女在线 | 久久久久久久久精 | 亚洲精品日本 | 亚洲精品久久久久久久不卡四虎 | 中文字幕在线精品 | 久久综合一区 | 欧美成人免费在线视频 | 国产亚洲黄色片 | 四虎影院在线观看av | 黄色av网站在线观看 | 精品视频一区二区三区在线观看 | 亚洲精品一区二区三区丝袜 | h视频免费在线观看 | 国产一区| 亚洲精品在线观 | 亚洲一区中文字幕 | 欧美日韩黄色一级片 | 免费毛片www com cn | 亚洲一区二区av | 欧美日韩在线一区二区三区 | 四虎影院新网址 | 欧美日韩中文在线观看 | 福利久久 | 久久久久国产一区二区三区四区 | 国产在线精品一区二区三区 | 日韩欧美精品在线 | 碰碰视频| a黄毛片| 国产欧美精品在线 | 亚洲精品9999久久久久 | 国产日韩免费视频 | 99久久精品国产一区二区三区 | 免费视频一区二区三区在线观看 | 国产成人精品久久 | 国产高清免费视频 | 国产精品影视在线观看 | 免费观看色 | 91视频电影 | 精品国产乱码久久久久久闺蜜 |