[débutant] Shield Ethernet V2 : SD.open impossible
bonsoir,
je suis en plein apprentissage sur arduino.
pour l'instant, tout se passait bien, mais je bute depuis ce matin sur l'écriture de fichier sur une carte sd.
j'ai enfiché le shiel ethernet sur l'arduino et lancé les instructions suivantes :
#include <spi.h>
#include <sd.h>
file monfichier;
void setup() {
serial.begin(9600); //débute la communication avec le moniteur série
afficher("*************\ninitialisation...");
if (!sd.begin(4)){//teste la communication avec la carte(pin 4)
afficher("communication impossible");
return; //stoppe le programme
};
afficher("communication ok !");
afficher("ouverture du fichier");
if (!(monfichier = sd.open("alea.ard",file_write)))
{
afficher("erreur de fichier");
return; //stoppe le programme
}
afficher("fichier ouvert");
monfichier.close();
afficher("fichier clos");
}
void loop() {
delay(1000);
afficher("a");
}
//code de la fonction1
void afficher(string a){
serial.println(a);
delay(1000);
}
et j'ai le message "erreur de fichier".
ma carte sd est formatée en fat (le fat 32 ne marche pas => "communication impossible".
j'ai :
... rien n'y fait.
la carte sd fonctionne : sur mon pc (windows 10), la carte monte et je peux ouvrir des fichiers.
je sais que les tests font partie de l'apprentissage, mais je suis à bout d'imagination.
est-ce dû à la version de la carte (ethernet shield 2) ?
merci beaucoup pour votre aide
je suis en plein apprentissage sur arduino.
pour l'instant, tout se passait bien, mais je bute depuis ce matin sur l'écriture de fichier sur une carte sd.
j'ai enfiché le shiel ethernet sur l'arduino et lancé les instructions suivantes :
#include <spi.h>
#include <sd.h>
file monfichier;
void setup() {
serial.begin(9600); //débute la communication avec le moniteur série
afficher("*************\ninitialisation...");
if (!sd.begin(4)){//teste la communication avec la carte(pin 4)
afficher("communication impossible");
return; //stoppe le programme
};
afficher("communication ok !");
afficher("ouverture du fichier");
if (!(monfichier = sd.open("alea.ard",file_write)))
{
afficher("erreur de fichier");
return; //stoppe le programme
}
afficher("fichier ouvert");
monfichier.close();
afficher("fichier clos");
}
void loop() {
delay(1000);
afficher("a");
}
//code de la fonction1
void afficher(string a){
serial.println(a);
delay(1000);
}
et j'ai le message "erreur de fichier".
ma carte sd est formatée en fat (le fat 32 ne marche pas => "communication impossible".
j'ai :
- acheté une autre carte sd,
- acheté une autre shield ethernet,
- changé de port usb,
- rallumé l'ordi,
- testé sur un autre ordi,
- réinstallé arduino,
- changé la bibliothèque sd
... rien n'y fait.
la carte sd fonctionne : sur mon pc (windows 10), la carte monte et je peux ouvrir des fichiers.
je sais que les tests font partie de l'apprentissage, mais je suis à bout d'imagination.
est-ce dû à la version de la carte (ethernet shield 2) ?
merci beaucoup pour votre aide
en supposant que tout est bien branché et la carte sd correctement formattée et compatible.
vous avez probablement un conflit pour l'interface spi qui est utilisée par la carte sd et le module ethernet. le chip select de la carte sd est bien 4 (que vous passez en paramètre sd.begin(4)) mais la pin 10 pilote ethernet --> meme si vous-même n'utilisez pas la partie ethernet il faut déclarer la pin 10 en sortie et la mettre à high au tout début du setup pour désactiver le module.
essayez avec ce code
c'est documenté sur la page du shield, même si c'est parfois pénible faut toujours lire les spécifications...
vous avez probablement un conflit pour l'interface spi qui est utilisée par la carte sd et le module ethernet. le chip select de la carte sd est bien 4 (que vous passez en paramètre sd.begin(4)) mais la pin 10 pilote ethernet --> meme si vous-même n'utilisez pas la partie ethernet il faut déclarer la pin 10 en sortie et la mettre à high au tout début du setup pour désactiver le module.
essayez avec ce code
code: [select]
void setup()
{
pinmode(10, output); // ss pin comme output (obligatoire!)
digitalwrite(10, high); // mais ne pas parler à la puce w5100
....
}
c'est documenté sur la page du shield, même si c'est parfois pénible faut toujours lire les spécifications...
quote
note because w5500 , sd card share spi bus, 1 @ time can active. if using both peripherals in program, should taken care of corresponding libraries. if you're not using 1 of peripherals in program, however, you'll need explicitly deselect it. sd card, set pin 4 output , write high it. for w5500, set digital pin 10 high output.sinon n'utilisez pas la classe string, mettez des char * ou const char*
Arduino Forum > International > Français (Moderators: jfs, Snootlab) > [débutant] Shield Ethernet V2 : SD.open impossible
arduino
Comments
Post a Comment