system
April 7, 2009, 1:47pm
1
Bonjour à tous,
voilà j'utilise une carte micro SD, en utilisant la librairie SDUfat http://www.blushingboy.net/p/SDuFAT/downloads/2/
j'arrive à y écrire des phrases, mais pas des chiffres.
J'ai beau essayer toutes sortes de conversions avec char, byte... j'ai toujours le message d'erreur :
println(const char[9], int) is ambiguous
donc finalement comment peut on vertir par exemple le nombre 100 en string ?
...une idée ...? :-[
cscm
April 7, 2009, 5:29pm
2
Salut,
Tu as deux choix, soit tu utilise la fonction sprintf ou bien tu ecrit une fonction de conversion.
Voici l'exemple avec sprintf :
#include <stdio.h>
void setup()
{
Serial.begin(9600);
}
void loop()
{
char *str;
sprintf(str, "%d", 42);
Serial.print(str);
delay(2000);
}
Voici une autre exemple avec une conversion :
void setup()
{
Serial.begin(9600);
}
void loop()
{
int d;
int nb = 42;
d = 1;
while(nb / d >= 10)
d *= 10;
while(d)
{
Serial.print(nb / d);
nb %= d;
d /= 10;
}
delay(2000);
}
Mes 0.02$
system
April 7, 2009, 6:24pm
3
...et bien , impeccable, çà compile
en fait justement, quelle différence entre char *str; et char str; ?
system
April 7, 2009, 7:19pm
4
humm... j'ai parlé trop vite...
çà compile, oui..
avec serial.print affichage ok
mais avec SD.print (pour écrire dans la carte SD), rien n'est écrit ...
curieux ...? :
Le char *str sert à déclarer une chaîne de caractére et le char str un caractère.
char *str est un pointeur nommé str qui pointe sur une variable de type char. La variable en question peut être soit un élément unique soit un tableau. (ATTENTION il n'y a pas création de la variable char mais seulement du pointeur)
char str une variable de type char nommée str
system
April 8, 2009, 12:20pm
7
C'est ce que j'étais en train de comprendre...
donc lorsque j'écris
char *str;
char sprintf(str, "%d", 42);
SD.println("nom_fichier.txt", str);
str est encore vide...?
Comment convertir la valeur en string pour l'incorporer directement dans cette ligne ..?
(je vais essayer avec itoa, mais ce soir, je n'ai pas la carte sous la main)
Non, sprintf créé un tableau de char et str pointe sur le début du tableau. Il ne faut pas écrire:
char sprintf(str, "%d", 42);
il ne faut pas le char devant.
system
April 8, 2009, 8:21pm
9
....
..........mais curieusement la ligne :
sprintf(str, "%d", 42);
empèche la ligne :
SD.println("nom_fichier.txt", str); de fonctionner