probleme avec la librairie SD [résolu]

Bonjour,

dans le cadre de mon projet mesure d'energie en triphasé http://arduino.cc/forum/index.php/topic,153188.msg1149078/topicseen.html#msg1149078

je souhaite changer le nom de fichier automatiquement tous les mois

  String FileName= now.month()+"datalog.csv";
  File dataFile = SD.open(FileName, FILE_WRITE);

en retour , j'ai l'erreur suivante

energie2_1.cpp: In function 'void logger()':
energie2_1:347: error: no matching function for call to 'SDClass::open(String&, int)'
F:\Partage\Arduino\arduino-1.0.1\libraries\SD/SD.h:74: note: candidates are: File SDClass::open(const char*, uint8_t)

cette librairie a l'air vachement limité, y a-t-il moyen de contourner cette erreur, ou alors faut-il mamailler la librairie pour que ça fonctionne ?

j'ai déja passé des plombes a essayer de faire fonctionner un ecran lcd KS0073 20X 4 avec la librairie LiquidCrystal qui est incompatible, sa fonctionne a ce jour , sa aide aussi a comprendre le fonctionnement de ces composants

le language C n'est pas mon fort, je suis habitué au VB.NET ,

plus j'avance dans l'arduino plus je me rend compte que si on veux évoluer sur ses applis, il faut aussi apprendre a développer ses propres lib

Bonjour,

peuch88: cette librairie a l'air vachement limité, y a-t-il moyen de contourner cette erreur, ou alors faut-il mamailler la librairie pour que ça fonctionne ?

La librairie va très bien ;) Elle est juste pas fait pour fonctionner avec des saloperie de String que la team arduino a absolument voulu implémenter même si c'était une mauvaise idée. Tu t'en rends surement pas compte mais la librairie SdFatLib qui ce cache derrière la librairie SD est bien plus puissante que ce que tu peut croire.

Pour ton probléme : http://arduino.cc/en/Reference/StringToCharArray Ou sinon tu dégages c'est bip de String et tu utilises un bon vieux tableau de char et sprintf() ;)

peuch88: le language C n'est pas mon fort, je suis habitué au VB.NET ,

Ici c'est du C++, si tu été passais directement du VB.net au C tu aurais déjà sauté par la fenêtre ;) (Un bon code en C-ANSI en pedantic, là tu sent passer les erreurs de compilation 8))

peuch88: plus j'avance dans l'arduino plus je me rend compte que si on veux évoluer sur ses applis, il faut aussi apprendre a développer ses propres lib

Pas forcément, mais de bonnes bases en C et C++ est un minimum sinon tu galères pas mal au début.

@skywodd

en effet je galére , mais ne suis pas prêt de me laisser abattre devant un si petit arduino ! :fearful:

du coup je jette un oeuil a tout ça !

merci !

Ou sinon tu dégages c'est bip de String et tu utilises un bon vieux tableau de char et sprintf()

oullala !

peut tu m'en dire plus sur ! tableau de char et sprintf() désolé je n'ai pas l'informatique infuzzz ! :astonished:

peuch88: peut tu m'en dire plus sur ! tableau de char et sprintf()

Tu as un exemple ici : http://www.cplusplus.com/reference/cstdio/sprintf/

Sinon sur le site du séro dans la partie cours C il parle de printf() un moment. sprintf() c'est pareil que printf() mais ça fou le résultat dans un tableau de char au lieu de l'afficher sur la sortie standard (qui n'existe pas du reste avec une carte arduino)

merci pour ces infos, sa marche au poil !

après des recherches sur cette fonction je suis tombé sur ce topic assez clair http://arduino.cc/forum/index.php/topic,33093.0.html

cependant je n'ai pas eu besoin d'inclure la librairie Stdio.h peut-être pas utile avec un Mega ?

  char tampon[32];
  int temp = now.month();
  sprintf(tampon,"datalog%0d.csv", (int)temp);  
  Serial.println(tampon);
  File dataFile = SD.open(tampon, FILE_WRITE);

donc tous les mois un nouveau fichier sera automatiquement crée sur ma carte SD

un grand merci a toi skywodd

Ici c'est du C++, si tu été passais directement du VB.net au C tu aurais déjà sauté par la fenêtre (Un bon code en C-ANSI en pedantic, là tu sent passer les erreurs de compilation )

je suis passé par le langage assembleur 6809 et z80 ; après un break de quelques longues année j'en suis maintenant au visual basic , en ayant loupé de grandes étapes , mais "pas pour moi la fenêtre" car l'assembleur est le langage le plus basic que je connaisse

cependant, j'ai pas mal perdu en ce domaine ! , et sa ne vas pas en s’améliorant, 47 ans d'age :sleeping:

peuch88: cependant je n'ai pas eu besoin d'inclure la librairie Stdio.h peut-être pas utile avec un Mega ?

C'est fait en interne par l'ide arduino ;)