### 4.3.4 Testeur de bruit intelligent
#### 4.3.4.1 Aperçu

Le testeur de bruit intelligent, également appelé sonomètre ou décibelmètre, sert à détecter le bruit. Le bruit est classé en différents niveaux, et le microphone du micro:bit détectera son intensité dans l'environnement en temps réel. En fonction des niveaux, le micro:bit les divise en plusieurs grades.
Dans ce projet, l'écran OLED affichera le niveau sonore actuel en temps réel, et la matrice de LED 5×5 allumera/éteindra certaines LED en fonction du niveau sonore.
Ce type d'appareil a considérablement abaissé le seuil technique et le coût de la surveillance du bruit, il est donc largement utilisé pour la surveillance du bruit ambiant, la santé et sécurité au travail, les chantiers de construction, les lieux de divertissement, etc.

#### 4.3.4.2 Connaissances des composants

**Microbit Microphone**

La carte micro:bit V2 est équipée d'un microphone qui détecte les sons et les signaux audio. Le microphone est placé en haut de la carte (le petit trou, qui sert à capter les signaux sonores ambiants, et un indicateur LED se trouve à côté du trou). La puce qui contrôle et traite le microphone est située au dos de la carte.
Lors de l'utilisation, placez simplement la carte micro:bit face vers le haut.

Lorsque la carte détecte du son, l'indicateur LED du microphone s'allume.


#### 4.3.4.3 Composants requis
| |  | |
| :--: | :--: | :--: |
| micro:bit V2 main board ×1 | shield pour micro:bit ×1 | OLED display ×1 |
| |||
| câble micro USB ×1 | fil 4 broches ×1 | porte-piles ×1 |
|| | |
|Pile AA(**préparées par vos soins**) ×6| | |
#### 4.3.4.4 Schéma de câblage
⚠️ **Lors du câblage, veuillez faire attention à la couleur des fils.**
| OLED display | wire color | micro:bit shield pin | micro:bit board pin |
| :----------: | :--------: | :------------------: | :-----------------: |
| GND | black | G | G |
| VCC | red | V2 | V |
| SDA | blue | 20 | P20 |
| SCL | green | 19 | P19 |

#### 4.3.4.5 Logique du code

#### 4.3.4.6 Code de test
⚠️ **Conseil 1 : Avant de télécharger le code sur la carte Microbit, veuillez importer le fichier de bibliothèque “oled_ssd1306\.py” en vous référant à** “[Importer la bibliothèque sur MU](https://docs.keyestudio.com/projects/KS4050/en/latest/docs/MicroPython/MU_development_environment.html#import-library-on-mu)” .

**Code complet :**
```Python
# importer les bibliothèques associées
from microbit import *
from oled_ssd1306 import *
# initialiser et effacer l'oled
initialize() # initialiser l'oled
clear_oled() # effacer l'oled
# fonction pour mapper une plage de valeurs sur une autre
def map(value, fromMin, fromMax, toMin, toMax):
fromRange = fromMax - fromMin
toRange = toMax - toMin
valueScaled = float(value - fromMin) / float(fromRange)
return toMin + (valueScaled * toRange)
# ensemble d'images pour un graphique à barres simple
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]
# ignorer la première lecture du niveau sonore
# soundLevel = microphone.sound_level()
# sleep(100)
while True:
# mapper les niveaux sonores de la plage 0-255 vers 0-5 pour choisir l'image du graphique
soundLevel = int(map(microphone.sound_level(), 0, 255, 0, 5))
display.show(allGraphs[soundLevel])
clear_oled() # effacer l'OLED
add_text(0, 0, "Acoustic Sound Level:") # Afficher la chaîne de caractères à la position correspondante sur l'OLED
add_text(0, 2, str(microphone.sound_level())) # Afficher soundLevel à la position correspondante sur l'OLED
sleep(200)
```

**Brève explication :**
① Importer les bibliothèques microbit et oled_ssd1306.
```Python
from microbit import *
from oled_ssd1306 import *
```
② Initialiser les pixels de l'OLED, effacer l'OLED.
```Python
initialize() # initialiser l'oled
clear_oled() # effacer l'oled
```
③ Définir une sous-fonction map (pour mapper n'importe quelle plage de nombres sur une autre).
```Python
def map(value, fromMin, fromMax, toMin, toMax):
fromRange = fromMax - fromMin
toRange = toMax - toMin
valueScaled = float(value - fromMin) / float(fromRange)
return toMin + (valueScaled * toRange)
```
④ Définir un ensemble d'images pour un graphique à barres simple.
```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]
```
⑤ Mapper la plage de valeurs sonores de 0-255 vers 0-5 pour sélectionner l'image graphique.
```Python
soundLevel = int(map(microphone.sound_level(), 0, 255, 0, 5))
display.show(allGraphs[soundLevel])
```
⑥ Lire la valeur détectée et l'afficher sur l'OLED.
```Python
clear_oled() # effacer l'OLED
add_text(0, 0, "Acoustic Sound Level:") # Afficher la chaîne de caractères à la position correspondante sur l'OLED
add_text(0, 2, str(microphone.sound_level())) # Afficher soundLevel à la position correspondante sur l'OLED
sleep(200)
```
#### 4.3.4.7 Résultat du test

Après avoir câblé et alimenté via le câble micro USB, connectez une alimentation externe (6 piles AA) pour assurer une alimentation suffisante, puis cliquez sur “Flash” pour télécharger le code sur la carte micro:bit.

Après avoir téléversé le code de test, appuyez sur le bouton reset au dos du micro:bit.

Soufflez de l'air (ou faites un bruit très fort) dans le microphone de la carte Microbit (⚠️ **rappel spécial : souffler de l'air a un effet plus visible**), et l'affichage OLED montrera des informations en temps réel liées à l'intensité du souffle d'air (ou du bruit), permettant aux utilisateurs de comprendre intuitivement l'intensité du souffle (ou du bruit). Parallèlement, l'écran matriciel 5×5 LED de la carte Microbit augmentera ou diminuera progressivement le nombre de rangées de LED allumées en fonction de l'intensité du souffle (ou du bruit), produisant un effet d'indication de l'intensité.

⚠️ **Note : Les briques (building blocks) utilisées dans l'expérience ne sont pas incluses dans ce kit.**
(**Astuce :** Si aucun résultat n'est observé, veuillez appuyer sur le bouton reset de la carte micro:bit.)
