Microduino 蝴蝶灯/zh

来自Microduino Wikipedia
853387039@qq.com讨论 | 贡献2015年1月21日 (三) 11:48的版本 团队介绍
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

概述

  • 项目名称: Butterfly light
  • 目的: Butterfly light是一款触感调控的可变色音乐灯,主要用于互动和烘托气氛。
  • 难度:中级
  • 耗时:6小时
  • 制作者:Guysgogo&&Microduino

团队介绍



Guysgogo是由北京洛可可LKK工业设计智能硬件创客班中的四名大学生组成的团队,成员蒋润、郝慧玉、李婷昱、谢慧超分别是来自河北工程大学和河北农业大学的三年级学生,热爱创新和设计的他们齐聚在洛可可创新学院,组成了这个有想法有执行力的团队。“Guysgogo”代表着他们积极上进的心态,希望在洛可可设计学院和Microduino团队的支持下,做出让人耳目一新的作品。

材料清单

  • Microduino设备
模块 数量 功能
Microduino-Core+/zh 1 核心板
Microduino-USBTTL/zh 1 下载程序
Microduino-Audio/zh 1 音频控制
Microduino-Amplifier/zh 1 功率放大模块
Microduino-Sensorhub/zh 1 传感器连接板
Microduino-Cube-S1/zh 1 底板
Microduino-Lantern/zh 7 彩色led灯
Microduino-Touch/zh 7 触摸传感器
  • 其他设备
设备 数量 功能
喇叭 1 发声
MicroUSB数据线 1 供电

文档

程序下载:Butterfly_light

3D模型下载:文件:3D-Butterfly light.zip

构建3D模型

模型采用蝴蝶造型,最开始提案是一个柱形,但是觉得造型太老了,所以换一个造型,开始想做扇子,但是厚度有点大,刚好倒下来是个蝴蝶的形状,就优化了一下结构,最终做成曲线的蝴蝶了。

搭建硬件电路

  • 彩色led灯采用内置IC控制芯片,单总线控制,只需要一个I/O口就可以控制。因此只需要将一个Lantern的OUT接另一个Lantern的IN。再将Lantern的IN通过Sensorhub接入Microduino核心就行。
  • 每个触摸传感器都需要单独一个Microduino的I/O口来驱动,我们通过数字口和模拟口读取传感器的值来判断是否按下。
  • 搭建好硬件电路就可以先调试软件了。

准备音频

  • 下载音频文件:文件:Music-Butterfly light.zip
  • 使用USB数据线将Microduino-Audio模块与电脑连接,连接成功能显示出一个名为microduino的磁盘,打开后选择音频文件然后写入到flash里面。

软件调试

程序说明

  • “audio.h”文件是用来控制播放音乐,“key.h”文件是用来检测是否有触摸。
    • Audio模块默认接到串口1来控制。
    • 触摸传感器引脚定义,用户可根据自己需求来改:
  int sensor_pin[7]=
{
  4,8,10,12,A0,A2,A6
};
    • 彩色led灯控制引脚为D6,并且定义了7个灯:
#define PIN 6
Adafruit_NeoPixel strip = Adafruit_NeoPixel(7, PIN, NEO_GRB + NEO_KHZ800);
  • 7个灯的触摸情况判断并且控制音乐和led灯的情况:
    • 按到某个按钮播放指定的音频并且led灯闪烁一次白灯。
    • 连续按两下,显示白灯。
    • 连续按三下,随即切换颜色。
    • 任何时候只要按一下就关灯。
  for(int a=0;a<7;a++)
  {
    {
      if(key_get(sensor_pin[a],1))		//触发时
      {
        //colorWipe(strip.Color(255, 255, 0), 10);
        sensor_vol_cache[a]++;	//计数
        // Serial.print("+");
        if(sensor_vol_cache[a]>3)
          sensor_vol_cache[a]=3;

        {
          colorWipe(color[8], a);

          num=a;

          audio_choose(a+1);
          audio_play();

          colorWipe(color[0], a);
        }

        time1[a]=millis();
      }

      if(millis()-time1[a]>500 && sensor_vol_cache[a]!=0)	//触发,并且闲置超过一秒,结束扫描
      {
        if(sensor_vol_cache[a]==1)
        {
          colorWipe(color[0], a);
          Serial.println("LED_OFF");
        }
        else if(sensor_vol_cache[a]==2)
        {
          colorWipe(color[8], a);
        }
        else
        {
          randomSeed(millis()%1000);
          sensor_vol[a]=random(1,7);
          Serial.println("");
          Serial.print("num:");
          Serial.print(a);
          Serial.print(":");
          Serial.print(sensor_vol[a]);

          colorWipe(color[sensor_vol[a]], a);
        }
        sensor_vol_cache[a]=0;		//归零 等待下次扫描
      }
    }
  }

程序下载

  • 确认你搭建了Microduino的开发环境,否则参考:Microduino Getting start/zh
  • 确定IDE里面有_99_LCD_NeoPixel库。
  • 打开下载好的程序,编译后选择好板卡进行下载。
  • 下载后通过触摸Touch传感器来验证以上功能是否正确。同时你需要记下触摸传感器对应哪个彩色led灯。

整体组装

  • 将灯和触摸传感器按照顺序固定在3D蝴蝶外壳上。
  • 给蝴蝶外壳加上一层漂亮的壁纸
  • 把喇叭固定在底座上,然后和蝴蝶外壳固定在一起。
  • 最后插上USB数据线供电,你就可以尽情的玩耍了。

注意问题

  • Audio模块默认采用串口1来控制,记得初始化串口1:“AUDIO_PORT.begin(9600);”
  • 安装时候注意触摸和灯要对应。

视频

http://v.youku.com/v_show/id_XODc2NDMzODg4.html