Paris
Offline
Full Member
Karma: 1
Posts: 156
|
 |
« on: March 26, 2011, 01:29:16 pm » |
Bonjour, J'ai acheté ce matin, ce shield : http://www.lextronic.fr/P5912-module-carte-sd-pour-arduino.htmlJ'ai voulu tester le programme test suivant : #include "SDuFAT.h"
// define the pin that powers up the SD card #define MEM_PW 8
// help string to be sent to the serial port #define HELP "H help\nL file info\nD delete\nP append string\nW init file and write\nR dump to serial\nA append text\n"
// variable used when reading from serial byte inSerByte = 0;
void setup(void) { // on my MicroSD Module the power comes from a digital pin // I activate it at all times pinMode(MEM_PW, OUTPUT); digitalWrite(MEM_PW, HIGH); // configure the serial port to command the card and read data Serial.begin(19200); }
void loop(void) { // Arduino expects one of a series of one-byte commands // you can get some help by sending an 'H' over the serial port if (Serial.available() > 0) { int result = 0; inSerByte = Serial.read(); switch (inSerByte) { case 'H': Serial.println(HELP); result = 3; // special output for help message break; case 'L': result = SD.ls("hola.txt"); break; case 'R': result = SD.cat("hola.txt"); break; case 'W': result = SD.write("hola.txt"); break; case 'A': result = SD.append("hola.txt"); break; case 'P': result = SD.println("hola.txt","\nhola caracola"); break; case 'D': result = SD.del("hola.txt"); break; default: result = 2; // value for unknown operation break; } // print a status message for the last issued command // for help (result == 3) won't print anything if (result == 1) SD.printEvent(ERROR, "hola.txt"); else if (result == 2) SD.printEvent(WARNING, "unknown command"); else if (result == 0) SD.printEvent(SUCCESS, "hola.txt"); } }
D'après ce que j'ai lu ici ( http://www.cooking-hacks.com/index.php/documentation/tutorials/arduino-micro-sd#intro), on doit mettre un fichier nommé hola.txt sur la carte, puis on envoi simplement des commandes à travers la liaison série avec le serial monitor. Quand j’envoie la lettre R ou W par exemple, il me renvoi : [hola.txt] - file content [hola.txt] - ..error!
[unknown command] - ..warning!
Sérieux je pige rien là  , quelqu'un à une idée du problème ? J'ai changé la µSD, c'est pareil.
|
|
|
|
« Last Edit: March 27, 2011, 02:20:45 pm by SamoLaw »
|
Logged
|
|
|
|
|
Pays de la betise
Offline
Sr. Member
Karma: 3
Posts: 407
|
 |
« Reply #1 on: March 26, 2011, 03:44:10 pm » |
[unknown command] - ..warning!
d'après le code, ce serait le caractère reçu qui n'est pas reconnu. Est-ce qu'en envoyant "H" l'aide est affiché ? Tu peux vérifier ce qui est reçu en renvoyant par un serial.print les caractères reçus. Tu seras fixé sur ce qui est reçu par l'arduino (peut-être qu'il recoit 2 caractères au lieu d'un seul). Gromain
|
|
|
|
|
Logged
|
"pour résoudre un gros problème, il est souvent plus facile de le diviser en petits problèmes élémentaires..." projet domotique xPLDuinoIRC: freenode #xplduino
|
|
|
|
Paris
Offline
Full Member
Karma: 1
Posts: 156
|
 |
« Reply #2 on: March 26, 2011, 03:50:58 pm » |
Merci d'avoir rép  J'ai fait ce que tu m'as dit, il recoit bien le caractère transmis. Il affiche bien l'aide avec la commande H. Même en affichant l'aide, il me mets à la fin [unknown command] - ..warning! Bizarre, ce soir il n'y a rien qui marche chez moi. Ma shield µSD marche pas pour l'instant, mon µLCD-144 de chez 4D Systems non plus, truc de fou lol ^^
|
|
|
|
|
Logged
|
|
|
|
|
bussy st george
Offline
Jr. Member
Karma: 0
Posts: 65
|
 |
« Reply #3 on: March 26, 2011, 05:25:11 pm » |
Bonsoir
Pour moi il y a bien il y a quelque chose qui me parle. la déclaration de la variable "inSerByte" me pose une reflection ?? je verais plus un truc comme ça.
// variable used when reading from serial char inSerByte = '0';
La variables bytes et un chiffre pas un caractere non. Cordialement
|
|
|
|
|
Logged
|
Windows Certif MCSA. Electronicien. Arduino Mega 2560. 68hc11F1, 68705U3, 68705P3. Perl,Java,ABAP,VB,VBS,VBnet,Php,Asp,Css,C,C++,C#,MySql,SQL.
|
|
|
|
Paris
Offline
Full Member
Karma: 1
Posts: 156
|
 |
« Reply #4 on: March 26, 2011, 06:16:58 pm » |
Salut
Merci pour ta réponse.
J'ai essayé, et ça ne fonctionne pas.
|
|
|
|
|
Logged
|
|
|
|
|
bussy st george
Offline
Jr. Member
Karma: 0
Posts: 65
|
 |
« Reply #5 on: March 26, 2011, 06:30:51 pm » |
Salut
je regarde le code et je te fais signe plus tard. Cordialement
|
|
|
|
|
Logged
|
Windows Certif MCSA. Electronicien. Arduino Mega 2560. 68hc11F1, 68705U3, 68705P3. Perl,Java,ABAP,VB,VBS,VBnet,Php,Asp,Css,C,C++,C#,MySql,SQL.
|
|
|
|
bussy st george
Offline
Jr. Member
Karma: 0
Posts: 65
|
 |
« Reply #6 on: March 26, 2011, 06:47:40 pm » |
bonsoir tu a bien verifier que le caratére arrive bien l'arduino, d'aprés le code libréry ce n'est pas un caractére ????. fait moi une copie du serial monitor. #include "SDuFAT.h"
// define the pin that powers up the SD card #define MEM_PW 8
// help string to be sent to the serial port #define HELP "H help\nL file info\nD delete\nP append string\nW init file and write\nR dump to serial\nA append text\n"
// variable used when reading from serial byte inSerByte = 0;
void setup(void) { // on my MicroSD Module the power comes from a digital pin // I activate it at all times pinMode(MEM_PW, OUTPUT); digitalWrite(MEM_PW, HIGH); // configure the serial port to command the card and read data Serial.begin(19200); }
void loop(void) { // Arduino expects one of a series of one-byte commands // you can get some help by sending an 'H' over the serial port if (Serial.available() > 0) { int result = 0; inSerByte = Serial.read(); //*********** a modifier Serial.print(inSerByte); // normalement Serial.println("--------------------"); //******************************************** switch (inSerByte) { case 'H': Serial.println(HELP); result = 3; // special output for help message break; case 'L': result = SD.ls("hola.txt"); break; case 'R': result = SD.cat("hola.txt"); break; case 'W': result = SD.write("hola.txt"); break; case 'A': result = SD.append("hola.txt"); break; case 'P': result = SD.println("hola.txt","\nhola caracola"); break; case 'D': result = SD.del("hola.txt"); break; default: result = 2; // value for unknown operation break; } // print a status message for the last issued command // for help (result == 3) won't print anything if (result == 1) SD.printEvent(ERROR, "hola.txt"); else if (result == 2) SD.printEvent(WARNING, "unknown command"); else if (result == 0) SD.printEvent(SUCCESS, "hola.txt"); } }
|
|
|
|
|
Logged
|
Windows Certif MCSA. Electronicien. Arduino Mega 2560. 68hc11F1, 68705U3, 68705P3. Perl,Java,ABAP,VB,VBS,VBnet,Php,Asp,Css,C,C++,C#,MySql,SQL.
|
|
|
|
Pays de la betise
Offline
Sr. Member
Karma: 3
Posts: 407
|
 |
« Reply #7 on: March 27, 2011, 04:30:45 am » |
Même en affichant l'aide, il me mets à la fin [unknown command] - ..warning! C'est probablement que lorsque tu envois un caractère par le Serial Monitor, un caractère de fin est envoyé (caractère nul il me semble). Ajoute donc: Serial.print("inSerByte = "); Serial.println(inSerByte)" juste après inSerByte = Serial.read(); (comme le suggère powerpack dans le code qu'il te demande de tester) Question: quel type d'arduino utilises-tu ? car selon que c'est une Mega ou non, les pins pour l'ISP et le SS ne sont pas au même endroit. Gromain
|
|
|
|
|
Logged
|
"pour résoudre un gros problème, il est souvent plus facile de le diviser en petits problèmes élémentaires..." projet domotique xPLDuinoIRC: freenode #xplduino
|
|
|
|
Paris
Offline
Full Member
Karma: 1
Posts: 156
|
 |
« Reply #8 on: March 27, 2011, 05:07:35 am » |
Salut tt le monde bonsoir
tu a bien verifier que le caratére arrive bien l'arduino, d'aprés le code libréry ce n'est pas un caractére ????. fait moi une copie du serial monitor.
Voilà ce que mets le serial monitor :  Vous aviez raison Gromain59 et powerpack, j'ai mis "no line ending" sur le Serial Monitor. Avant il était sur "Newline", c'est pour ça qu'il affichait toujours "[unknown command] - ..warning!". Désolé les gars, hier j'ai pas fait gaffe au retour à la ligne. Question: quel type d'arduino utilises-tu ? car selon que c'est une Mega ou non, les pins pour l'ISP et le SS ne sont pas au même endroit.
Arduino Uno. Merci.
|
|
|
|
|
Logged
|
|
|
|
|
Pays de la betise
Offline
Sr. Member
Karma: 3
Posts: 407
|
 |
« Reply #9 on: March 27, 2011, 01:39:51 pm » |
Question bête: as-tu correctement formaté la carte SD en FAT16 ? Sous linux par exemple, le format par défaut est ext4.
J'utilise le lecteur de carte SD du shield Ethernet officiel, et au début j'ai eu ce genre de soucis de carte non reconnue. Tu devrais peut-être tester tout simplement la bibliothèque officielle, il y a des exemples fournis.
Gromain
|
|
|
|
|
Logged
|
"pour résoudre un gros problème, il est souvent plus facile de le diviser en petits problèmes élémentaires..." projet domotique xPLDuinoIRC: freenode #xplduino
|
|
|
|
Paris
Offline
Full Member
Karma: 1
Posts: 156
|
 |
« Reply #10 on: March 27, 2011, 02:20:21 pm » |
Bonsoir Oui, ça j'ai vérifier dès le départ, c'est bien en FAT . Un truc que je n'avais pas fait, c'était un scan anti-virus au cas où. Et bien, y'avait un virus sur ma micro-sd  Après mise en quarantaine, deux formatages, tout est rentré dans l'ordre, plus d'erreur. Merci bien les gars.  Vraiment bizarre n'empêche cette histoire de virus.
|
|
|
|
|
Logged
|
|
|
|
|
Pays de la betise
Offline
Sr. Member
Karma: 3
Posts: 407
|
 |
« Reply #11 on: March 27, 2011, 02:22:19 pm » |
sous linux, tu aurais eu certainement des problèmes, mais pas celui là  Tant mieux si ça marche maintenant. Gromain
|
|
|
|
|
Logged
|
"pour résoudre un gros problème, il est souvent plus facile de le diviser en petits problèmes élémentaires..." projet domotique xPLDuinoIRC: freenode #xplduino
|
|
|
|
Paris
Offline
Full Member
Karma: 1
Posts: 156
|
 |
« Reply #12 on: March 27, 2011, 03:51:02 pm » |
Après ça, c'est vrai que je me suis demandé si je devrai pas passer sur Linux.
Le pire, c'est que j'ai Ubuntu installé avec IDE Arduino etc...
|
|
|
|
|
Logged
|
|
|
|
|
|