如何使用模擬聲音傳感器與Arduino
介紹
在本課中,我將向您展示Arduino如何使用簡(jiǎn)單的聲音傳感器識(shí)別聲音。
最后,你會(huì)建立一個(gè)光控制器系統(tǒng),讓你打開(kāi)和關(guān)閉一個(gè)LED與按鈕或拍手。
這是我們名為Arduino初學(xué)者的24部分系列的第11課。如果你是新來(lái)的,歡迎!一定要跟著我,這樣你就不會(huì)錯(cuò)過(guò)即將到來(lái)的課程。
它是如何工作的
模擬聲音傳感器是一個(gè)很小但非常方便的模塊。在它的核心,它使用一個(gè)麥克風(fēng)來(lái)檢測(cè)聲音的強(qiáng)度。
聲波擊中麥克風(fēng)內(nèi)部的隔膜。這個(gè)薄板來(lái)回振動(dòng),產(chǎn)生微小的電壓變化。Arduino將這些電壓變化作為模擬信號(hào)讀取。
?聲音越大,電壓越高。
?聲音越小,電壓越低。
如果你覺(jué)得這很熟悉,那是因?yàn)槲覀冊(cè)谄渌M件中看到了類似的行為:
?光傳感器根據(jù)亮度變化電阻。
?當(dāng)你轉(zhuǎn)動(dòng)電位器時(shí),它們的電阻會(huì)發(fā)生變化。
?麥克風(fēng)的電壓隨聲音的變化而變化。
當(dāng)然,這種傳感器非常簡(jiǎn)單。它不能像你的智能手機(jī)那樣識(shí)別單詞或聲音。但它很適合檢測(cè)噪音水平、拍手聲、敲擊聲或其他尖銳的聲音。
一些聲音傳感器包括一個(gè)小電位器來(lái)調(diào)節(jié)靈敏度。我今天用的這個(gè)沒(méi)有,這實(shí)際上使它更容易使用。
項(xiàng)目
我們將建立一個(gè)燈光控制系統(tǒng),讓我們可以使用按鈕或拍手來(lái)打開(kāi)和關(guān)閉LED。這兩個(gè)控件可以互換工作。
你需要什么(來(lái)自MindPlus Arduino編碼工具包):
?Arduino UNO。
?I/O擴(kuò)展屏蔽。
?Red LED。
?按鈕。
?模擬聲音傳感器。
?幾根跳線。
組裝非常簡(jiǎn)單:
?將擴(kuò)展護(hù)罩連接到Arduino上。
?將LED連接到2號(hào)端口。
?將按鈕連接到端口3。
?將聲音傳感器連接到模擬端口A5。
這是它!
如果您需要額外幫助,請(qǐng)按照下面的接線圖進(jìn)行操作。
代碼
現(xiàn)在一切都連接好了,讓我們繼續(xù)編寫(xiě)代碼。
您可以在本系列的GitHub存儲(chǔ)庫(kù)中找到完整的草圖。
將其復(fù)制到Arduino IDE中,但在上傳之前,讓我們了解一下發(fā)生了什么。
我們從定義引腳開(kāi)始:引腳2上的LED,引腳3上的按鈕,以及A5上的聲音傳感器。我們還設(shè)置了一個(gè)變量來(lái)記住LED當(dāng)前是打開(kāi)還是關(guān)閉。
該按鈕配置了Arduino的內(nèi)部上拉電阻。這意味著當(dāng)按鈕沒(méi)有按下時(shí),引腳讀數(shù)為高,當(dāng)你按下它時(shí),它會(huì)變低。我們使用狀態(tài)的變化來(lái)決定何時(shí)切換LED。
對(duì)于聲音傳感器,我們讀取0到1023之間的模擬值。當(dāng)你拍手時(shí),價(jià)值急劇上升。我們將其與閾值進(jìn)行比較。如果它更高,我們把它當(dāng)作鼓掌。
為了避免誤觸發(fā),有一種被稱為脫光的短暫延遲,這樣回聲或背景噪音就不會(huì)一直快速切換光線。
按鈕和拍擊檢測(cè)都調(diào)用相同的函數(shù):toggleLED。這個(gè)功能只是翻轉(zhuǎn)LED的狀態(tài)。如果它開(kāi)著,就把它關(guān)掉。如果它關(guān)了,就打開(kāi)它。
這樣,無(wú)論你使用哪種輸入方式,按鈕或拍擊,系統(tǒng)都保持同步。
去測(cè)試一下吧。拍拍你的手來(lái)打開(kāi)和關(guān)閉LED。你也可以用按鈕來(lái)控制燈光。
本文編譯自hackster.io





