Oui, c’est cela, le haut parleur n’arrive pas à suivre les informations du micro, le terme saturation était mal choisi, désolé
Pour ce qui est du schéma, j’ai simplement branché le micro à l’arduino et j’ai mis un transistor entre l’arduino et le haut parleur pour amplifier le son
Je me doute que ce circuit est trop simple, et que je n’ai pas tenu compte de nombreuses subtilités, mais c’est pour ça que j’ai écris ce message, à vrai dire je ne m’y connais pas beaucoup.
Pour ce qui est du programme, j’étais parti sur un programme de ce type:
#define MIC_PIN A0 // Entrée du micro MAX4466
#define AUDIO_OUT 9 // Sortie haut-parleur (PWM)
#define SAMPLING_FREQUENCY 20000 // 20 kHz pour une bonne qualité audio
#define SAMPLES 64 // Nombre d'échantillons pour l'offset DC
void setup() {
Serial.begin(115200);
analogReadResolution(12); // ADC 12 bits (0-4095)
analogWriteResolution(8); // PWM 8 bits (0-255)
pinMode(AUDIO_OUT, OUTPUT);
}
void loop() {
unsigned long startTime = micros();
double dcOffset = 0;
for (int i = 0; i < SAMPLES; i++) {
dcOffset += analogRead(MIC_PIN);
}
dcOffset /= SAMPLES;
for (int i = 0; i < SAMPLES; i++) {
while (micros() - startTime < (1000000 / SAMPLING_FREQUENCY)); // Maintenir fréquence
startTime += (1000000 / SAMPLING_FREQUENCY);
int sensorValue = analogRead(MIC_PIN) - dcOffset + 2048; // Recentre autour de 2048
sensorValue = constrain(sensorValue, 0, 4095); // Sécurisation des valeurs
analogWrite(AUDIO_OUT, sensorValue / 16); // 12 bits → 8 bits pour la PWM
Serial.println(sensorValue - 2048);
}
}
Ce n’est qu’un modèle avec des valeurs tests qui sont susceptibles d’être fortement modifiées, mais faudrait il encore que se programme réalisé bien ce que je souhaite…
Merci pour votre aide !