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