Arduino-Schallsensor mit LED-Anzeige & LCD: Echtzeit-Pegelmesser
Komponenten und Zubehör
| Arduino UNO | 1 |
| Steckplatine (Full Size) | 1 |
| 9V-Batterie + Hohlstecker-Adapter (optional) | 1 |
| Jumper-Kabel (M/M, M/F) | je 1 Satz |
| LCD 16×2 mit I2C-Backpack (Adresse 0x27) | 1 |
| Schallsensor-Modul KY-038 | 1 |
| 5 mm LEDs: Gelb | 2 |
| 5 mm LEDs: Grün | 4 |
| 5 mm LEDs: Rot | 2 |
| 5 mm LEDs: Weiß | 4 |
| 5 mm LEDs: Blau | 4 |
| Widerstände 100 Ω (für Weiß/Blau) | 8 |
| Widerstände 220 Ω (für Rot/Gelb) | 4 |
| Widerstände 330 Ω (für Grün) | 4 |
Apps und Online-Dienste
- Arduino IDE
Über dieses Projekt
Dieses Projekt visualisiert den Schalldruckpegel in Echtzeit: Ein KY-038-Mikrofonsensor liefert Analogwerte, die in acht Stufen auf einer LED-Leiste (2× Gelb = leise, 4× Grün = mittel, 2× Rot = laut) sowie auf einem I2C-LCD dargestellt werden. Die Schwellenwerte wurden empirisch durch Aufzeichnen der Seriellen Ausgabe, Sortieren in einer Tabelle und Auswählen häufiger Werte ermittelt.
Ein bekanntes Problem: Beim Überschreiben des LCD-Werts blieben Reste der vorherigen Ziffer stehen (z. B. „6194“ statt „619“). Lösung: Ein Leerzeichen nach dem Wert ausgeben (lcd.print(" ")), um Überreste zu löschen.
Der Code kombiniert Snippets aus verschiedenen Quellen und eigenen Vorprojekten.
Arduino-Code (SoundSensorLEDwData.ino)
#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;
// LED-Pins (Breadboard-Position → Arduino-Pin)
int LED1 = 3; int LED2 = 4; int LED3 = 5; int LED4 = 6;
int LED5 = 7; int LED6 = 8; int LED7 = 9; int LED8 = 10;
const int soundSensorDO = 2; // Digitalausgang KY-038 (DO)
const int soundSensorAO = A0; // Analogausgang KY-038 (AO)
bool LEDStatus = false;
void setup() {
Serial.begin(9600);
LCDi2C.begin(LCD_COLUMNS, LCD_ROWS, LCD_ADDRESS, BACKLIGHT);
pinMode(soundSensorDO, INPUT);
pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT); pinMode(LED4, OUTPUT);
pinMode(LED5, OUTPUT); pinMode(LED6, OUTPUT);
pinMode(LED7, OUTPUT); pinMode(LED8, OUTPUT);
}
void loop() {
int sensorValue = analogRead(soundSensorAO);
int sensorDigital = digitalRead(soundSensorDO);
if (sensorDigital == HIGH) {
if (!LEDStatus) {
LEDStatus = true;
Serial.println(sensorValue);
LCDi2C.setCursor(0,0);
LCDi2C.print("SoundLevel Data:");
LCDi2C.setCursor(0,1);
LCDi2C.print(sensorValue);
LCDi2C.print(" "); // verhindert Ziffern-Reste
}
// Schwellenwerte (empirisch ermittelt, anpassbar)
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;
digitalWrite(LED1, LOW); digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW); digitalWrite(LED4, LOW);
digitalWrite(LED5, LOW); digitalWrite(LED6, LOW);
digitalWrite(LED7, LOW); digitalWrite(LED8, LOW);
}
}
Schaltplan
Verdrahtung gemäß Bild: KY-038 AO → A0, DO → D2; LEDs an D3–D10 mit passenden Vorwiderständen; LCD an I2C (A4/A5).
Hinweise & Links
- Bibliothek
LiquidCrystal_PCF8574für I2C-LCD erforderlich. - Schwellenwerte (650–750) hängen von Sensor, Umgebung und Versorgung ab – kalibrieren Sie über Serial Monitor.
- Social Media: Facebook | Twitter | Instagram
Herstellungsprozess
- Würth Elektronik stellt WSEN-ITDS vor: Kompakten, niedrigenergetischen 3-Achsen MEMS-Beschleunigungssensor für Industrial IoT
- Sensordaten in Raspberry Pi integrieren: GPS & MPU-9150 Hands-On Guide
- Line-Tracking-Sensor mit Raspberry Pi – Einfacher KY-033 Tür/Line Detektor
- Robuste Temperatur- & Sensor-API auf Raspberry Pi mit GY-91 Modul bauen
- Die Kraft visueller Daten im IoT-Ökosystem entfesseln
- Sechs Schlüsselprinzipien für High-Impact Sensor-getriebene IoT-Applikationen
- Arch Systems und Flex transformieren Fertigungsdaten mit Advanced Analytics
- Robotergreifer mit hautähnlichem weichem Tastsensor für präzises Handling
- Präzises WiFi-RSSI-Tracking für ISS-Sensoren
- Revolutionäre Materialien treiben LED-Datenkommunikation der nächsten Generation an