2020/01/09 星期四 作者:Astilbe 問題:怎么制作樓道里的聲控?zé)裟兀?/strong> 本小結(jié)我們將應(yīng)用聲音傳感器。
聲音傳感器在日常生活中非常常見,例如樓道里的聲控開關(guān):傳感器感應(yīng)到腳步聲,從而點(diǎn)亮樓道里的燈,一旦人離開后,又熄滅。
聲音傳感器的作用相當(dāng)于一個話筒(麥克風(fēng))。它用來接收聲波,顯示聲音的振動圖象,但不能對噪聲的強(qiáng)度進(jìn)行測量。
該傳感器內(nèi)置一個對聲音敏感的電容式駐極體話筒。聲波使話筒內(nèi)的駐極體薄膜振動,導(dǎo)致電容的變化,而產(chǎn)生與之對應(yīng)變化的微小電壓。 這一電壓隨后被轉(zhuǎn)化成0-5V的電壓,經(jīng)過A/D轉(zhuǎn)換被采集器接受,并傳送給計算機(jī)。
一般而言,用于聲音檢測,模塊有2個輸出: 1、AIN,模擬量輸出,實(shí)時輸出麥克風(fēng)的電壓信號 2、DIN,當(dāng)聲音強(qiáng)度到達(dá)某個閥值時,輸出高低電平信號
因此,我們將AIN接模擬信號引腳A3,DIN接數(shù)字信號引腳D8,同時利用板載LED(13號腳)實(shí)現(xiàn)一個簡單的聲控?zé)簟?/span> 簡單來說,我們需要實(shí)現(xiàn)以下功能: 傳感器接受聲音信息,并把它轉(zhuǎn)換為信號給單片機(jī)(在這里為了更好的看到收集到的數(shù)據(jù),我們將信息通過串口傳給PC) 當(dāng)傳感器接收到信號,超過閾值時會輸出高電平,單片機(jī)獲取后點(diǎn)亮13號引腳的LED燈。
實(shí)現(xiàn)代碼如下: int num; void setup() { // put your setup code here, to run once: Serial.begin(9600); pinMode(A3,INPUT_AIN);//初始化A3,接受聲音的模擬信號 pinMode(8,INPUT);//初始化D8引腳,接受閾值高低電平 pinMode(13,OUTPUT);//初始化13號引腳,控制LED }
void loop() { // put your main code here, to run repeatedly: if(digitalRead(8)){//當(dāng)接收到高電平時 digitalWrite(13,LOW);//LED燈亮 delay(1000); //延遲效果 }else{ digitalWrite(13,HIGH); //否則燈滅 delay(100); }; num=analogRead(A3); //接收傳來的模擬信號,并傳給PC Serial.println(num); } 當(dāng)沒有較大響動時:  
當(dāng)有較大聲響時:
 
本文轉(zhuǎn)載自Stduino網(wǎng)http:///forum.php?mod=viewthread&tid=15&page=1&extra=#pid15
|