Sensor Suara Arduino dengan Indikator LED dan LCD untuk Pemantauan Tingkat Suara Real-Time
Komponen dan Perlengkapan
- Arduino UNO (1 unit)
- Papan Percobaan Tanpa Ukuran Penuh (1 unit)
- Baterai 9V (generic) (1 unit) - Opsional.
- Konektor 9V ke Barrel Jack (1 unit) - Opsional.
- Kabel Jumper Laki/Laki (1 unit)
- Kabel Jumper Laki/Perempuan (1 unit)
- LCD Standar Adafruit - 16x2 Putih pada Biru (1 unit) - Saya menggunakan yang dengan backpack i2c.
- Modul Sensor Suara KY-038 (1 unit)
- LED 5 mm: Kuning (2 unit)
- LED 5 mm: Hijau (4 unit)
- LED 5 mm: Merah (2 unit)
- LED 5 mm: Putih (4 unit)
- LED 5 mm: Biru (4 unit)
- Resistor 100 ohm (8 unit) - Untuk LED putih dan biru.
- Resistor 220 ohm (4 unit) - Untuk LED merah dan kuning.
- Resistor 330 ohm (4 unit) - Untuk LED hijau.
Aplikasi dan Layanan Online
Tentang Proyek Ini
Proyek ini tentang memantau data tingkat suara yang dirilis, dihasilkan atau dikeluarkan(?) oleh speaker.
Aaah... ini adalah hasil dari rasa ingin tahu dan kebosanan.
Saya menggunakan modul sensor suara mikrofon [KY-038] untuk menangkap nilai yang kemudian saya kumpulkan dari Serial Monitor, pindahkan ke spreadsheet, diurutkan secara naik lalu pilih nilai yang muncul lebih berulang daripada yang lain atau hanya yang saya sukai.
Saya memilih sejumlah variabel dari rentang terendah hingga menengah dan tinggi.
Variabel dari rentang nilai terendah akan mengaktifkan LED Kuning, yang menengah akan mengaktifkan LED Hijau, dan yang tinggi akan mengaktifkan LED Merah.
LED akan diaktifkan atau menyala ketika nilai sensor tertentu tercapai atau terdeteksi oleh sensor suara.
Saya juga menyertakan LCD opsional untuk melihat nilai secara real-time sekadar untuk kesenangan.
Pada dasarnya saya hanya mengupgrade kode ini
Menambahkan beberapa kode dari sini
Dan dari sini
Kode LCD adalah dari proyek saya sebelumnya
Dan Komentar Username MAS3 di sini
Saya mengalami masalah di mana data yang muncul pada LCD memiliki sisa digit dari nilai sensor sebelumnya. Misalnya, ketika nilai saat ini seharusnya 619 yang ada pada Serial Monitor, tetapi menjadi 6194, karena nilai sebelumnya adalah 1234.
Unduh file .cpp dan .h di sini.
******************************************************************************
Tautan Media Sosial untuk Diikuti (Saya maksud, jika Anda mau):
Facebook - https://fb.me/HeathenHacks
Twitter - https://twitter.com/HeathenHacks
Instagram - https://instagr.am/HeathenHacks
******************************************************************************
Kode
SoundSensorLEDwDataArduino
Saya menambahkan komentar pada kode untuk beberapa penjelasan. Saya harap saya tahu apa yang saya lakukan. lol.
#include "Arduino.h" #include "LiquidCrystal_PCF8574.h" #define LCD_ADDRESS 0x27 #define LCD_ROWS 2 #define LCD_COLUMNS 16 #define SCROLL_DELAY 150 #define BACKLIGHT 255 LiquidCrystal_PCF8574 LCDi2C; //Add name and position of the LED bulb on the breadboard + Where it's connected on the Arduino. // LED1 is LED Bulb 1 on the breadboard and 3 is Digital PWM 3 on the Arduino. int LED1=3; int LED2=4; int LED3=5; int LED4=6; int LED5=7; int LED6=8; int LED7=9; int LED8=10; int soundSensor=2; // Digital Pin 2 on the Arduino is where the "DO" of the Sound Sensor is connected. int sensorValue = analogRead(A0); //This is where the "AO" of the Sound Sensor is connected. boolean LEDStatus=false; void setup () { Serial.begin(9600); LCDi2C.begin(LCD_COLUMNS, LCD_ROWS, LCD_ADDRESS, BACKLIGHT); //These are the ones that we defined earlier. pinMode(soundSensor,INPUT); //Because our Sound Sensor is an Input Device. pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); pinMode(LED3, OUTPUT); pinMode(LED4, OUTPUT); pinMode(LED5, OUTPUT); pinMode(LED6, OUTPUT); pinMode(LED7, OUTPUT); pinMode(LED8, OUTPUT); pinMode(sensorValue, OUTPUT); //sensorValue is declared as an output because it will be printed on the LCD and Serial Monitor. } void loop() { int sensorValue=analogRead(sensorValue); int SensorData=digitalRead(soundSensor); if(SensorData=1){ if(LEDStatus==false){ LEDStatus=true; Serial.println(sensorValue); //This will be printed on the Serial Monitor just to make sure that the data on the LCD is the same. LCDi2C.setCursor(0,0); //This is to make the text not scroll up and disappear then reapper again when sensorValue data is being added. LCDi2C.print("SoundLevel Data:"); //The text that will appear and stay on Row 1 of the LCD. LCDi2C.setCursor(0,1); //This is to make the text not scroll up and disappear then reapper again when sensorValue data is being added. LCDi2C.print(sensorValue); // The data that will appear on the LCD. LCDi2C.print(" "); // This is to prevent extra digit from the past value appearing on current value. Like, when the past value is 1234, then the current is supposed to 619, but it appears as 6194. } if(sensorValue>=750) { digitalWrite(LED8,HIGH); } else{ LEDStatus=false; digitalWrite(LED8,LOW); } if(sensorValue>=735) { digitalWrite(LED7,HIGH); } else{ LEDStatus=false; digitalWrite(LED7,LOW); } if(sensorValue>=725) { digitalWrite(LED6,HIGH); } else{ LEDStatus=false; digitalWrite(LED6,LOW); } if(sensorValue>=720) { digitalWrite(LED5,HIGH); } else{ LEDStatus=false; digitalWrite(LED5,LOW); } if(sensorValue>=715) { digitalWrite(LED4,HIGH); } else{ LEDStatus=false; digitalWrite(LED4,LOW); } if(sensorValue>=700) { digitalWrite(LED3,HIGH); } else{ LEDStatus=false; digitalWrite(LED3,LOW); } if(sensorValue>=675) { digitalWrite(LED2,HIGH); } else{ LEDStatus=false; digitalWrite(LED2,LOW); } if(sensorValue>=650) { digitalWrite(LED1,HIGH); } else{ LEDStatus=false; digitalWrite(LED1,LOW); } } else{ LEDStatus=false; //Not really sure why I added this. Lol. digitalWrite(LED1,LOW); digitalWrite(LED2,LOW); digitalWrite(LED3,LOW); digitalWrite(LED4,LOW); digitalWrite(LED5,LOW); digitalWrite(LED6,LOW); digitalWrite(LED7,LOW); digitalWrite(LED8,LOW); } }
Skematik
Hanya ikuti kabel dari ujung ke ujung.