“节奏彩灯”的版本间的差异
853387039@qq.com(讨论 | 贡献) (→软件调试) |
Zhangfengfeng(讨论 | 贡献) (→视频) |
||
(未显示2个用户的14个中间版本) | |||
第4行: | 第4行: | ||
| | | | ||
==目的== | ==目的== | ||
− | + | 对着MIC吼叫,彩灯能够随着声音节奏而变化。 | |
+ | [[File:mic_sound.jpg|600px|center]] | ||
==原理== | ==原理== | ||
+ | *MIC传感器简介 | ||
+ | MIC传感器可将声音信号转换为电信号的电子元器件,和喇叭正好相反。是声音设备的两个终端,咪头是输入,喇叭是输出。又名麦克风,话筒,传声器。 | ||
+ | MIC传感器只能检测声音大小,不能检测指定的声音。 | ||
+ | *节奏彩灯 | ||
+ | 通过mic声音检测传感器检测声音的大小,系统判断声音大小的区间在那个颜色范围内,同时与触发值做对比来选择开启或关闭灯光变化,从而控制彩灯变幻颜色。 | ||
+ | [[File:mic_sch.jpg|600px|center|thumb]] | ||
==设备== | ==设备== | ||
第13行: | 第20行: | ||
|模块||数量||功能 | |模块||数量||功能 | ||
|- | |- | ||
− | |[[ | + | |[[mCookie-CoreUSB/zh]]||1||核心板 |
|- | |- | ||
− | |[[ | + | |[[mCookie-Hub/zh]]||1||传感器转接板 |
|- | |- | ||
|[[Microduino-Sound/zh]]||1||声音检测传感器 | |[[Microduino-Sound/zh]]||1||声音检测传感器 | ||
|- | |- | ||
− | |[[Microduino- | + | | [[Microduino-Color led/zh]]||1||彩灯 |
− | |||
− | |||
|} | |} | ||
+ | [[File:mic _lamp.jpg|600px|center]] | ||
+ | ==准备== | ||
+ | *Setup 1:用USB线将CoreUSB模块与PC/Mac相连,并打开Arduino IDE。 | ||
+ | [[File:CoreUSB_Ble_pc.jpg|600px|center]] | ||
+ | *Setup 2:下载程序:[https://github.com/Microduino/Microduino_Tutorials/blob/master/MCookie_Tutorial/SHENGRI/SHENGRI.ino SHENGRI] | ||
+ | [[File: _SHENGR.jpg|600px|center]] | ||
− | + | * Setup 3:加载代码,将程序代买拷贝到IDE中。程序编译通过后选择好板卡和COM端口下载程序。 | |
− | |||
− | |||
− | *Setup | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | ==程序说明 == | |
− | * | + | *读取声音模拟值(A0引脚),用户可以自定义更改,并且可串口监视器打印出模拟的声音数据。 |
<source lang="cpp"> | <source lang="cpp"> | ||
− | int v=analogRead(A0); | + | int v=analogRead(A0); |
+ | Serial.println(v); | ||
</source> | </source> | ||
− | ** | + | *每隔100ms检测声音大小,并把对应的声音区分分开,声音区间范围定义在数组“zone_vol[3]”里面,用户可以自己更改,区间在100-600最好。 |
+ | <source lang="cpp"> | ||
+ | if(millis()-timer[0]>100) | ||
+ | { | ||
+ | timer[0]=millis(); | ||
+ | if(v>zone_vol[0]) | ||
+ | zone=0;//红色 | ||
+ | else if(v>zone_vol[1]) | ||
+ | zone=1;//绿色 | ||
+ | else if(v>zone_vol[2]) | ||
+ | zone=2;//蓝色 | ||
+ | else | ||
+ | zone=9; | ||
+ | } | ||
+ | </source> | ||
+ | *模拟值的大小控制灯的颜色组合 | ||
<source lang="cpp"> | <source lang="cpp"> | ||
switch(zone) | switch(zone) | ||
第48行: | 第65行: | ||
case 0: | case 0: | ||
if(color!=0) | if(color!=0) | ||
− | vol[0]=map(v,0,1023,0,255); | + | vol[0]=map(v,0,1023,0,255);//红色 |
else | else | ||
vol[0]=10; | vol[0]=10; | ||
第54行: | 第71行: | ||
case 1: | case 1: | ||
if(color!=1) | if(color!=1) | ||
− | vol[1]=map(v,0,1023,0,255); | + | vol[1]=map(v,0,1023,0,255);//绿色 |
else | else | ||
vol[1]=10; | vol[1]=10; | ||
第60行: | 第77行: | ||
case 2: | case 2: | ||
if(color!=2) | if(color!=2) | ||
− | vol[2]=map(v,0,1023,0,255); | + | vol[2]=map(v,0,1023,0,255);//蓝色 |
else | else | ||
vol[2]=10; | vol[2]=10; | ||
break; | break; | ||
} | } | ||
− | |||
// Some example procedures showing how to display to the pixels: | // Some example procedures showing how to display to the pixels: | ||
colorWipe(strip.Color(vol[0],vol[1], vol[2]), 20); | colorWipe(strip.Color(vol[0],vol[1], vol[2]), 20); | ||
</source> | </source> | ||
+ | |||
+ | ==搭建硬件== | ||
+ | *Setup 1:将MIC接到Sensorhub的A0引脚上,将Colorled led彩灯接到A6。Sensorhub上两边有引脚说明,可以对应接入传感器。 | ||
+ | [[File:CoreUSB_mic_steup1.jpg|600px|center]] | ||
+ | *Setup 2:将激活后的电池盒与BM模块相连. | ||
+ | [[File:CoreUSB_Ble_steup2.jpg|600px|center]] | ||
+ | *Setup 3:将所有模块堆叠在一起,顺序随意,电路部分搭建完成。 | ||
+ | [[File: music_mic_all.jpg|600px|center]] | ||
==结果== | ==结果== | ||
对着mic吼叫,你会发现有不一样的效果。 | 对着mic吼叫,你会发现有不一样的效果。 | ||
− | + | [[File:mic_colorled——legao.jpg|600px|center]] | |
− | [[File:mic_colorled——legao.jpg|600px|center | + | |
− | |||
|} | |} |
2017年4月12日 (三) 03:28的最新版本
Language | English |
---|
目的对着MIC吼叫,彩灯能够随着声音节奏而变化。 原理
MIC传感器可将声音信号转换为电信号的电子元器件,和喇叭正好相反。是声音设备的两个终端,咪头是输入,喇叭是输出。又名麦克风,话筒,传声器。 MIC传感器只能检测声音大小,不能检测指定的声音。
通过mic声音检测传感器检测声音的大小,系统判断声音大小的区间在那个颜色范围内,同时与触发值做对比来选择开启或关闭灯光变化,从而控制彩灯变幻颜色。 设备
准备
程序说明
int v=analogRead(A0);
Serial.println(v);
if(millis()-timer[0]>100)
{
timer[0]=millis();
if(v>zone_vol[0])
zone=0;//红色
else if(v>zone_vol[1])
zone=1;//绿色
else if(v>zone_vol[2])
zone=2;//蓝色
else
zone=9;
}
switch(zone)
{
case 0:
if(color!=0)
vol[0]=map(v,0,1023,0,255);//红色
else
vol[0]=10;
break;
case 1:
if(color!=1)
vol[1]=map(v,0,1023,0,255);//绿色
else
vol[1]=10;
break;
case 2:
if(color!=2)
vol[2]=map(v,0,1023,0,255);//蓝色
else
vol[2]=10;
break;
}
// Some example procedures showing how to display to the pixels:
colorWipe(strip.Color(vol[0],vol[1], vol[2]), 20);
搭建硬件
结果对着mic吼叫,你会发现有不一样的效果。
|