Problème fonction pour enregistrer sur une carte SD

Bonsoir,
je cherche à faire une fonction pour enregistrer des données dans une carte SD dans là quel, je pourrais changer le nom du fichier et le( texte)en fonction des variables de celle-ci

Voilà ce que j'ai essayé le code fonctionne sans les Switch, mais pas avec. :cry:
Pareilles avec des if si quelqu un a une idée pour m'aider dans mon problème

#include <SD.h>
Sd2Card card;

const int chipSelect = 10;

void setup(){
  Serial.begin(9600);
  
  Serial.print("Initialisation carte SD ...");                                   // Initialisation carte SD
  pinMode(10, OUTPUT);
  
  if (!SD.begin(chipSelect)) {
    Serial.println("Erreur de carte, ou non presente");                          // Méssage d'erreur
    return;
  }
  Serial.println("card OK.");
}
void loop(){
  
  maFonction(1,1);
  delay(5000);
}
 
int maFonction(int Param1,int Param2){
  
  switch(Param1){
    case 1: File dataFile = SD.open("datalog.txt", FILE_WRITE); break;                           // Ouvre le fichier  un seul fichier peut être ouvert à la fois
    case 2: File dataFile = SD.open("blablabla.txt", FILE_WRITE); break;
  }
  
  if ((dataFile)&&(card.init(SPI_HALF_SPEED, chipSelect))) {                     // Si le fichier est disponible, y écrire
    switch(Param2){
      case 1:
        dataFile.println("text1");
        dataFile.println("text2");
        dataFile.println("text3");
        Serial.println("text1 ok");
      break;
      case 2:
        dataFile.println("text4");
        dataFile.println("text5");
        dataFile.println("text6");
        Serial.println("text2 ok");
      break;
    }
  dataFile.close();                                                           // fermer celui-ci avant d'ouvrir un autre
  }
  
  else  Serial.println("error opening datalog.txt");                             // Si le fichier ne est pas ouvert, méssage d'erreur
  
}
[code]

fonction__SD.ino (1.49 KB)

Tu crées l'objets datafile dans le switch donc il est invisibles hors de celui-ci. Les variables/objets doivent être déclarées/instanciés dans le bloc de code où ils doivent être utilisées. Typiquement dans ton cas l'objet datafile devrait être instancié au début de maFonction.

Merci beaucoup, j'ai corrigé et sa compile.
Mais existe-t-il une méthode plus simple pour les mêmes actions que se code ?

#include <SD.h>
Sd2Card card;

const int chipSelect = 10;

void setup(){
  Serial.begin(9600);
  
  Serial.print("Initialisation carte SD ...");                                   // Initialisation carte SD
  pinMode(10, OUTPUT);
  
  if (!SD.begin(chipSelect)) {
    Serial.println("Erreur de carte, ou non presente");                          // Méssage d'erreur
    return;
  }
  Serial.println("card OK.");
}
void loop(){
  
  maFonction(1,1);
  delay(5000);
}
 
int maFonction(int Param1,int Param2){
  File dataFile;
  
  switch(Param1){
    case 1: SD.open("datalog.txt", FILE_WRITE); break;                           // Ouvre le fichier  un seul fichier peut être ouvert à la fois
    case 2: SD.open("blablabla.txt", FILE_WRITE); break;
  }
  
  if ((dataFile)&&(card.init(SPI_HALF_SPEED, chipSelect))) {                     // Si le fichier est disponible, y écrire
    switch(Param2){
      case 1:
        dataFile.println("text1");
        dataFile.println("text2");
        dataFile.println("text3");
        Serial.println("text1 ok");
      break;
      case 2:
        dataFile.println("text4");
        dataFile.println("text5");
        dataFile.println("text6");
        Serial.println("text2 ok");
      break;
    }
  dataFile.close();                                                           // fermer celui-ci avant d'ouvrir un autre
  }
  
  else  Serial.println("error opening datalog.txt");                             // Si le fichier ne est pas ouvert, méssage d'erreur
  
}
[code]