“开源智能彩虹音乐触摸灯/zh”的版本间的差异

来自Microduino Wikipedia
跳转至: 导航搜索
组装
第108行: 第108行:
 
这样彩虹灯外形拼好了。然后用USB数据线将电脑和彩虹触摸灯连接上,用手触摸彩虹灯上面,就会产生一个音符并在对应位置LED灯亮。
 
这样彩虹灯外形拼好了。然后用USB数据线将电脑和彩虹触摸灯连接上,用手触摸彩虹灯上面,就会产生一个音符并在对应位置LED灯亮。
 
[[File:Microduino-12.jpg||600px|center]]
 
[[File:Microduino-12.jpg||600px|center]]
 +
 +
==程序说明==
 +
百度盘地址:http://pan.baidu.com/s/1o6nJT70
 +
提取码:q54r
 +
*进出门判断
 +
<source lang="cpp">
 +
void judge()
 +
{
 +
    //先过D4后过D6为进入
 +
    if((digitalRead(body_pin) == 1) && (digitalRead(body_pin2) == 0))
 +
    {
 +
        FLAG_1 = 1;
 +
        delay(200);
 +
    }
 +
    if((digitalRead(body_pin) == 1) && (digitalRead(body_pin2) == 1) && (FLAG_1 == 1))
 +
    {
 +
 +
        colorWipe(color[random(1, 10)]);
 +
        audio_choose(1);
 +
        Serial.println("COMING IN");
 +
        FLAG_1 = 0;
 +
        delay(1300);    //1300
 +
    }
 +
    //先过D46过D4为出门
 +
    if((digitalRead(body_pin) == 0) && (digitalRead(body_pin2) == 1))
 +
    {
 +
        FLAG_2 = 1;
 +
        delay(200);    //2000
 +
    }
 +
    if((digitalRead(body_pin) == 1) && (digitalRead(body_pin2) == 1) && (FLAG_2 == 1))
 +
    {
 +
        colorWipe(color[random(1, 10)]);
 +
        audio_choose(2);
 +
        Serial.println("GOING OUT");
 +
        FLAG_2 = 0;
 +
        delay(1300);  //2000
 +
    }
 +
}
 +
 +
</source>
 +
 +
==视频==
 +
 
|}
 
|}

2016年1月15日 (五) 03:27的版本

Language English

概述

  • 项目名称:开源智能彩虹音乐触摸灯
  • 目的:当有人触摸时,相应的彩灯亮并产生一个音符
  • 难度:中
  • 耗时:2小时
  • 制作者:
  • 简介:

本次教程我们将使用Microduino产品模块快速搭建一个智能彩虹音乐触摸灯, 该系统通过触摸按键探测表面是否有人触摸。当有人触摸时,就会有对应位置的彩灯亮并产生一个对应的音符。

Microduino 1.JPG

材料清单

  • Microduino设备
模块 数量 功能
Microduino-Cube-S1/zh 1 扩展板
Microduino-Core+/zh 1 核心板
Microduino-USBTTL/zh 1 下载程序
Microduino-BT/zh 1 蓝牙模块
Microduino-Audio/zh 1 音频播放
Microduino-Amplifier/zh 1 功率放大
Microduino-Sensorhub/zh 1 与传感器相连
Microduino-TOUCH/zh 7 触摸传感器
  • 其他设备
模块 数量 功能
Micro-USB线 1 下载程序,供电
喇叭 2 发声
螺丝 5 固定模块
彩灯带 1
外壳 1

实验原理

开源智能彩虹音乐触摸灯主要分为触摸检测与音频播放控制两个部分。按键检测部分采用按键触摸传感器Microduino-TOUCH,能够检测是否有人触摸。控制部分主要为声光控制,发光部件采用14个彩灯为一的彩灯带,能让彩虹灯呈现美轮美奂的颜色;音频部分通过Microduino-Aduio模块管理音频文件,Microduino-Amplifier功率放大模块驱动1个喇叭发出动听的声音。

Microduino 2.JPG

整体系统的控制原理即接入以上两个部分,Microduino-Core+核心通过触摸传感器探测到有人触摸后,系统控制彩灯带对应的灯产生颜色,Auido模块将产生一个对应的音符,从而实现彩虹触摸灯的效果。

  • 主要传感器

