① 音乐喷泉的原理是什么呢怎么这么有节奏
喷泉是一种将水或其他液体经过一定压力通过喷头喷洒出来具有特定形状的组合体。现在的喷泉一般为完全依靠喷泉设备的人工造景喷泉。主要就是通过变频器的控制实现节奏韵律,音乐喷泉中水形变化丰富,配合灯光给人真实直观的美感。音乐喷泉中的各种摇摆能让人感受到喷泉的柔性美。径向摇摆的产生是由于水面下设摇摆机构,使水景优美动人,赏心悦目,给人神奇的感觉,是时代高科技发展的表现。
摇摆喷泉的位置和运动速度的变化是产生摇摆水型潇洒风彩的重要因素。喷泉摇摆机构的位置传感器应当是防水的不接触定位装置。经常采用由磁铁感应的霍尔传感器、光纤引导的光电传感器或磁铁吸引的旋转位置编码器等。
例如对于采用位置编码器的喷泉摇摆机构的定位装置包括:装在摇摆电机轴上的位置编码器、高速计数器、控制计算机以及通信接口等。
由于摇摆机构的连杆一般会有较大的间隙,为了达到精确定位只能使摇摆机构从一个方向到达定位点,才能保证其重复精度。因此,摇摆机构需要停车时,每次都必须从一个方向到达定位点。
摇摆机构的定位精度受运动力矩与阻力矩的影响。运动力矩决定于电动机的电源电压和停车前的运动速度等,而阻力矩则由摇摆机构的摩擦力、水流的速度、周围的风力等合成。可见,这些都是不能事先确定的因素。所以,为了达到精确定位的目的,我们必须每次改变其控制参数。对于采用电动机能耗制动来精确定位的控制参数一般有两个,直流制动电流的大小和启动制动时间。对计算机控制较为方便的方式是采用改变制动时间。
在控制系统中,电动机制动时间可用检测到位点的偏差来进行修正。根据摇摆机构定位偏差值的统计数据,经过数学模型的计算,最后确定制动时间。
当摇摆机构的运动速度要与乐曲的节奏同步时,就要求得它的运动速度,并对摇摆电机进行调速。由于速度就是位移对时间的微分,所以从摇摆电机轴上位置编码器送来的脉冲数,就可以在计算机中求出它的运动速度。
② 求一个8051单片机控制音乐喷泉C语言程序
把音乐数据做一个傅立叶变换,然后去控制喷泉,这个倒容易实现,难实现的就是你的喷泉控制能达到这么快的控制吗?用电磁阀来控制的吗?由于频繁的开启关闭,速度太快,容易烧坏电磁阀了。
③ 如何自制音乐喷泉的原理
音乐表演喷泉在程序控制喷泉的基础上加入了音乐控制系统,计算机通过对音频及MIDI信号的识别,进行译码和编码,最终将信号输出到控制系统,使喷泉的造型及灯光的变化与音乐保持同步,从而达到喷泉水型、灯光及色彩的变化与音乐情绪的完美结合,使喷泉表演更加生动更加富有内涵及体现水的艺术。
音乐喷泉:可以根据音乐的高低起伏变化。用户可以在编辑界面编写自己喜爱的音乐程序。播放系统可以实现音乐、水、灯光气氛统一,播放同步。
(3)单片机喷泉怎么控制音乐扩展阅读
利用音乐文件的物理波形,将其分为若干乐段,精度达十毫秒,并且自动识别震撼、思念、抒情、喜悦、激昂、悲哀、欢快、热烈等乐曲的基本情感特征,转换为控制信号,经过同步处理后通过信号输出卡输出到外围具体控制单元,即根据水型组态规则控制潜水泵、电磁阀、水下彩灯和变频器等执行机构,将视觉感受与听觉感受融为一体。
观看喷泉时请站在护栏外观赏,因为水量大、喷水高,注意保护相机等电子产品,以免被水雾打湿;儿童、孕妇、老年人甚至成年人,在观看喷泉时请不要距离喷泉喷水出口太近,由于喷泉出水的瞬间冲击力巨大,应防止受伤。
④ 单片机实现音乐喷泉的过程中如何对音频进行分频处理
用AD芯片对音频采样,采样速度至少40KHZ,然后做FFT,精度你随便,估计有个256点就可以了。一来你是51,跑不快,二来音乐喷泉水柱不多,从低频到高频大概体现7、8个频点就够了。FFT程序网上找,一把一把的。
⑤ 我想要一段单片机控制音乐喷泉的C语言程序,很急!~谁能帮帮我,谢谢~
#include<reg51.h>
#include "SoundPlay.h"
uchar code table[]="sound_signal:";
uchar code table1[]="sound_pace:";
uchar code table2[]="0123456789 ";
uchar data count=0;
sbit motor=P2^1;
sbit rs=P2^2;
sbit e=P2^3;
void init_com()
{
TMOD=0x01;
TH0=0xff;
TL0=0xff;
EA=1;
ET0=1;
}
void timer0(void) interrupt 1 using 3
{
counter=counter+1;//节拍次数计数
TH0=0xd8; //定义单位节拍的延时大小 10ms定时
TL0=0xef;
}
void delay(uchar n)
{
uchar i;
while(n--)
for(i=0;i<125;i++); //延时1毫秒
}
void sound_delay(uchar n)
{
uchar i;
while(n--)
{
for(i=0;i<2;i++);
}
}
/*******LCD显示*******/
void ling(uchar zl) //写指令
{
rs=0;
e=0;
P0=zl;
delay(5);
e=1;
delay(5);
e=0;
}
void shuju(uchar sj) //写数据
{
rs=1;
e=0;
P0=sj;
delay(5);
e=1;
delay(5);
e=0;
}
void lcdinit() //初始化
{
delay(15);
ling(0x01);
ling(0x38);
delay(5);
ling(0x38);
delay(5);
ling(0x38);
delay(5);
ling(0x0c);
delay(5);
ling(0x06);
delay(5);
ling(0x01);
delay(5);
}
//*****************液晶初始化*********
void main()
{
uint i,a;
uchar sound_signal;//定义音符大小
uchar sound_pace;//定义节拍大小
init_com();
lcdinit();
ling(0x80);
for (i=0;i<13;i++)
shuju(table[i]);
ling(0x80+0x40);
for (i=0;i<11;i++)
shuju(table1[i]);
//array[i]=0x00 代表歌曲演唱完毕
//array[i]=0xff 代表是休止符
while(1)
{
i=0;
/***************************************///////////
while(array[i]!=0x00)
{
//如果是休止符,延时100ms,并终止本次循环,进入下一个循环
if(array[i]==0xff)
{
TR0=0;
i++;
delay(100);
continue;
}
//从表中取得 音符大小
sound_signal=array[i];
i=i+1;
//从表中取得 节拍大小
sound_pace=array[i];
a= sound_pace;
P1=a|(a>>4);
//彩灯的根据节拍闪烁
ling(0x80+13);
if(sound_signal/100==0)
shuju(table2[10]);
else shuju(table2[ sound_signal/100]);
shuju(table2[sound_signal%100/10]);
shuju(table2[sound_signal%10]);
ling(0x80+0x40+11);
if(sound_signal/100==0)
shuju(table2[10]);
else shuju(table2[sound_pace/100]);
shuju(table2[sound_pace%100/10]);
shuju(table2[sound_pace%10]);
motor=0;
delay(40);
TR0=1;
//当节拍数未达到时候,继续循环,产生该音调的声音
while(counter<=sound_pace)
{
motor=1;
sound=~sound;
sound_delay(sound_signal);
}
i++;
counter=0;//节拍计数器置0,进入下一个音调
}
/*************************************************/
delay(10); //歌曲演唱完毕后,延时一段时间
}
}
//*******soundplay.h**********歌曲
#ifndef __SOUNDPLAY_H_REVISION_FIRST__
#define __SOUNDPLAY_H_REVISION_FIRST__
#define uchar unsigned char
#define uint unsigned int
sbit sound=P2^0;
uint counter=0;
uchar code array[]=
{
0x18, 0x30, 0x1C, 0x10,
0x20, 0x40, 0x1C, 0x10,
0x18, 0x10, 0x20, 0x10,
0x1C, 0x10, 0x18, 0x40,
0x1C, 0x20, 0x20, 0x20,
0x1C, 0x20, 0x18, 0x20,
0x20, 0x80, 0xFF, 0x20,
0x30, 0x1C, 0x10, 0x18,
0x20, 0x15, 0x20, 0x1C,
0x20, 0x20, 0x20, 0x26,
0x40, 0x20, 0x20, 0x2B,
0x20, 0x26, 0x20, 0x20,
0x20, 0x30, 0x80, 0xFF,
0x20, 0x20, 0x1C, 0x10,
0x18, 0x10, 0x20, 0x20,
0x26, 0x20, 0x2B, 0x20,
0x30, 0x20, 0x2B, 0x40,
0x20, 0x20, 0x1C, 0x10,
0x18, 0x10, 0x20, 0x20,
0x26, 0x20, 0x2B, 0x20,
0x30, 0x20, 0x2B, 0x40,
0x20, 0x30, 0x1C, 0x10,
0x18, 0x20, 0x15, 0x20,
0x1C, 0x20, 0x20, 0x20,
0x26, 0x40, 0x20, 0x20,
0x2B, 0x20, 0x26, 0x20,
0x20, 0x20, 0x30, 0x80,
0x20, 0x30, 0x1C, 0x10,
0x20, 0x10, 0x1C, 0x10,
0x20, 0x20, 0x26, 0x20,
0x2B, 0x20, 0x30, 0x20,
0x2B, 0x40, 0x20, 0x15,
0x1F, 0x05, 0x20, 0x10,
0x1C, 0x10, 0x20, 0x20,
0x26, 0x20, 0x2B, 0x20,
0x30, 0x20, 0x2B, 0x40,
0x20, 0x30, 0x1C, 0x10,
0x18, 0x20, 0x15, 0x20,
0x1C, 0x20, 0x20, 0x20,
0x26, 0x40, 0x20, 0x20,
0x2B, 0x20, 0x26, 0x20,
0x20, 0x20, 0x30, 0x30,
0x20, 0x30, 0x1C, 0x10,
0x18, 0x40, 0x1C, 0x20,
0x20, 0x20, 0x26, 0x40,
0x13, 0x60, 0x18, 0x20,
0x15, 0x40, 0x13, 0x40,
0x18, 0x80, 0x00
};
⑥ 有谁用单片机做过小型音乐喷泉
想做一个小型的音乐喷泉,需要用到电磁阀。用单片机的ADC采样音乐信号,根据音乐信号电压高低,可以准确控制电磁阀开闭,实现音乐喷泉效果。用c语言完全可以编程实现,当然汇编语言也可以。