### 4.3.4 Intelligenter Geräuschmesser
#### 4.3.4.1 Überblick

Der intelligente Geräuschmesser, auch bekannt als Schallpegelmesser oder Dezibelmesser, wird zur Erfassung von Lärm verwendet. Lärm wird in verschiedene Pegel eingeteilt, und das Mikrofon auf dem micro:bit erkennt dessen Intensität in der Umgebung in Echtzeit. Entsprechend den Pegeln teilt der micro:bit diese in mehrere Stufen ein.
In diesem Projekt zeigt das OLED-Display den aktuellen Geräuschpegel in Echtzeit an, und die 5×5-LED-Matrix schaltet entsprechend dem Geräuschpegel einige LEDs ein/aus.
Diese Art von Gerät hat die technische Hürde und die Kosten der Lärmüberwachung deutlich gesenkt und wird daher häufig in der Umweltlärmüberwachung, Arbeitssicherheit, auf Baustellen und in Unterhaltungsstätten eingesetzt.

#### 4.3.4.2 Bauteilwissen

**Microbit-Mikrofon**

Das micro:bit V2 Board ist mit einem Mikrofon ausgestattet, das Geräusche und Audiosignale erkennt. Das Mikrofon befindet sich oben auf der Platine (das kleine Loch, das zur Aufnahme von Umgebungsgeräuschen dient; neben dem Loch befindet sich eine LED-Anzeige). Der Chip, der das Mikrofon steuert und verarbeitet, befindet sich auf der Rückseite der Platine.
Bei der Verwendung legen Sie das micro:bit-Board einfach mit der Vorderseite nach oben.

Wenn das Board Schall erkennt, leuchtet die Mikrofon-LED-Anzeige auf.


#### 4.3.4.3 Benötigte Komponenten
| |  | |
| :--: | :--: | :--: |
| micro:bit V2 Hauptplatine ×1 | micro:bit shield ×1 | OLED-Display ×1 |
| |||
| micro USB-Kabel ×1 | 4-Pin-Kabel ×1 | Batteriehalter ×1 |
|| | |
|AA-Batterien(**selbst bereitgestellt**) ×6| | |
#### 4.3.4.4 Schaltplan
⚠️ **Achten Sie beim Verdrahten bitte auf die Drahtfarbe.**
| OLED-Display | Drahtfarbe | Pin auf micro:bit-Shield | Pin des micro:bit-Boards |
| :----------: | :--------: | :----------------------: | :----------------------: |
| GND | black | G | G |
| VCC | red | V2 | V |
| SDA | blue | 20 | P20 |
| SCL | green | 19 | P19 |

#### 4.3.4.5 Ablauf des Codes

