① 音樂噴泉的原理是什麼呢怎麼這么有節奏
噴泉是一種將水或其他液體經過一定壓力通過噴頭噴灑出來具有特定形狀的組合體。現在的噴泉一般為完全依靠噴泉設備的人工造景噴泉。主要就是通過變頻器的控制實現節奏韻律,音樂噴泉中水形變化豐富,配合燈光給人真實直觀的美感。音樂噴泉中的各種搖擺能讓人感受到噴泉的柔性美。徑向搖擺的產生是由於水面下設搖擺機構,使水景優美動人,賞心悅目,給人神奇的感覺,是時代高科技發展的表現。
搖擺噴泉的位置和運動速度的變化是產生搖擺水型瀟灑風彩的重要因素。噴泉搖擺機構的位置感測器應當是防水的不接觸定位裝置。經常採用由磁鐵感應的霍爾感測器、光纖引導的光電感測器或磁鐵吸引的旋轉位置編碼器等。
例如對於採用位置編碼器的噴泉搖擺機構的定位裝置包括:裝在搖擺電機軸上的位置編碼器、高速計數器、控制計算機以及通信介面等。
由於搖擺機構的連桿一般會有較大的間隙,為了達到精確定位只能使搖擺機構從一個方向到達定位點,才能保證其重復精度。因此,搖擺機構需要停車時,每次都必須從一個方向到達定位點。
搖擺機構的定位精度受運動力矩與阻力矩的影響。運動力矩決定於電動機的電源電壓和停車前的運動速度等,而阻力矩則由搖擺機構的摩擦力、水流的速度、周圍的風力等合成。可見,這些都是不能事先確定的因素。所以,為了達到精確定位的目的,我們必須每次改變其控制參數。對於採用電動機能耗制動來精確定位的控制參數一般有兩個,直流制動電流的大小和啟動制動時間。對計算機控制較為方便的方式是採用改變制動時間。
在控制系統中,電動機制動時間可用檢測到位點的偏差來進行修正。根據搖擺機構定位偏差值的統計數據,經過數學模型的計算,最後確定製動時間。
當搖擺機構的運動速度要與樂曲的節奏同步時,就要求得它的運動速度,並對搖擺電機進行調速。由於速度就是位移對時間的微分,所以從搖擺電機軸上位置編碼器送來的脈沖數,就可以在計算機中求出它的運動速度。
② 求一個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語言完全可以編程實現,當然匯編語言也可以。