生日灯

来自Microduino Wikipedia
Zhangfengfeng讨论 | 贡献2017年4月12日 (三) 03:24的版本 视频
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索
Language English

概述

按下开关,蜂鸣器会播放预设的生日歌,同时灯光会闪烁,再次按下开关就会停止。

原理

系统实时检测碰撞开关是否发生碰撞,当发生碰撞时,碰撞真假状态改变一次。当为真时,开始播放生日歌同时灯光变幻颜色,否则就停止音乐,关闭灯光。

设备

模块 数量 功能
Microduino-CoreUSB/zh 1 核心板
Microduino-Sensorhub/zh 1 传感器转接板
Microduino-BM/zh 1 电池
Microduino-BUZZER/zh 1 蜂鸣器
Microduino-Color led/zh 1 彩灯

准备

  • Setup 1:用USB线将CoreUSB模块与PC/Mac相连,并打开Arduino IDE。
  • Setup 2:点击Files > Examples > mCookie > _101_BirthdayLight, 加载程序。或者下载:
  • Setup 3:选择好板卡和COM端口下载程序。

程序说明

  • 函数
    • “playNote()”控制播放声音
    • “colorSet()”控制彩灯颜色
    • “blink()”判断按键是否被按下。
  • 引脚定义
#define PIXEL_PIN    A0 //彩灯

int key_Pin = 2;  //按键
int speakerPin = 6;  //蜂鸣器
  • 需要对开关进行检测,判断是否按下,从而控制音乐和灯的开启与关闭。
    • 调用了key.h文件,“key_get(key_Pin, 0)”检测按键是否按下,“key_Pin”是按键接到核心板的引脚,用户可自定义更改,“0”表示刚按下就触发,可以换成“1”,则表示按下松开后才触发。
    • 每检测到开关按下一次,” play_pause “真假值翻转一次,这样就可以根据play_pause的值来控制控制音乐和灯。
void blink()
{
  if (key_get(key_Pin, 0))  //开关按下
  {
    delay(200);  //防抖
    play_pause = !play_pause; //状态翻转一次
  }
}
  • 灯光变化(红、绿、蓝、黄渐变)
    • “colorSet(strip.Color(R, G,B));”,R,G,B是三基色,用户可以更改自己喜欢的颜色及方式。
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
};

搭建硬件

  • Setup 1:将BUZZER蜂鸣器接到Sensorhub的D6引脚上,将Colorled led彩灯接到A0,将触碰开关接到D4引脚。
  • Setup 2:将激活后的电池盒与BM模块相连.
CoreUSB Ble steup2.jpg
  • Setup 3:将所有模块堆叠在一起,顺序随意,电路部分搭建完成。
  • Setup 4:制作你的乐高生日灯

如果模块不能正常工作,请尝试断开并重新连接电源。

结果

按下触碰开关,开始播放生日歌并且灯在闪烁变幻,越来越亮。再次按下触碰开关,关闭音乐和灯光。