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

標(biāo)題: MAX9814 ws2812拾音燈Arduino程序 [打印本頁(yè)]

作者: wenhaitao    時(shí)間: 2021-10-6 14:20
標(biāo)題: MAX9814 ws2812拾音燈Arduino程序


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

  6.   開發(fā)板選擇Wifiduino   《《====================================

  7.   最小系統(tǒng)接線(燈帶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. //中間擴(kuò)散效果
  16. #include "FastLED.h"
  17. #define NUM_LEDS 144            // LED燈珠數(shù)量
  18. #define LED_DT 5                // 輸出控制信號(hào)引腳
  19. #define sigPin A0                // ESP8266ADC引腳接MAX9814 OUT信號(hào)引腳  GAIN接3.3V
  20. #define LED_TYPE WS2812       // LED燈帶型號(hào)
  21. #define COLOR_ORDER GRB
  22. CRGB leds[NUM_LEDS];            // 建立光帶leds




  23. int sig;//麥克風(fēng)讀取數(shù)值
  24. int pre_si;//指示舊值
  25. int si;//指示新值
  26. int sig_min = 1024;//初始讀取值最大小值,開機(jī)后將重新界定
  27. int sig_max = 0;
  28. double triger_factor = 1.40;//閾值 過濾噪音 該數(shù)值調(diào)整范圍1-2 數(shù)值越高要求聲音越大才能觸發(fā)
  29. int drop_dot; //初始掉落位置
  30. unsigned long drop_time;//觸發(fā)掉落時(shí)機(jī)
  31. int interval = 30; //每次律動(dòng)變化的過渡時(shí)間
  32. int drop_interval = 100; //掉落點(diǎn)收縮速度
  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; //掉落點(diǎn)隨機(jī)顏色初始
  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);//如果燈帶未響應(yīng),請(qǐng)?jiān)O(shè)置
  43.   FastLED.setBrightness(255);                            // 設(shè)置光帶亮度
  44.   pinMode(sigPin, INPUT);
  45. }


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


  50. void musicV()
  51. {
  52.   //計(jì)算環(huán)境讀取最大最小值,所以在上電后循環(huán)幾次后達(dá)到平穩(wěn)的觸發(fā)值。
  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. }
復(fù)制代碼


作者: YYSF2001    時(shí)間: 2021-10-9 10:24
正好手頭有這幾樣?xùn)|東,花了一會(huì)時(shí)間就搭建好了電路,燒了程序,調(diào)整閥值,效果還可以。
作者: yanzhuangsongqi    時(shí)間: 2021-10-19 09:32
#include "FastLED.h"  請(qǐng)問這個(gè)頭文件有嗎?能否分享份完整的代碼,謝謝?
作者: q30893748q    時(shí)間: 2022-7-30 15:34
yanzhuangsongqi 發(fā)表于 2021-10-19 09:32
#include "FastLED.h"  請(qǐng)問這個(gè)頭文件有嗎?能否分享份完整的代碼,謝謝?

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

找個(gè)梯子,直接arduino里的庫(kù)能找到的
作者: fjm0218888    時(shí)間: 2022-9-7 10:57
樓主,刷了燈帶沒反應(yīng)是啥情況?
作者: fjm0218888    時(shí)間: 2022-9-7 10:58
樓主,燒錄程序后燈帶無(wú)反應(yīng)怎么解決?
作者: jianwuboss    時(shí)間: 2022-9-13 13:21
fjm0218888 發(fā)表于 2022-9-7 10:58
樓主,燒錄程序后燈帶無(wú)反應(yīng)怎么解決?

你把VCC的電去掉




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 免费成年网站 | 中文字幕国产视频 | 免费在线成人 | 亚洲欧美一区二区三区国产精品 | 99精品电影| 欧美精品一区三区 | 一区二区三区在线电影 | 国产精品一区久久久 | 亚洲成人a v | 亚洲精品一区二区在线观看 | av中文字幕在线观看 | 亚洲国产精品99久久久久久久久 | 久久一区 | 日韩在线xx| 91观看 | 国产精品3区 | 国产日韩欧美激情 | 国产乡下妇女做爰 | 国产男女精品 | 伊伊综合网| 国产三区在线观看视频 | 欧美精品一区二区三区四区 | 久久精品a级毛片 | 精品久久久一区 | 欧美人妇做爰xxxⅹ性高电影 | 日韩三级免费观看 | 91在线一区二区 | 亚洲福利片 | 久久99精品久久久久久 | 99久久久无码国产精品 | 亚洲欧洲精品一区 | 欧美日韩精品一区二区天天拍 | 九九热在线观看 | 国产在线观看 | 中文字幕99| 亚洲精品欧洲 | 九一视频在线播放 | 国产在线观看网站 | 亚洲精品亚洲人成人网 | 一区二区在线 | 精品国产一区二区三区久久狼黑人 |