您现在的位置是:首页 > 技术资料 > audrino 幻影灯制作
推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

audrino 幻影灯制作

更新时间:2021-03-29 14:46:19 大小:489K 上传用户:jstel查看TA发布的资源 标签:audrinoLED 下载积分:2分 评价赚积分 (如何评价?) 收藏 评论(0) 举报

资料介绍

#include <FastLED.h>

/设置中LED的数量

#define NUM_LEDS 30

//控制LED的引脚

#define LED_PIN 2

//读取传感器值的引脚

#define ANALOG_READ 23


//确认麦克风低值和最大值

#define MIC_LOW 0.0

#define MIC_HIGH 500.0


//有多少以前的传感器值会影响工作平均值?

#define AVGLEN 1

//有多少个先前的传感器值决定了我们是否处于峰值/峰值(例如在一首歌中)

#define LONG_SECTOR 20

//记忆

#define HIGH 3

#define NORMAL 2

//在重新开始测量之前,“当前平均值”的声音保持多久

#define MSECS 30 * 1000

#define CYCLES MSECS / DELAY


/*有时读数错误或奇怪。一本书允许多少钱偏离平均值不被丢弃?**/

#define DEV_THRESH 0.8

#define DELAY 1


float fscale( float originalMin, float originalMax, float newBegin, float newEnd, float inputValue, float curve);

void insert(int val, int *avgs, int len);

int compute_average(int *avgs, int len);

void visualize_music();

//我们要显示多少个LED

int curshow = NUM_LEDS;

/*被认为能够在声音和声音之间切换模式,和一般梯度脉冲/静态颜色*/

int mode = 0;

//根据模式显示不同的颜色。

int songmode = NORMAL;

//最后一个周期的平均声音测量

unsigned long song_avg;

//平均值重置以来的迭代次数

int iter = 0;

//如果不重新发光,LED变黑的速度

float fade_scale = 1.2;


//Led array

CRGB leds[NUM_LEDS];


/*短声平均用于“规范化”输入值。我们使用短平均值,而不是直接使用传感器输入*/

int avgs[AVGLEN] = {-1};

//平均更长声音

int long_avg[LONG_SECTOR] = {-1};

//跟踪我们达到特定模式的频率和时间

struct time_keeping {

  unsigned long times_start;

  short times;

};

//每个周期增加或减少多少颜色

struct color {

  int r;

  int g;

  int b;

};


struct time_keeping high;

struct color Color; 


void setup() {

  Serial.begin(9600);

  //Set all lights to make sure all are working as expected

  //设置所有灯,确保所有灯都按预期工作

  FastLED.addLeds<NEOPIXEL, LED_PIN>(leds, NUM_LEDS);

  for (int i = 0; i < NUM_LEDS; i++) 

    leds[i] = CRGB(0, 0, 255);

  FastLED.show(); 

  delay(1000);  


  //一些低值的引导平均值

  for (int i = 0; i < AVGLEN; i++) {  

    insert(250, avgs, AVGLEN);

  }


  //Initial values

  high.times = 0;

  high.times_start = millis();

  Color.r = 0;  

  Color.g = 0;

  Color.b = 1;

}

/*如果我们想实现一个通用的灯功能,例如一般脉冲。也许如果声音低了一会儿?*/

void loop() {

 

    switch(mode) {

    case 0:

      visualize_music();

      break;

    default:

      break;

    }

  

  //两次读取之间的延迟以确保稳定性

    delay(DELAY);       // delay in between reads for stability

}


部分文件列表

文件名 大小
基于Arduino的LED音乐彩灯制作教程.pdf 489K

全部评论(0)

暂无评论