Microduino-TOUCH/zh是电容式触摸检测传感器模块。

电容特性为充放电时间短、通交流阻直流。触摸传感器的回路电流为直流电,所以触摸传感器两端在通电后相当于开路,触摸传感器两端为高电平。人体组织和体液都可以导电,人体接触电容两端之后,触摸传感器两端变成低电平。人体结束和触摸传感器的接触后,电容暂瞬间开始充电,达到电容的额定容量之后,电容两端相当于开路,触摸传感器两端又变成高电平。触摸传感器通过两端电压的变化判断是否有触摸。

文档

调试过程

  • 下载程序

将Microduino-Core与Microduino-USBTTL叠加(无上下顺序),通过USB数据与电脑连接起来。

Download1.jpg

打开Arduino IDE编程软件,点击【文件】->【打开】

Dl1.jpg

浏览到项目程序地址,点击“body_welcome.ino”程序打开。

点击【工具】,在板选项里面选择板卡(Microduino-Core),在处理器选项里面选择处理器(Atmega328p@16M,5V),再在端口选项里面选择正确的端口号,然后直接烧录程序。

Dl3.jpg

使用USB数据线将Microduino-Audio模块与电脑连接。 连接成功能显示出一个名为Microduino Audio的CD驱动器,然后执行以下步骤:

Dl5.jpg

打开CD驱动器后会出现音乐更新软件Music Update tool,选择“音频加载”选项;

Dl6.jpg

点击“浏览”,选择“music”文件夹中的"bye.wav,欢迎.wav"音频文件,将音频文件添加到软件中

欢迎与再见音频下载地址:http://pan.baidu.com/s/1pJpJK5X 提取码:hkks

在”更新下载”选项中选择“更新”,更新完成后,音频文件就已写入flash中。

Dl8.jpg

组装

拼装时首先将Microduino-Duo-S1板用尼龙螺柱固定在底板上面。

Microduino 3.jpg

之后将Core+(在最下),BT,Audio,Amplifier,Sensorhub(在最上)按顺序叠加起来,之后加在Microduino-Duo-S1底板上

Microduino 4.jpg

将喇叭连接到Amplifier的接口上(没有左右顺序区别)

Microduino 5.jpg

之后将触摸传感器和彩灯带与Hub连接,按如图所示位置

Microduino 6.JPG

将将彩灯带有线的头方向放在靠底板那边,触摸传感器按照上面图和下面图顺序依次放好

Microduino-7.jpg

将喇叭的固定座放在喇叭上

然后将固定座和喇叭一起连接到外壳

Microduino-9.jpg

之后把内部结构拼好

Microduino-10.jpg

最后把侧面也装上

Microduino-11.jpg

这样彩虹灯外形拼好了。然后用USB数据线将电脑和彩虹触摸灯连接上,用手触摸彩虹灯上面,就会产生一个音符并在对应位置LED灯亮。

Microduino-12.jpg

程序说明

百度盘地址:http://pan.baidu.com/s/1o6nJT70 提取码:q54r

  • 进出门判断
void judge() 
{ 
    //先过D4后过D6为进入 
    if((digitalRead(body_pin) == 1) && (digitalRead(body_pin2) == 0)) 
    { 
        FLAG_1 = 1; 
        delay(200); 
    } 
    if((digitalRead(body_pin) == 1) && (digitalRead(body_pin2) == 1) && (FLAG_1 == 1)) 
    { 
 
        colorWipe(color[random(1, 10)]); 
        audio_choose(1); 
        Serial.println("COMING IN"); 
        FLAG_1 = 0; 
        delay(1300);    //1300 
    } 
    //先过D46过D4为出门 
    if((digitalRead(body_pin) == 0) && (digitalRead(body_pin2) == 1)) 
    { 
        FLAG_2 = 1; 
        delay(200);    //2000 
    } 
    if((digitalRead(body_pin) == 1) && (digitalRead(body_pin2) == 1) && (FLAG_2 == 1)) 
    { 
        colorWipe(color[random(1, 10)]); 
        audio_choose(2); 
        Serial.println("GOING OUT"); 
        FLAG_2 = 0; 
        delay(1300);   //2000 
    } 
}

视频