Pages: [1]   Go Down
Author Topic: Aide sur la prog - Arduino Duemilanove + module SD  (Read 4919 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 2
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,
Je suis entrain de faire un programme qui permet d'écrire, de lire et d'effacer des fichiers sur une carte SD avec l'intermédiaire du Serial Monitor. Le but est de pouvoir taper le texte à écrire dans le fichier et de choisir le nom du fichier à crée, lire ou effacer. Le problème c'est que j'arrive à écrire ce que je souhaite dans un fichier, mais pas à choisir le nom du fichier en le tapant sur le pc comme je fais pour écrire le texte qui se trouve dans le fichier.
 
Voici le programme :

#include <SdFat.h>
#include <SdFatUtil.h>

// --- Déclaration des objets utiles pour les fonctionnalités utilisées ------------------------
Sd2Card card;               // création d'un objet Sd2Card
SdVolume volume;       // création d'un objet SdVolume
SdFile root;             // création d'un objet SdFile pour le répertoire racine
SdFile file;           // création d'un objet SdFile pour le fichier utilisé


//----Déclaration des variables------------------------------------------------------------------
int testSD; //utilisé pour les tests des fonctions
int incomingByte ;

//-----Déclaration des prototypes----------------------------------------------------------------
void ecriture(void);
void lecture(void);

//------- Initialisation fonctionnalités utilisées ----------------------------------------------  
void setup()
{
  Serial.begin(115200);      // configuration de la liaison série (usb) à 115 200 bps            
  card.init(SPI_HALF_SPEED); // initialise la carte SD à la vitesse voulues
  volume.init(&card) ; // initialise le volume FAT de la carte SD
  root.openRoot(&volume) ;  // ouverture du répertoire root
}
 //-----Boucle-Programme------------------------------------------------------
void loop()
{

  Serial.println();                   //saut de ligne
  Serial.println("Debut du programme");
  Serial.println("Entrer un caratere pour commancer");
  Serial.println();                  //saut de ligne
  while(!Serial.available());        //attente d'un envoie de donnée pour continuer
  Serial.flush();
  
  void ecriture(void);
  void lecture(void);
  
  Serial.println();
  Serial.println("Fin");  
 
}  
// -------------------Fonction ecriture------------------  
void ecriture(void)  
{
  
  if (!root.isOpen())      // si root pas ouvert, on l'ouvre
   {
    root.openRoot(&volume);
   }
  
 char nomFichier[] = "0000000.TXT";   //Creation du fichier
 for (uint8_t i = 0; i < 100; i++)    //incrementation du nom du fichier
 {
   nomFichier[5] = i/10 + '0';
   nomFichier[6] = i%10 + '0';  
  if (file.open(&root, nomFichier, O_CREAT | O_EXCL  | O_WRITE)) break;
 }
  if (!file.isOpen()) Serial.print("Erreur");
  
  Serial.print("Ecrire dans : ");
  Serial.println(nomFichier);
  Serial.println("Taper le texte a ecrire");
  while(!Serial.available());
  char myStr[Serial.available()];
  while (Serial.available() > 0)
    {
      for (int i = 0; i < sizeof(Serial.available()); i++)
     {
      incomingByte = Serial.read();
      delay(1);
      myStr=incomingByte;
      Serial.print(myStr);
      file.print(*myStr);
      }
    }
   Serial.flush();  
   Serial.println();
   file.close();  
}

//------------Fonction lecture----------------------------------------
void lecture(void)
{
  file.open(&root, nomFichier, O_READ);    
  char c; // variable de reception données lues
  while ((c = file.read()) > 0) Serial.print(c);
  file.close();
}



Le problème se situe sur le   file.open(&root, nomFichier, O_READ);    Pour nomFichier je voudrais pouvoir le taper a l'ordinateur.
Je voulais savoir aussi si c'était possible d'effacer tout les fichiers existants sur la carte ?

Merci d'avance pour votre aide !
« Last Edit: January 22, 2011, 07:15:56 am by KaiZer » Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 2
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

j'ai fais un test tout simple qui consiste à envoyer un mot via le Serial Moniteur. Le programme l'enregistre dans un tableau (Serial.read dans une boucle), puis au moment de l'afficher (Serial.println(valeur)), il me renvoie seulement le dernier caractère...

Logged

Geneva
Offline Offline
Faraday Member
**
Karma: 30
Posts: 3228
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Essaie ça :

Code:
String maString;

for(int i=0;i<=sizeof(tableau);i++){
  maString += tableau[i];
}

(Sans garantie)  :smiley
« Last Edit: January 22, 2011, 04:29:46 pm by jfs » Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Pages: [1]   Go Up
Jump to: