使用声音传感器的Arduino控制的音乐喷泉
原文:https://circuitdigest.com/microcontroller-projects/arduino-controlled-water-fountain-using-sound-sensor
使用聲音傳感器的Arduino控制的音樂噴泉
ARDUINO項目
德巴斯·帕里達(Debasis Parida) 2019年8月26日修改
使用聲音傳感器的Arduino控制的噴泉
有幾個噴泉可以無條件地灑水并具有一些有趣的照明效果。因此,我徘徊在設(shè)計一個創(chuàng)新的噴泉上,該噴泉可以響應(yīng)外部音樂并根據(jù)音樂節(jié)拍灑水。聽起來很有趣嗎?
Arduino飲水機的基本思想是從任何外部聲音源(例如手機,iPod,PC等)獲取輸入,對聲音進行采樣并將其分解為不同的電壓范圍,然后使用輸出打開各種繼電器。我們首先使用基于電容麥克風的聲音傳感器模塊在聲源上執(zhí)行操作,以將聲音分成不同的電壓范圍。然后,電壓將被饋送到運放,以將聲級與特定限制進行比較。較高的電壓范圍將對應(yīng)于繼電器開關(guān)ON,該繼電器開關(guān)包括根據(jù)歌曲的節(jié)拍和節(jié)奏操作的音樂噴泉。因此,我們在這里使用Arduino和聲音傳感器構(gòu)建此Musical Fountain。
所需材料
聲音傳感器的工作
聲音傳感器模塊是一個基于駐極體麥克風的簡單電子板,用于感應(yīng)環(huán)境中的外部聲音。它基于LM393功率放大器和駐極體麥克風,可用于檢測是否有超出設(shè)定閾值限制的聲音。模塊輸出是數(shù)字信號,指示聲音大于或小于閾值。
電位計可用于調(diào)節(jié)傳感器模塊的靈敏度。當聲源低于/高于電位計設(shè)置的閾值時,模塊輸出為HIGH / LOW。相同的聲音傳感器模塊也可用于以分貝為單位測量聲音水平。
聲音傳感器電路圖
眾所周知,在聲音傳感器模塊中,基本輸入設(shè)備是麥克風,該麥克風將聲音信號轉(zhuǎn)換為電信號。但是由于聲音傳感器的電信號輸出非常小,很難分析,因此我們使用了一個NPN晶體管放大器電路來放大它,并將輸出信號饋送到Op-的同相輸入端。放大器 LM393 OPAMP在這里用作比較器,比較來自麥克風的電信號和來自分壓器電路的參考信號。如果輸入信號大于參考信號,則OPAMP的輸出將為高電平,反之亦然。
您可以按照“運算放大器”電路部分的介紹,了解有關(guān)其工作原理的更多信息。
音樂噴泉電路圖
如上面的音樂噴泉電路圖所示,聲音傳感器由Arduino Nano的3.3V電源供電,聲音傳感器模塊的輸出引腳連接到Nano的模擬輸入引腳(A6)。您可以使用任何模擬引腳,但請確保在程序中進行更改。繼電器模塊和直流泵由外部12VDC電源供電,如圖所示。繼電器模塊的輸入信號連接到Nano的數(shù)字輸出引腳D10。為了獲得照明效果,我選擇了兩種不同顏色的LED,并將它們連接到Nano的兩個數(shù)字輸出引腳(D12,D11)。
在這里,泵的連接方式是:當將高脈沖信號提供給繼電器模塊的輸入時,繼電器的COM觸點將連接到NO觸點,并且電流將成為閉合電路路徑,以流經(jīng)泵到達激活水流。否則,泵將保持關(guān)閉狀態(tài)。根據(jù)聲音輸入,從Arduino Nano產(chǎn)生HIGH / LOW脈沖。
將整個電路焊接到穿孔板上后,如下圖所示:
在這里,我們使用了一個塑料盒作為噴泉容器,并使用了微型5v泵作為噴泉,我們之前在消防機器人中使用了該泵:
編程Arduino Nano用于跳舞噴泉
該Arduino水噴泉項目的完整程序在頁面底部給出。但是在這里,我只是為了更好地理解而逐部分地進行解釋:
程序的第一部分是聲明必要的變量,以分配我們將在程序的下一個塊中使用的引腳號。然后定義一個常數(shù)REF,其值是聲音傳感器模塊的參考值。分配值700是聲音傳感器的輸出電信號的字節(jié)等效值。
int sensor = A6; int redled = 12; int greenled = 11; int pump = 10;#define REF 700在*無效設(shè)置*功能中,**我們使用了pinMode函數(shù)來分配引腳的INPUT / OUTPUT數(shù)據(jù)方向。在這里,傳感器被視為輸入,所有其他設(shè)備均被用作輸出。
void setup() {pinMode(sensor,INPUT);pinMode(redled,OUTPUT);pinMode(greenled,OUTPUT);pinMode(pump,OUTPUT); }在無限循環(huán)內(nèi),調(diào)用了AnalogRead函數(shù),該函數(shù)讀取從傳感器引腳輸入的模擬值并將其存儲在變量sensor_value中。
int sensor_value = AnalogRead(sensor);在最后一部分中,使用if-else循環(huán)將輸入模擬信號與參考值進行比較。如果大于參考值,則所有輸出引腳均被賦予HIGH輸出,從而所有LED和Pump均被激活,否則一切保持OFF。在這里,我們還給出了70毫秒的延遲,以區(qū)別繼電器的ON / OFF時間。
if(sensor_value> REF){ digitalWrite(greenled,HIGH); digitalWrite(redled,HIGH); digitalWrite(pump,HIGH); delay(70); } else { digitalWrite(greenled,LOW); digitalWrite(redred,LOW); digitalWrite(pump,LOW); delay(70); }
這是由Arduino控制的噴泉的工作方式,下面提供帶有工作視頻的完整代碼。
代碼
int sensor = A6; int redled = 12; int greenled = 11; int pump = 10;#define REF 700void setup() {pinMode(sensor,INPUT);pinMode(redled,OUTPUT);pinMode(greenled,OUTPUT);pinMode(pump,OUTPUT);} void loop() {int sensor_value = analogRead (sensor);if (sensor_value>REF){digitalWrite(greenled,HIGH);digitalWrite(redled,HIGH);digitalWrite(pump,HIGH);delay(70);}else{digitalWrite(greenled,LOW);digitalWrite(redled,LOW);digitalWrite(pump,LOW);delay(70);} }總結(jié)
以上是生活随笔為你收集整理的使用声音传感器的Arduino控制的音乐喷泉的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python实现简单购物商城_pytho
- 下一篇: 从底层结构开始学习FPGA(5)----