[RESOLU] tableau de string avec PROGMEM
bonsoir;
je bute sur un problème dont je n'ai pas trouvé de solution sur le net.
je test la mise en mémoire flash de mes noms de fichiers audio, qui ne sont par définition, pas amené à être modifié.
j'ai fait le code ci dessous:
un tableau de string, mis dans la mémoire programme, et je tente de récupérer les octets un à un.
problème: cela ne me sort qu'un seul et unique point d'intérogation comme caratère (caratère null?)
j'ai du faire une erreur de conception, c'est sur, mais je bute dessus depuis plusieurs jours sans trouver.
si vous pouvez m'aider, s'il vous plait.
merci.
je bute sur un problème dont je n'ai pas trouvé de solution sur le net.
je test la mise en mémoire flash de mes noms de fichiers audio, qui ne sont par définition, pas amené à être modifié.
j'ai fait le code ci dessous:
un tableau de string, mis dans la mémoire programme, et je tente de récupérer les octets un à un.
problème: cela ne me sort qu'un seul et unique point d'intérogation comme caratère (caratère null?)
j'ai du faire une erreur de conception, c'est sur, mais je bute dessus depuis plusieurs jours sans trouver.
si vous pouvez m'aider, s'il vous plait.
merci.
code: [select]
// test d'un tableau de string en mémoire flash
#include <avr/pgmspace.h>
progmem const char fichiers[8][6] =
{
"a.wav", // 0 bonjour 1
"b.wav", // 1 bonjour 2
"c.wav", // 2 bonjour 3
"d.wav", // 3 hello
"e.wav", // 4 je suis prete
"1.wav", // 5 clignotant droit
"2.wav" // 6 clignotant gauche
"3.wav" // 7 autre
};
void setup() {
// put setup code here, run once:
serial.begin(9600);
}
char lecture_mem(byte longueur, byte debut) {
char text[6];
( byte idx = 0 ; idx < 6 ; idx++ ) {
text[idx] = pgm_read_byte_near( &(fichiers[debut * longueur][idx]) );
}
return text;
}
void loop() {
byte val = 0;
if (serial.available()) { //send commands on serial play
switch (serial.read()) {
case '2':
val = 6;
break;
case '1':
val = 5;
break;
case 'a':
val = 0;
break;
case 'b':
val = 1;
break;
case 'c':
val = 2;
break;
case 'd':
val = 3;
break;
case 'e':
val = 4;
break;
case '6':
val = 7;
break;
}
serial.print("val= ");
serial.print(val);
serial.print(" - ");
serial.println(lecture_mem(6, val));
}
}
un petit tour par là cherche le paragraphe "arrays of strings" et tu comprendras ton erreur.
on ne crée pas un tableau de chaine avec progmem
on crée des chaines puis un tableau qui indexe ces chaines.
on ne crée pas un tableau de chaine avec progmem
on crée des chaines puis un tableau qui indexe ces chaines.
Arduino Forum > International > Français (Moderators: jfs, Snootlab) > [RESOLU] tableau de string avec PROGMEM
arduino
Comments
Post a Comment