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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6074|回復: 7
打印 上一主題 下一主題
收起左側

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. }
復制代碼

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:697622 發表于 2021-10-9 10:24 | 只看該作者
正好手頭有這幾樣東東,花了一會時間就搭建好了電路,燒了程序,調整閥值,效果還可以。
回復

使用道具 舉報

板凳
ID:288183 發表于 2021-10-19 09:32 | 只看該作者
#include "FastLED.h"  請問這個頭文件有嗎?能否分享份完整的代碼,謝謝?
回復

使用道具 舉報

地板
ID:1041015 發表于 2022-7-30 15:34 | 只看該作者
yanzhuangsongqi 發表于 2021-10-19 09:32
#include "FastLED.h"  請問這個頭文件有嗎?能否分享份完整的代碼,謝謝?

兄弟,你解決了沒?
回復

使用道具 舉報

5#
ID:482083 發表于 2022-9-4 17:05 | 只看該作者
yanzhuangsongqi 發表于 2021-10-19 09:32
#include "FastLED.h"  請問這個頭文件有嗎?能否分享份完整的代碼,謝謝?

找個梯子,直接arduino里的庫能找到的
回復

使用道具 舉報

6#
ID:967397 發表于 2022-9-7 10:57 | 只看該作者
樓主,刷了燈帶沒反應是啥情況?
回復

使用道具 舉報

7#
ID:967397 發表于 2022-9-7 10:58 | 只看該作者
樓主,燒錄程序后燈帶無反應怎么解決?
回復

使用道具 舉報

8#
ID:458472 發表于 2022-9-13 13:21 | 只看該作者
fjm0218888 發表于 2022-9-7 10:58
樓主,燒錄程序后燈帶無反應怎么解決?

你把VCC的電去掉
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人字幕网zmw | 欧美一级黄带 | 黄色网页在线 | 国产精品免费一区二区三区四区 | 韩日视频在线观看 | 国产一区二区三区四区五区加勒比 | 日韩久久久一区二区 | 亚洲在线一区 | 91精品国产综合久久福利软件 | 欧美bondage紧缚视频 | 一区二区三区免费在线观看 | 91社影院在线观看 | 欧美日韩精品影院 | 欧美精品在线免费观看 | 国产一区二区三区 | www国产成人 | 一区二区视频在线观看 | 香蕉一区| 91社区在线观看高清 | 国产在线一区二区 | 国产精品久久久久9999鸭 | 久久久久久久久久久国产 | 欧美一级在线免费观看 | 亚洲成人一区 | 日韩免费网 | 成人影| 国产精品国产a | 国产精品1区2区3区 一区中文字幕 | 欧美一级在线 | 国产高清免费 | 免费久久久久久 | 国产1区在线 | 国产一区二区三区亚洲 | 亚洲精品一区二区三区中文字幕 | 日本三级电影在线看 | 成人欧美一区二区 | 人人干人人爽 | 麻豆精品国产免费 | 久久久日韩精品一区二区三区 | 九九综合 | 日韩电影一区二区三区 |