“生日灯”的版本间的差异

来自Microduino Wikipedia
跳转至: 导航搜索
软件调试
视频
 
(未显示2个用户的6个中间版本)
第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-Lantern/zh]]||1||彩灯
+
| [[Microduino-Color led/zh]]||1||彩灯
 
|}
 
|}
*其他
+
[[File:music_birth.jpg|600px|center]]
**电池
 
[[File:music_birth.jpg|600px|center|thumb]]
 
  
==搭建硬件==
+
==准备==
*Setup 1:将CoreUSB与Sensorhub叠堆
+
*Setup 1:用USB线将CoreUSB模块与PC/Mac相连,并打开Arduino IDE。
[[File:CoreUSB_Sensorhub.jpg|600px|center|thumb]]
+
[[File:CoreUSB_Ble_pc.jpg|600px|center]]
*Setup 2:将BUZZER蜂鸣器接到Sensorhub的D6引脚上,将Colorled led彩灯接到A0,将触碰开关接到D2引脚。
+
*Setup 2:点击Files > Examples > mCookie > _101_BirthdayLight, 加载程序。或者下载:
[[file:Microduino-sensorhub_rule.JPG|thumb|800px|center]]
+
[[File: _101_BirthdayLight.jpg|600px|center]]
[[File: music_birth_all.jpg|600px|center|thumb]]
+
* Setup 3:选择好板卡和COM端口下载程序。
  
==软件调试==
+
==程序说明==
*Setup 1:开始编程。搭建开发环境,下载程序代码。
 
[https://github.com/Microduino/Microduino_Tutorials/blob/master/MCookie_Tutorial/music_birth/music_birth.ino music_birth]
 
*Setup 2:代码说明
 
 
*函数
 
*函数
 
**“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">
      if (add == 1)
+
add++;
        colorSet(strip.Color(i * 10, 0, 0));
+
if (add == 5)
      else if (add == 2)
+
add = 1;
        colorSet(strip.Color(0, i * 10, 0));
+
if (add == 1)
      else if (add == 3)
+
colorSet(strip.Color(i * 10, 0, 0));
        colorSet(strip.Color(0, 0, i * 10));
+
else if (add == 2)
      else if (add == 4)
+
colorSet(strip.Color(0, i * 10, 0));
        colorSet(strip.Color(i * 10, 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">
      if (!play_pause)
+
int notes[] = {
      {
+
  NOTE_C4, NOTE_C4, NOTE_D4, NOTE_C4, NOTE_F4, NOTE_E4,
        play_pause = false;
+
  NOTE_C4, NOTE_C4, NOTE_D4, NOTE_C4, NOTE_G4, NOTE_F4,
        noTone(speakerPin);
+
  NOTE_C4, NOTE_C4, NOTE_C5, NOTE_A4, NOTE_F4, NOTE_E4, NOTE_D4,
        return;
+
  NOTE_AS4, NOTE_AS4, NOTE_A4, NOTE_F4, NOTE_G4, NOTE_F4
      }
+
};
      playNote(notes[i], beats[i]); // make sound
 
 
</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

概述

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

原理

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

设备

模块 数量 功能
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:制作你的乐高生日灯

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

结果

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