Pages: [1]   Go Down
Author Topic: [Résolu] Problème Shield µSD  (Read 846 times)
0 Members and 1 Guest are viewing this topic.
Paris
Offline Offline
Full Member
***
Karma: 1
Posts: 156
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

J'ai acheté ce matin, ce shield :

http://www.lextronic.fr/P5912-module-carte-sd-pour-arduino.html

J'ai voulu tester le programme test suivant :

Code:
#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 :

Code:
[hola.txt] - file content
[hola.txt] - ..error!

[unknown command] - ..warning!


Sérieux je pige rien là  smiley-cry smiley-cry, 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 Offline
Sr. Member
****
Karma: 3
Posts: 417
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
[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 xPLDuino
IRC: freenode #xplduino

Paris
Offline Offline
Full Member
***
Karma: 1
Posts: 156
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci d'avoir rép smiley-grin

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
Code:
[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 Offline
Jr. Member
**
Karma: 0
Posts: 65
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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,S

Paris
Offline Offline
Full Member
***
Karma: 1
Posts: 156
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut

Merci pour ta réponse.

J'ai essayé, et ça ne fonctionne pas.

Logged

bussy st george
Offline Offline
Jr. Member
**
Karma: 0
Posts: 65
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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,S

bussy st george
Offline Offline
Jr. Member
**
Karma: 0
Posts: 65
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.

Code:

#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,S

Pays de la betise
Offline Offline
Sr. Member
****
Karma: 3
Posts: 417
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Même en affichant l'aide, il me mets à la fin
Code:
[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:

Code:
Serial.print("inSerByte = ");
Serial.println(inSerByte)"
juste après
Code:
   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 xPLDuino
IRC: freenode #xplduino

Paris
Offline Offline
Full Member
***
Karma: 1
Posts: 156
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Sr. Member
****
Karma: 3
Posts: 417
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 xPLDuino
IRC: freenode #xplduino

Paris
Offline Offline
Full Member
***
Karma: 1
Posts: 156
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley-sad-blue smiley-sad-blue

Après mise en quarantaine, deux formatages, tout est rentré dans l'ordre, plus d'erreur. Merci bien les gars.  smiley-lol smiley-lol

Vraiment bizarre n'empêche cette histoire de virus.
Logged

Pays de la betise
Offline Offline
Sr. Member
****
Karma: 3
Posts: 417
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

sous linux, tu aurais eu certainement des problèmes, mais pas celui là  smiley-razz

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 xPLDuino
IRC: freenode #xplduino

Paris
Offline Offline
Full Member
***
Karma: 1
Posts: 156
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Pages: [1]   Go Up
Jump to: