“生日灯”的版本间的差异
853387039@qq.com(讨论 | 贡献) (Created page with "{{Language| 生日灯}} {| style="width: 800px;" |- | ==目的== 做一个生日灯,按下开关,蜂鸣器播放生日快乐歌,彩灯闪烁 ==原理== ==设备== {|cl...") |
Zhangfengfeng(讨论 | 贡献) (→视频) |
||
(未显示2个用户的7个中间版本) | |||
第3行: | 第3行: | ||
|- | |- | ||
| | | | ||
− | == | + | ==概述== |
− | + | 按下开关,蜂鸣器会播放预设的生日歌,同时灯光会闪烁,再次按下开关就会停止。 | |
+ | [[File:birthday-light.jpg|600px|center]] | ||
==原理== | ==原理== | ||
+ | 系统实时检测碰撞开关是否发生碰撞,当发生碰撞时,碰撞真假状态改变一次。当为真时,开始播放生日歌同时灯光变幻颜色,否则就停止音乐,关闭灯光。 | ||
+ | [[File:birthday-light-sch.jpg|600px|center]] | ||
==设备== | ==设备== | ||
第21行: | 第24行: | ||
|[[Microduino-BUZZER/zh]]||1|| 蜂鸣器 | |[[Microduino-BUZZER/zh]]||1|| 蜂鸣器 | ||
|- | |- | ||
− | | [[Microduino- | + | | [[Microduino-Color led/zh]]||1||彩灯 |
|} | |} | ||
− | + | [[File:music_birth.jpg|600px|center]] | |
− | |||
− | |||
− | == | + | ==准备== |
− | *Setup | + | *Setup 1:用USB线将CoreUSB模块与PC/Mac相连,并打开Arduino IDE。 |
− | [[File: | + | [[File:CoreUSB_Ble_pc.jpg|600px|center]] |
− | *Setup | + | *Setup 2:点击Files > Examples > mCookie > _101_BirthdayLight, 加载程序。或者下载: |
− | + | [[File: _101_BirthdayLight.jpg|600px|center]] | |
− | [[File: | + | * Setup 3:选择好板卡和COM端口下载程序。 |
− | == | + | ==程序说明== |
− | |||
− | |||
− | |||
*函数 | *函数 | ||
**“playNote()”控制播放声音 | **“playNote()”控制播放声音 | ||
**“colorSet()”控制彩灯颜色 | **“colorSet()”控制彩灯颜色 | ||
− | **“blink() | + | **“blink()”判断按键是否被按下。 |
*引脚定义 | *引脚定义 | ||
<source lang="cpp"> | <source lang="cpp"> | ||
第48行: | 第46行: | ||
int key_Pin = 2; //按键 | int key_Pin = 2; //按键 | ||
int speakerPin = 6; //蜂鸣器 | int speakerPin = 6; //蜂鸣器 | ||
+ | </source> | ||
+ | |||
+ | *需要对开关进行检测,判断是否按下,从而控制音乐和灯的开启与关闭。 | ||
+ | **调用了key.h文件,“key_get(key_Pin, 0)”检测按键是否按下,“key_Pin”是按键接到核心板的引脚,用户可自定义更改,“0”表示刚按下就触发,可以换成“1”,则表示按下松开后才触发。 | ||
+ | **每检测到开关按下一次,” play_pause “真假值翻转一次,这样就可以根据play_pause的值来控制控制音乐和灯。 | ||
+ | <source lang="cpp"> | ||
+ | void blink() | ||
+ | { | ||
+ | if (key_get(key_Pin, 0)) //开关按下 | ||
+ | { | ||
+ | delay(200); //防抖 | ||
+ | play_pause = !play_pause; //状态翻转一次 | ||
+ | } | ||
+ | } | ||
</source> | </source> | ||
*灯光变化(红、绿、蓝、黄渐变) | *灯光变化(红、绿、蓝、黄渐变) | ||
+ | **“colorSet(strip.Color(R, G,B));”,R,G,B是三基色,用户可以更改自己喜欢的颜色及方式。 | ||
<source lang="cpp"> | <source lang="cpp"> | ||
− | + | add++; | |
− | + | if (add == 5) | |
− | + | add = 1; | |
− | + | if (add == 1) | |
− | + | colorSet(strip.Color(i * 10, 0, 0)); | |
− | + | else if (add == 2) | |
− | + | colorSet(strip.Color(0, i * 10, 0)); | |
− | + | else if (add == 3) | |
+ | colorSet(strip.Color(0, 0, i * 10)); | ||
+ | else if (add == 4) | ||
+ | colorSet(strip.Color(i * 10, i * 10, 0)); | ||
</source> | </source> | ||
+ | |||
*播放音乐 | *播放音乐 | ||
+ | **存放指定音符,可以从程序定义中更改音调 | ||
<source lang="cpp"> | <source lang="cpp"> | ||
− | + | int notes[] = { | |
− | + | NOTE_C4, NOTE_C4, NOTE_D4, NOTE_C4, NOTE_F4, NOTE_E4, | |
− | + | NOTE_C4, NOTE_C4, NOTE_D4, NOTE_C4, NOTE_G4, NOTE_F4, | |
− | + | NOTE_C4, NOTE_C4, NOTE_C5, NOTE_A4, NOTE_F4, NOTE_E4, NOTE_D4, | |
− | + | NOTE_AS4, NOTE_AS4, NOTE_A4, NOTE_F4, NOTE_G4, NOTE_F4 | |
− | + | }; | |
− | |||
</source> | </source> | ||
+ | |||
+ | ==搭建硬件== | ||
+ | *Setup 1:将BUZZER蜂鸣器接到Sensorhub的D6引脚上,将Colorled led彩灯接到A0,将触碰开关接到D4引脚。 | ||
+ | [[File:CoreUSB_Sensorhub_BirthdayLight.jpg|600px|center]] | ||
+ | *Setup 2:将激活后的电池盒与BM模块相连. | ||
+ | [[File:CoreUSB_Ble_steup2.jpg|600px|center]] | ||
+ | *Setup 3:将所有模块堆叠在一起,顺序随意,电路部分搭建完成。 | ||
+ | [[File: music_birth_all.jpg|600px|center]] | ||
+ | * Setup 4:制作你的乐高生日灯 | ||
+ | [[File: music_birth_over.jpg|600px|center]] | ||
+ | 如果模块不能正常工作,请尝试断开并重新连接电源。 | ||
+ | [[File: music_birth_over1.jpg|600px|center]] | ||
==结果== | ==结果== | ||
按下触碰开关,开始播放生日歌并且灯在闪烁变幻,越来越亮。再次按下触碰开关,关闭音乐和灯光。 | 按下触碰开关,开始播放生日歌并且灯在闪烁变幻,越来越亮。再次按下触碰开关,关闭音乐和灯光。 | ||
− | + | ||
|} | |} |
2017年4月12日 (三) 03:24的最新版本
Language | English |
---|
概述按下开关,蜂鸣器会播放预设的生日歌,同时灯光会闪烁,再次按下开关就会停止。 原理系统实时检测碰撞开关是否发生碰撞,当发生碰撞时,碰撞真假状态改变一次。当为真时,开始播放生日歌同时灯光变幻颜色,否则就停止音乐,关闭灯光。 设备
准备
程序说明
#define PIXEL_PIN A0 //彩灯
int key_Pin = 2; //按键
int speakerPin = 6; //蜂鸣器
void blink()
{
if (key_get(key_Pin, 0)) //开关按下
{
delay(200); //防抖
play_pause = !play_pause; //状态翻转一次
}
}
add++;
if (add == 5)
add = 1;
if (add == 1)
colorSet(strip.Color(i * 10, 0, 0));
else if (add == 2)
colorSet(strip.Color(0, i * 10, 0));
else if (add == 3)
colorSet(strip.Color(0, 0, i * 10));
else if (add == 4)
colorSet(strip.Color(i * 10, i * 10, 0));
int notes[] = {
NOTE_C4, NOTE_C4, NOTE_D4, NOTE_C4, NOTE_F4, NOTE_E4,
NOTE_C4, NOTE_C4, NOTE_D4, NOTE_C4, NOTE_G4, NOTE_F4,
NOTE_C4, NOTE_C4, NOTE_C5, NOTE_A4, NOTE_F4, NOTE_E4, NOTE_D4,
NOTE_AS4, NOTE_AS4, NOTE_A4, NOTE_F4, NOTE_G4, NOTE_F4
};
搭建硬件
如果模块不能正常工作,请尝试断开并重新连接电源。 结果按下触碰开关,开始播放生日歌并且灯在闪烁变幻,越来越亮。再次按下触碰开关,关闭音乐和灯光。
|