大数跨境
0
0

当灯笼会唱歌……

当灯笼会唱歌…… DF创客社区
2018-07-19
1
导读:为你照亮世界,为你唱着歌~
 

你的无限手套还缺一点,就能打响指



一盏小灯,不能满足你的大House,却能,满足你的心灵。当我第一次见到的时候,以为它就是一个储物盒。



因为看了爱奇艺IP大剧《冒险王卫斯理之支离人》,觉得里面的古盒承包了整部剧“最精致”(反话)的镜头。



后面发现朋友做了一个六边形的音乐灯笼和它有点相似,于是就借来玩一玩。

                


看外形除了同是六边形,其他地方没有什么和古盒相似。虽然是这样的结果,我还是手贱的拆了它。



拆开后,发现做一盏音乐灯笼,需要以下材料:


  • 喇叭  ×1(某宝)

  • Dreamer Nano V4.0  ×1

  • 数字触摸开关Touch ×1

  • Voice Module 语音模块  ×1

  • RGB 背光板 ×6

  • 铜箔  (某宝)


因为灯笼的体积较小巧,所以选用了DreamerNano V4.0主板。



Dreamer Nano V4.0 是一款基于Arduino Leonardo的小尺寸Leonardo控制板,兼容Leonardo的全部功能,在接口上面采用了和手机通用的micro USB接口。使用起来更加方便。


为了给灯笼增加点生命力,可以说是绞尽脑汁啊。将数字触摸开关和声音模块相结合;通过触摸开关,我的灯笼就会唱歌了。




触摸开关是基于电容感应原理,就算隔着塑料,玻璃等材料也能被感应到,其感应灵敏度随着接触面的大小和覆盖材料的厚度而变化。

为了方便触摸,用一根线引出来,接在用铜箔做的灯穗上,这样一触摸灯穗,就能播放音乐了。




听说DIY和音乐很配哦。所以每次当我DIY制作时,我都会加上音乐。以前我加音乐的方式,就是手机播放音乐。而现在有了音效模块,就可以淘汰到手机了。




此模块可以储存8M的音效文件,可以存放200多个音效,它的储存方式简单;使用简单,运用DF gravity接口,减少了接线的麻烦;在播放上可以指定播放,循环播放,还可以调节音乐的大小。


后面就要介绍灯笼的灵魂配件了,那就是RGB 背光板



将有黑边这面朝上摆放,从左到右一次为:红(电源负极),电源正极,绿(电源负极),蓝(电源负极)。



想要相应的颜色,就接相应的引脚。当三个引脚同时接电源负极的时候,显示为白色。同时还可能通过编程,显示多种颜色。


灯笼一共采用6RGB 背光板,然后将6RGB 背光板分成A,B两组,当音乐响起的时候,可以交叉显示不同的颜色。(视频如下)




【连线图】

 
线虽多,但是连接的时候很简单。

俗话说:好马配好鞍,一盏好看的灯笼肯定要配一根好看的灯笼提手了。所以我就找了一张过年剩下的福字,卷了一根提手。



而长得像六边形的这个外壳,则是3D打印的。不方便打印的小伙伴,可以自己发挥想象力,用一些替代品,比如说硬纸板之类的。


【成品图】



代 码 


向上滑动阅览

const int buttonPin = 12; 

int buttonState = 0; 

int analogPin = 2;

int busy = 0;

int randNumber;

int ar=0;

int ag=0;

int ab=0; 

int br=0;

int bg=0;

int bb=0; 

unsigned char order[4] = {0xAA,0x06,0x00,0xB0};

void volume( unsigned char vol)

{

  unsigned char volume[5] = {0xAA,0x13,0x01,vol,vol+0xBE};

  Serial1.write(volume,5);

}

void A(int ar,int ag,int ab)

{

  analogWrite(3,(255-ar));

  analogWrite(5,(255-ag));

  analogWrite(6,(255-ab));

}

 void B(int br,int bg,int bb)

{

  analogWrite(9,(255-br));

  analogWrite(10,(255-bg));

  analogWrite(11,(255-bb));

}

void play(unsigned char Track)

{

  unsigned char play[6] = {0xAA,0x07,0x02,0x00,Track,Track+0xB3};

  Serial1.write(play,6);

}

void setup()

{  

  Serial1.begin(9600);

  pinMode(analogPin,INPUT);

  pinMode(3,OUTPUT);

  pinMode(5,OUTPUT);

  pinMode(6,OUTPUT);

  volume(0x1E);//音量设置0x00-0x1E

}

 

 

void loop()

{

  buttonState = digitalRead(buttonPin);

  if(buttonState == HIGH){

    play(0x04);

    show1();

    delay(1000);

  }

  A(255,0,0);

  B(255,0,0);

}

 

void show()

{

  for(int a=0; a<7;a++){                //循环语句,控制PWM亮度的增加

    A(255,0,0);

    B(200,0,0); 

    delay(300);

    A(0,200,0);

    B(0,255,0);

    delay(300);

    A(0,0,255);

    B(0,0,200); 

    delay(300);                                      

  }

}

void show1()

{

  volume(0x1E);//音量设置0x00-0x1E

  for(int a=0; a<9;a++){  

    A(255,0,0);

    delay(100);

    B(0,255,0); 

    delay(300);

    A(255,0,255);   

    delay(100);

    B(0,0,255); 

    delay(300); 

    A(255,0,0);

    delay(100);

    B(0,0,255); 

    delay(300);

    A(0,255,255);

    B(255,255,0); 

    A(0,0,255);

    B(255,255,255); 

    delay(300); 

    A(200,105,0);

    B(70,0,50);

    delay(300); 

    A(50,100,60);

    B(0,200,50);

    delay(300); 

    A(0,105,255);

    B(70,200,0);

    delay(300); 

    A(255,255,255);

    B(255,0,0);

    delay(300);    

  } 

}

 



*欢迎转发朋友圈。如需转载,请注明出处和原作者。


项目干货戳这里

 动画电子勋章 三角轮胎 | 物联伺服器

 物联网体重计 Vision Kit开箱 | 弹球机

MechBattle 2018第二季招募开始

吃币机器人| 红白游戏机  

DIY树莓派游戏机 |Teleroomba 波士顿动力

 家庭萌宠Pando | DIY迷你装载机 

物联网项目精选 | Switch重度患者拯救指南 | 手相之诗

自制酸奶机 wifi 气象站 | 极简感应灯 | lululu时钟鹿


点击“阅读原文”,了解更多创客项目!

【声明】内容源于网络
0
0
DF创客社区
我们是专注于创新和开源硬件开发的公司——DFRobot成立的创客社区,无论你是资深创客还是小白,这里都有你的一席之地。一个人玩自己的项目,你只是寂寞宅;一群人看你玩项目,你就是技术牛!快来分享你的项目吧!
内容 1282
粉丝 0
DF创客社区 我们是专注于创新和开源硬件开发的公司——DFRobot成立的创客社区,无论你是资深创客还是小白,这里都有你的一席之地。一个人玩自己的项目,你只是寂寞宅;一群人看你玩项目,你就是技术牛!快来分享你的项目吧!
总阅读1.7k
粉丝0
内容1.3k