cedric13300
New member
Bonjour à la communauté,
Je rencontre un problème de compilation extrêmement persistant et frustrant avec ma carte Teensy 4.1 et la bibliothèque Audio, et j'ai épuisé toutes les solutions de dépannage que j'ai pu trouver ou que l'on m'a suggérées. J'espère que vous pourrez m'aider à comprendre ce qui se passe.
Description du problème : Je tente de compiler un sketch très simple qui utilise la bibliothèque Audio pour générer un son (onde sinusoïdale ou lecture WAV) via un DAC PCM5102A (connecté en I2S). Cependant, la compilation échoue systématiquement avec des erreurs liées à la bibliothèque Audio.
L'erreur principale et récurrente est :'Audio' n'a pas été déclaré dans ce périmètre
Mais en activant la sortie verbeuse de l'IDE Arduino, j'ai identifié la cause profonde de ce problème. Le journal de compilation indique que la bibliothèque Audio est utilisée à partir d'un chemin incorrect pour ma carte Teensy 4.1. Voici la ligne cruciale du journal :
Utilisation de la bibliothèque Audio version 1.3 dans le dossier : C:\Users\orteg\AppData\Local\Arduino15\packages\teensy\hardware\avr\1.59.0\libraries\Audio
Le problème est la présence de \hardware\avr\ dans le chemin. Ma carte est une Teensy 4.1 (architecture ARM/iMXRT), et non une carte AVR. Cela signifie que le compilateur tente d'utiliser des fichiers de bibliothèque Audio conçu pour une architecture différente, ce qui provoque toutes les erreurs de déclaration et d'accès aux membres.
Les erreurs détaillées que j'obtiens lors de la compilation de Audio.cpp sont les suivantes, toutes pointant vers le chemin \hardware\avr\1.59.0\libraries\Audio\Audio.cpp :
Matériel et logiciel :
// ===========================================================================
// Code de Test Bip pour DAC PCM5102A (Teensy 4.1)
// ==========================================================================
#include <Audio.h>
#include <SD.h> // Nécessaire pour la carte SD
#include <SPI.h> // Nécessaire pour la communication SPI avec la carte SD
AudioPlaySdWav playWav;
Sortie audioI2S i2s1 ;
PatchCord1 de connexion audio (playWav, 0, i2s1, 0);
PatchCord2 de connexion audio (playWav, 1, i2s1, 1);
#define SDCARD_CS_PIN 10
const char *filename = "test.wav";
void setup() {
Serial.begin(9600);
while (!Serial && millis() < 5000);
Serial.println("--- Démarrage du Lecteur WAV depuis Carte SD ---");
Mémoire audio (20);
Audio.begin(AUDIO_SAMPLE_RATE_EXACT, 500);
Serial.println("Initialisation du système audio.");
Serial.print("Initialisation de la carte SD...");
if (!(SD.begin(SDCARD_CS_PIN))) {
Serial.println("Erreur d'initialisation de la carte SD !");
tandis que (1);
}
Serial.println("Carte SD initialisée.");
Serial.print("Lecture du fichier: ");
Serial.println(nom de fichier);
if (!playWav.play(filename)) {
Serial.print("Erreur: Impossible de lire le fichier ");
Serial.println(nom de fichier);
tandis que (1);
}
Serial.println("Lecture du fichier WAV en cours...");
Serial.println("Veuillez brancher votre enceinte Bluetooth via l'entrée AUX.");
}
void loop() {
if (!playWav.isPlaying()) {
Serial.println("Lecture du fichier WAV terminée. Redemarrage de la lecture.");
playWav.play(nom de fichier);
}
délai(10);
}
Toute aide ou piste de diagnostic serait grandement appréciée. Je suis vraiment bloqué et je ne sais plus quoi tenter.
Merci d'avance pour votre temps et votre expertise.
Je rencontre un problème de compilation extrêmement persistant et frustrant avec ma carte Teensy 4.1 et la bibliothèque Audio, et j'ai épuisé toutes les solutions de dépannage que j'ai pu trouver ou que l'on m'a suggérées. J'espère que vous pourrez m'aider à comprendre ce qui se passe.
Description du problème : Je tente de compiler un sketch très simple qui utilise la bibliothèque Audio pour générer un son (onde sinusoïdale ou lecture WAV) via un DAC PCM5102A (connecté en I2S). Cependant, la compilation échoue systématiquement avec des erreurs liées à la bibliothèque Audio.
L'erreur principale et récurrente est :'Audio' n'a pas été déclaré dans ce périmètre
Mais en activant la sortie verbeuse de l'IDE Arduino, j'ai identifié la cause profonde de ce problème. Le journal de compilation indique que la bibliothèque Audio est utilisée à partir d'un chemin incorrect pour ma carte Teensy 4.1. Voici la ligne cruciale du journal :
Utilisation de la bibliothèque Audio version 1.3 dans le dossier : C:\Users\orteg\AppData\Local\Arduino15\packages\teensy\hardware\avr\1.59.0\libraries\Audio
Le problème est la présence de \hardware\avr\ dans le chemin. Ma carte est une Teensy 4.1 (architecture ARM/iMXRT), et non une carte AVR. Cela signifie que le compilateur tente d'utiliser des fichiers de bibliothèque Audio conçu pour une architecture différente, ce qui provoque toutes les erreurs de déclaration et d'accès aux membres.
Les erreurs détaillées que j'obtiens lors de la compilation de Audio.cpp sont les suivantes, toutes pointant vers le chemin \hardware\avr\1.59.0\libraries\Audio\Audio.cpp :
- 'AUDIO_BLOCK_BYTES' n'a pas été déclaré dans cette portée
- 'audio_block_t' {aka 'struct audio_block_struct'} n'a aucun membre nommé 'next_free'
- 'detachInterruptVector' n'a pas été déclaré dans cette portée
- 'AUDIO_UPDATE_RATE' n'a pas été déclaré dans cette portée
- La classe « AudioClass » n'a aucun membre nommé « audio_block_list_count »
- La classe « AudioClass » n'a aucun membre nommé « audio_block_list »
- La classe « AudioClass » n'a pas de membre nommé « audio_block_bytes_allocated »
- La classe « AudioClass » n'a pas de membre nommé « audio_block_bytes_alloc_max »
- aucune déclaration ne correspond à 'void AudioConnection::connect()' (et d'autres pour déconnecter, addConnection, removeConnection)
- impossible de déclarer la variable 'Audio' comme étant de type abstrait 'AudioClass' (avec la note sur virtual void AudioStream::update(void) = 0
- Réinstallations multiples de l'IDE Arduino (version 2.x, puis 1.8.19) :
- J'ai effectué des désinstallations complètes de l'IDE, y compris la suppression manuelle des dossiers de cache (AppData\Local\Arduino15) et des dossiers d'installation.
- J'ai utilisé la version ZIP de l'IDE pour des installations "portables" dans des chemins simples et non synchronisés (hors OneDrive).
- J'ai tenté d'installer différentes versions du support Teensy via le Gestionnaire de cartes de l'IDE.
- J'ai également tenté une installation de l'Arduino IDE 1.8.19 avec l'installateur autonome Teensyduino (td_download.html), en pointant l'installateur vers le dossier de l'IDE et en m'assurant que la bibliothèque Audio était cochée.
- Malgré toutes ces tentatives, le problème du chemin \hardware\avr\ persiste, et les erreurs de compilation sont les mêmes.
- Interférence Antivirus / Pare-feu :
- J'ai désactivé temporairement mon antivirus (Windows Defender) et mon pare-feu pendant toutes les installations et les premiers lancements de l'IDE pour éviter tout blocage. Cela n'a pas résolu le problème de compilation.
- Vérification des fichiers de la bibliothèque Audio :
- J'ai vérifié le contenu des fichiers Audio.h et Audio.cpp dans le dossier C:\Users\orteg\AppData\Local\Arduino15\packages\teensy\hardware\avr\1.59.0\libraries\Audio\.
- J'ai constaté que Audio.h était incomplet et Audio.cpp était parfois manquant ou incorrect. J'ai tenté de les remplacer manuellement par des versions complètes et correctes (issues d'exemples fonctionnels ou de dépôts en ligne).
- Ces manuels de remplacement n'ont pas résolu les erreurs de compilation, car le problème semble être plus profond, lié à la manière dont le compilateur interprète l'ensemble de la structure du cœur Teensy via ce chemin avr incorrect.
- Tests avec des exemples officiels :
- L'exemple PlaySynthMusic de la bibliothèque Audio (Fichier > Exemples > Audio > Synthesis > PlaySynthMusic) compile sans aucune erreur dans mon IDE Arduino. Cela indique que l'IDE est capable de compiler la bibliothèque Audio et que des versions fonctionnelles de ses composants existants sur mon système.
- Cependant, mon propre code (très similaire aux exemples) ne compile pas, ce qui renforce l'idée d'une configuration d'environnement spécifique à mon sketch ou d'un problème de lien avec les bons fichiers.
Matériel et logiciel :
- Carte : Teensy 4.1
- DAC : PCM5102A (connecté en I2S aux broches par défaut du Teensy 4.1 : BCLK GPIO 20, LRCK GPIO 21, TX GPIO 7)
- Système d'exploitation : Windows 10/11 (version exacte si nécessaire, mais le problème est constant sur plusieurs installations)
- Version Arduino IDE : Actuellement 1.8.19 (mais le problème était identique avec la version 2.x)
- Version Teensyduino : 1.59.0 (installée via le gestionnaire de cartes ou l'installateur autonome)
// ===========================================================================
// Code de Test Bip pour DAC PCM5102A (Teensy 4.1)
// ==========================================================================
#include <Audio.h>
#include <SD.h> // Nécessaire pour la carte SD
#include <SPI.h> // Nécessaire pour la communication SPI avec la carte SD
AudioPlaySdWav playWav;
Sortie audioI2S i2s1 ;
PatchCord1 de connexion audio (playWav, 0, i2s1, 0);
PatchCord2 de connexion audio (playWav, 1, i2s1, 1);
#define SDCARD_CS_PIN 10
const char *filename = "test.wav";
void setup() {
Serial.begin(9600);
while (!Serial && millis() < 5000);
Serial.println("--- Démarrage du Lecteur WAV depuis Carte SD ---");
Mémoire audio (20);
Audio.begin(AUDIO_SAMPLE_RATE_EXACT, 500);
Serial.println("Initialisation du système audio.");
Serial.print("Initialisation de la carte SD...");
if (!(SD.begin(SDCARD_CS_PIN))) {
Serial.println("Erreur d'initialisation de la carte SD !");
tandis que (1);
}
Serial.println("Carte SD initialisée.");
Serial.print("Lecture du fichier: ");
Serial.println(nom de fichier);
if (!playWav.play(filename)) {
Serial.print("Erreur: Impossible de lire le fichier ");
Serial.println(nom de fichier);
tandis que (1);
}
Serial.println("Lecture du fichier WAV en cours...");
Serial.println("Veuillez brancher votre enceinte Bluetooth via l'entrée AUX.");
}
void loop() {
if (!playWav.isPlaying()) {
Serial.println("Lecture du fichier WAV terminée. Redemarrage de la lecture.");
playWav.play(nom de fichier);
}
délai(10);
}
Toute aide ou piste de diagnostic serait grandement appréciée. Je suis vraiment bloqué et je ne sais plus quoi tenter.
Merci d'avance pour votre temps et votre expertise.