Aide Besoin d'aide pour lire une carte SD avec Arduino

JCS
JCS
Compagnon
22 Juin 2007
2 156
Cher
  • Auteur de la discussion
  • #1
Salut à tous,

J'ai besoin de votre aude !

Pour un nouveau projet, j'ai besoin de lire, avec un Arduino Uno, des nombres stockés sur une carte SD. J'ai connecté mon lecteur de carte à mon Arduino dans lequel j'ai téléversé le sketch suivant :

Le sketch fonctionne très bien, toutefois je ne sais pas comment lire les nombres de façon séquentielle, afin de pouvoir les exploiter :?:

Je subodore qu'il s'agit d'un truc du genre

variable = SD.read(quelque chose) :belzedar:
Cela fait 3 jours que je cherche sur le net !

Merci d'avance de votre aide.

JC.
 
jpbbricole
jpbbricole
Compagnon
26 Mai 2016
1 982
Corsier-sur-Vevey (Vaud)
Salut JCS
En fait il faut concaténer les caractères (char en chaîne de caractères et ensuite les convertir en chiffres (int) qui sont, eux, séparés, sur la carte, par un caractère "nouvelle ligne" \n
ce qui donne:
Ca doit être quelque chose comme celà.
Je n'ai, malheureusement pas, actuellement, le temps d'essayer. En fin de journée je peut te faire un topo concret.

Cordialement
jpbbricole
 
Dernière édition:
JCS
JCS
Compagnon
22 Juin 2007
2 156
Cher
  • Auteur de la discussion
  • #3
Grand merci Jpbbricole !

Je vais essayer cela cet-après midi, si je peux.
Je te tiens au courant des résultats.

Encore merci !
JC.
 
JCS
JCS
Compagnon
22 Juin 2007
2 156
Cher
  • Auteur de la discussion
  • #5
Jpbbricole,

J'ai essayé d'intégrer la première partie de sketch sans succès.
Quant au dernier sketch, ça fonctionne ( pour ce qui est du test de la carte SD), mais les valeurs contenues dans ma carte SD ne s'affichent pas. Comme si le module :

void nombreExploitation(String nombreLu)
ne s’exécutait pas :sad:

Pour infos, je n'utilise que des nombres entiers, c'est pour piloter un moteur PAP.

N'y aurait-il pas une formule plus simple pour lire les données ?

Merci d'avance pour ta réponse.

Joyeuses Pâques !

JC.
 
jpbbricole
jpbbricole
Compagnon
26 Mai 2016
1 982
Corsier-sur-Vevey (Vaud)
Salut JCS
Je te mettrai une version plus simple.
Pour ton problème, mets ton fichier essai.txt en pièce jointe pour que je puisse l'examiner.

Cordialement
jpbbricole
 
nopxor
nopxor
Compagnon
27 Mai 2010
1 413
Yvelines
Contenu de la librairie SD:
Les fonctions de la classe SD sont détaillées ici http://arduino.cc/en/Reference/SD

begin () initialise la librairie et la carte SD.
exists () vérifie si un fichier ou un dossier existe sur la carte SD.
mkdir () crée un dossier (répertoire) sur la carte SD, et les répertoires intermédiaires d'accès.
open () ouvre un fichier sur la carte SD, le crée s'il n'existe pas encore pour l'écriture.
remove () efface un fichier de la carte SD.
rmdir () efface un répertoire (qui doit être vide) de la carte SD.


Les fonctions de manipulation de fichiers:

available() vérifie s'il y a des octets à lire dans le fichier.
close() ferme le fichier et vérifie qu'il a bien été écrit et sauvegardé physiquement dans la carte SD.
flush() s'assure que les octets écrits sur la carte SD l'ont bien été physiquement (à la fermeture c'est automatique).
peek() lit un octet dans un fichier sans avancer au suivant.
position() retourne la position actuelle du curseur dans le fichier où sera écrit le prochain octet.
print() écrire des données dans le fichier ouvert en écriture au préalable, en ASCII.
println()
seek() cherche une nouvelle position dans le fichier, entre 0 et la taille de fichier.
size() retourne la taille du fichier.
read() lit un octet dans le fichier.
write() écrit des données dans le fichier.
isDirectory() les répertoires sont des types de fichiers particuliers, cette fonction reconnaît les répertoires.
openNextFile() ouvre le fichier suivant dans un répertoire.
rewindDirectory() on retourne sur le premier fichier d'un dossier, à utiliser avec openNextFile.

infos provenant de:
http://tiptopboards.free.fr/arduino_forum/viewtopic.php?f=2&t=40&sid=9f18f016763f42f515fa8b7407c98617
 
JCS
JCS
Compagnon
22 Juin 2007
2 156
Cher
  • Auteur de la discussion
  • #9
Merci Nopxor pour ces infos.

Je cherche une méthode simple pour lire des nombres entiers > 255 à partir d'une carte SD, sans me prendre la tête.

@+
JC.
 
JCS
JCS
Compagnon
22 Juin 2007
2 156
Cher
Merci à vous deux pour votre super réactivité !

Concernant le sketch de Jpbbricole, la phase test se déroule semble-t-il avec succès, le moniteur série affiche :

Initialisation OK
Fin


mais les valeurs ne s'affichent pas sur le moniteur série.

Concernant le sketch de Nopxor, voici le message de l'IDE après compilation :

Les options de compilation ont été modifiées, tout sera recompilé
Le croquis utilise 13706 octets (42%) de l'espace de stockage de programmes. Le maximum est de 32256 octets.
Les variables globales utilisent 1777 octets (86%) de mémoire dynamique, ce qui laisse 271 octets pour les variables locales. Le maximum est de 2048 octets.
La mémoire disponible faible, des problèmes de stabilité pourraient survenir.


Le moniteur série affiche une longue suite de "à".

J'ai fait les essais en alimentant le module lecteur de carte en 3,3 V et en 5 V à partir de l'Arduino.

Merci encore pour votre aide.

JC.
 
jpbbricole
jpbbricole
Compagnon
26 Mai 2016
1 982
Corsier-sur-Vevey (Vaud)
Je ne pense pas à un problème de tension, parceque l'initialisation est OK.
Essay un petit truc, ajoute, dans mon programme, ceci à cet endroit:

char fileChar = (char)fichierSD.read();
Serial.println(fileChar);
if (fileChar == '\n')

Lance le programme et dis moi ce qui se passe.
Je pense que le problème provient de la façon de "fabriquer essai.txt. Si tu pouvais me décrire la méthode je pourrais la reproduire chez mois.

Cordialement$jpbbricole
 
JCS
JCS
Compagnon
22 Juin 2007
2 156
Cher
Rien ne change :roll:

J'enregistre mon fichier sur ma carte SD en mode CSV à partir d'un tableur.

Y a-t-il une autre solution ?

Cdlt.
JC.
 
La dernière réponse à ce sujet date de plus de 6 mois
Haut