#### 4.3.4.6 Testcode
⚠️ **Tipp 1: Bevor Sie den Code auf das micro:bit-Board herunterladen, importieren Sie bitte die Bibliotheksdatei “oled_ssd1306\.py”, siehe ** “[Bibliothek in MU importieren](https://docs.keyestudio.com/projects/KS4050/en/latest/docs/MicroPython/MU_development_environment.html#import-library-on-mu)” .

**Vollständiger Code:**
```Python
# import related libraries
from microbit import *
from oled_ssd1306 import *
# initialize and clear oled
initialize() # OLED initialisieren
clear_oled() # OLED löschen
# function to map any range of numbers to another range
def map(value, fromMin, fromMax, toMin, toMax):
fromRange = fromMax - fromMin
toRange = toMax - toMin
valueScaled = float(value - fromMin) / float(fromRange)
return toMin + (valueScaled * toRange)
# set of images for simple bar chart
graph5 = Image("99999:""99999:""99999:""99999:""99999")
graph4 = Image("00000:""99999:""99999:""99999:""99999")
graph3 = Image("00000:""00000:""99999:""99999:""99999")
graph2 = Image("00000:""00000:""00000:""99999:""99999")
graph1 = Image("00000:""00000:""00000:""00000:""99999")
graph0 = Image("00000:""00000:""00000:""00000:""00000")
allGraphs = [graph0, graph1, graph2, graph3, graph4, graph5]
# ignore first sound level reading
# soundLevel = microphone.sound_level()
# sleep(100)
while True:
# map sound levels from range 0-255 to range 0-5 for choosing graph image
soundLevel = int(map(microphone.sound_level(), 0, 255, 0, 5))
display.show(allGraphs[soundLevel])
clear_oled() # OLED löschen
add_text(0, 0, "Acoustic Sound Level:") # Display the character string in the corresponding position of OLED
add_text(0, 2, str(microphone.sound_level())) # Display soundLevel in the corresponding position of OLED
sleep(200)
```

**Kurze Erklärung:**
① Importieren der Bibliotheken microbit und oled_ssd1306.
```Python
from microbit import *
from oled_ssd1306 import *
```
② OLED-Pixel initialisieren, OLED löschen.
```Python
initialize() # OLED initialisieren
clear_oled() # OLED löschen
```
③ Definieren einer Map-Subfunktion (zum Abbilden eines beliebigen Zahlenbereichs auf einen anderen).
```Python
def map(value, fromMin, fromMax, toMin, toMax):
fromRange = fromMax - fromMin
toRange = toMax - toMin
valueScaled = float(value - fromMin) / float(fromRange)
return toMin + (valueScaled * toRange)
```
④ Definieren eines Satzes einfacher Balkendiagramm-Bilder.
```Python
graph5 = Image("99999:""99999:""99999:""99999:""99999")
graph4 = Image("00000:""99999:""99999:""99999:""99999")
graph3 = Image("00000:""00000:""99999:""99999:""99999")
graph2 = Image("00000:""00000:""00000:""99999:""99999")
graph1 = Image("00000:""00000:""00000:""00000:""99999")
graph0 = Image("00000:""00000:""00000:""00000:""00000")
allGraphs = [graph0, graph1, graph2, graph3, graph4, graph5]
```
⑤ Abbilden des Schallwertbereichs von 0–255 auf 0–5 zur Auswahl des Grafikbildes.
```Python
soundLevel = int(map(microphone.sound_level(), 0, 255, 0, 5))
display.show(allGraphs[soundLevel])
```
⑥ Den ermittelten Wert auslesen und auf dem OLED anzeigen.
```Python
clear_oled() # OLED löschen
add_text(0, 0, "Acoustic Sound Level:") # Zeigt den Zeichenstring an der entsprechenden Position des OLED an
add_text(0, 2, str(microphone.sound_level())) # Zeigt den Schallpegel an der entsprechenden Position des OLED an
sleep(200)
```
#### 4.3.4.7 Testergebnis

Nach dem Verdrahten und dem Einschalten über das micro USB-Kabel schließen Sie eine externe Stromversorgung (6 AA-Batterien) an, um eine ausreichende Stromversorgung sicherzustellen, und klicken Sie auf „Flash“, um den Code auf das micro:bit-Board herunterzuladen.

Nach dem Hochladen des Testcodes drücken Sie die Reset-Taste auf der Rückseite des micro:bit.

Pusten Sie Luft (oder erzeugen Sie sehr lauten Lärm) in das Mikrofon auf dem micro:bit-Board (⚠️ **besondere Erinnerung: Luftpusten zeigt den Effekt deutlicher**), und das OLED-Display zeigt in Echtzeit Informationen zur Intensität des Pustens (oder Lärms) an, sodass Benutzer die Stärke intuitiv erfassen können. Gleichzeitig erhöht oder verringert die 5×5-LED-Punktmatrix auf dem micro:bit-Board je nach Intensität des Pustens (oder Lärms) schrittweise die Anzahl der beleuchteten Zeilen und signalisiert so die Stärke.

⚠️ **Hinweis: Die Bausteine im Experiment sind nicht in diesem Kit enthalten.**
(**Tipp:** Wenn kein Ergebnis angezeigt wird, drücken Sie bitte die Reset-Taste des micro:bit-Boards.)
