#include <Arduino.h>
#include <FastLED.h>
#define NUM_LEDS 6 // le nombre de LEDs total de la bande connectée à l'Arduino
CRGB leds[NUM_LEDS];
#define DATA_PIN 4 // le port où se branche le D1 des LEDs
#define delayLEDS 3
#define sensorPin A0 // le port où se branche le SIG du capteur son
void FilterSignal(float sensorSignal); // déclaration des fonctions
void CompareSignalFiltered(float filteredSignal); // déclaration des fonctions
void MainFunction(); // déclaration des fonctions
float sensorValue = 0, filteredSignal = 0,
filteredSignalValues[] = {3.4, 3.1, 2.7, 2.4, 2.1, 1.7, 1.3, 0.9, 0.4};
void setup () {
FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS); // définit le type de bande LEDs
FastLED.setBrightness(128); // calibre la luminosité des LEDs
Serial.begin (9600);
}
void loop () {
MainFunction();
delay(delayLEDS);
}
void MainFunction() {
sensorValue = (float) analogRead(sensorPin) * (5.0 / 1024.0);
FilterSignal(sensorValue);
Serial.print(sensorValue);
Serial.print(" ");
Serial.println(filteredSignal);
CompareSignalFiltered(filteredSignal);
}
void FilterSignal(float sensorSignal) {
filteredSignal = (0.945 * filteredSignal) + (0.0549 * sensorSignal);
}
void CompareSignalFiltered(float filteredSignal) {
if (filteredSignal > filteredSignalValues[2]) { // Fourchette de décibels (pas de bruit à un peu de bruit)
fill_solid( leds, NUM_LEDS, CRGB::Red );
FastLED.show();
} else if (filteredSignal > filteredSignalValues[6]) { // Fourchette de décibels (du bruit à pas mal de bruit)
fill_solid( leds, NUM_LEDS, CRGB::Orange );
FastLED.show();
} else if (filteredSignal > filteredSignalValues[9]) { // Fourchette de décibels (beaucoup trop de bruit)
fill_solid( leds, NUM_LEDS, CRGB::Green );
FastLED.show();
} else { // Très peu ou pas de bruit
fill_solid( leds, NUM_LEDS, CRGB::Green );
FastLED.show();
}
}