SD card

Bonjour,

Voilà j’ai un petit problème, je travaille sur une Arduino Uno, j’ai un fichier beaucoup trop volumineux que je dois mettre sur une carte HD, ce fichier est lu par la commande “tts_setup_load” de la procédure tts_setup().

Voici le programme :

#include "text_to_speech.h"
#include "text_to_speech_img.h"
void tts_setup()
{
    tts_image_load( TTS_INIT_DATA, sizeof( TTS_INIT_DATA ) );
    tts_image_exec();
    tts_interface_test();
    tts_power_default_config();
    tts_audio_default_config();
    tts_volume_set( 0 );
    tts_default_config();
}

Le fichier a une extension .h et apparemment il ne peut être lu via la carte SD, auriez-vous des conseilles pour pouvoir modifier la localisation du fichier et la récupérer sur la SD ??

Merci d’avance :slight_smile:

testTTS.zip (45.1 KB)

Bonsoir,

Si l'extension du fichier (lequel ?) est ".h", c'est fort probable que c'est un fichier "en-tête" associé à un fichier de même nom qui lui, a l'extension ".c". Ces fichiers sont nécessaires à la compilation du programme, mais ne seront pas présents en tant que tel dans l'Arduino après téléversement.

Donc, précise mieux ta demande.

Bonjour,

On a une bibliothèque trop volumineuse pour être executé depuis la arduino uno, est-il possible de la mettre sur une SD comme tel, sans modifier l'extension ?

Le fichier est "text_to_speech_img.h" qui fait 152 Ko.

Oulah on part de loin là...

Le code source (=fichiers .ino, .h, .cpp) n'est jamais présent sur l'arduino : ni dans sa mémoire flash, ni sur carte SD, ni ailleurs.

Entre les deux, y a un truc qui s'appelle un compilateur, qui utilise les fichiers du code source pour produire un unique fichier .hex contenant des instructions exécutables par l'arduino. Ce fichier est transféré dans la mémoire flash de l'arduino et pas ailleurs.

La mémoire flash d'un arduino est de 32ko. Si c'est trop juste, il faut passer sur une MEGA

Je suis désolée, j'apprend tout juste à m'en servir, j'ai pas fait énormément d'info ou d'électronique...

Merci pour votre aide en tout cas, par contre je peux pas changer de carte, tout notre travail est calqué sur Arduino Uno ou Leonardo et on doit tout remettre mardi.

Projet scolaire ? L'échéance est un peu rapprochée pour espérer s'en sortir en partant de zéro, non?

Tout à fait, mais on part pas vraiment de zéro, il nous manque juste le son...

On nous a fourni une text to speech, qui devait être simple d'utilisation, mais le produit a pas énormément de documentation ni d'exemple de code sur internet, les librairies sont pas adaptées, on rame un peu.

Lorsque l'on compile on a "croquis trop gros" espace utilisé 162%, on pensait pouvoir gagner de l'espace en stockant sur la SD une partie de la librairie, ce que nous a conseillé notre tuteur.

Rien ne vous empêche de faire une compilation sur une Mega2560 et vérifier que le compilation se passe bien.

Après, vous n’aurez qu’à dire à votre prof qu’il avait vu un peu trop juste pour la cible.

Cordialement.

Pierre

C'est bon j'ai compris

La "librairie" qui est trop grosse contient en réalité un énorme tableau chargé en PROGMEM, donc dans le code exécutable, ce qui fait exploser sa taille au delà des capacités d'une uno.

La solution ne consiste pas de manière simpliste à copier le fichier .h sur carte SD, mais à créer sur carte SD un fichier de type mp3 (je suppose) dont le contenu binaire correspond au tableau chargé en PROGMEM.

J'imagine que ce fichier audio existe déjà quelque part, sinon il faut le regénérer à partir du .h

bricoleau: ...La solution consiste ... à créer sur carte SD un fichier de type mp3 (je suppose) dont le contenu binaire correspond au tableau chargé en PROGMEM. ...

Certes, mais pour exploiter ces données, il va falloir les faire passer par la RAM (max 2ko) : ça ne tiendra pas. Ou alors, la vitesse de lecture de la SD doit être suffisante pour pouvoir restituer byte à byte un son ... j'ai des doutes.

Cordialement.

Pierre.

Ben on va supposer que si le tuteur invite ses élèves à procéder de la sorte, c'est que derrière c'est gérable...