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