Lire un fichier avec un Shield micro SD en C

@fdufnews Oui c'est ce que je pensais aussi, mais comme @jestiin Appel ça l'IDE d'Arduino et que autant je connais Visual code, dans Platforms IO
Je n'ai jamais utilisé mon Visual Studio pour faire de l'arduino.

Du coup avec les commandes de compilation, on pourrait lui indiquer ce qu'il faut essayer de changer, soit ne pas utiliser GCC mais g++ ou changer une directive de compilation.

En tout cas, je ne vois pas trop comment utiliser le framework Arduino en C pure.

J'ai également retranscrit mon code sous l'IDE Arduino, j'ai exactement les memes erreur que sous PlatformIO.

In file included from /Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/Sd2Card.h:26:0,
                 from /Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/SdFat.h:29,
                 from /Applications/Arduino.app/Contents/Java/libraries/SD/src/SD.h:20,
                 from /Users/jestinsivarajah/Documents/Arduino/servient-c/CoSIO.c:6:
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/Sd2PinMap.h:77:14: error: unknown type name 'pin_map_t'
 static const pin_map_t digitalPinMap[] = {
              ^~~~~~~~~
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/Sd2PinMap.h:461:71: error: 'pin_map_t' undeclared here (not in a function)
 static const uint8_t digitalPinCount = sizeof(digitalPinMap) / sizeof(pin_map_t);
                                                                       ^~~~~~~~~
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/Sd2PinMap.h: In function 'getPinMode':
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/Sd2PinMap.h:469:32: error: request for member 'ddr' in something not a structure or union
     return (*digitalPinMap[pin].ddr >> digitalPinMap[pin].bit) & 1;
                                ^
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/Sd2PinMap.h:469:58: error: request for member 'bit' in something not a structure or union
     return (*digitalPinMap[pin].ddr >> digitalPinMap[pin].bit) & 1;
                                                          ^
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/Sd2PinMap.h: In function 'setPinMode':
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/Sd2PinMap.h:478:26: error: request for member 'ddr' in something not a structure or union
       *digitalPinMap[pin].ddr |= 1 << digitalPinMap[pin].bit;
                          ^
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/Sd2PinMap.h:478:57: error: request for member 'bit' in something not a structure or union
       *digitalPinMap[pin].ddr |= 1 << digitalPinMap[pin].bit;
                                                         ^
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/Sd2PinMap.h:480:26: error: request for member 'ddr' in something not a structure or union
       *digitalPinMap[pin].ddr &= ~(1 << digitalPinMap[pin].bit);
                          ^
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/Sd2PinMap.h:480:59: error: request for member 'bit' in something not a structure or union
       *digitalPinMap[pin].ddr &= ~(1 << digitalPinMap[pin].bit);
                                                           ^
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/Sd2PinMap.h: In function 'fastDigitalRead':
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/Sd2PinMap.h:489:32: error: request for member 'pin' in something not a structure or union
     return (*digitalPinMap[pin].pin >> digitalPinMap[pin].bit) & 1;
                                ^
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/Sd2PinMap.h:489:58: error: request for member 'bit' in something not a structure or union
     return (*digitalPinMap[pin].pin >> digitalPinMap[pin].bit) & 1;
                                                          ^
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/Sd2PinMap.h: In function 'fastDigitalWrite':
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/Sd2PinMap.h:498:26: error: request for member 'port' in something not a structure or union
       *digitalPinMap[pin].port |= 1 << digitalPinMap[pin].bit;
                          ^
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/Sd2PinMap.h:498:58: error: request for member 'bit' in something not a structure or union
       *digitalPinMap[pin].port |= 1 << digitalPinMap[pin].bit;
                                                          ^
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/Sd2PinMap.h:500:26: error: request for member 'port' in something not a structure or union
       *digitalPinMap[pin].port &= ~(1 << digitalPinMap[pin].bit);
                          ^
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/Sd2PinMap.h:500:60: error: request for member 'bit' in something not a structure or union
       *digitalPinMap[pin].port &= ~(1 << digitalPinMap[pin].bit);
                                                            ^
In file included from /Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/SdFat.h:29:0,
                 from /Applications/Arduino.app/Contents/Java/libraries/SD/src/SD.h:20,
                 from /Users/jestinsivarajah/Documents/Arduino/servient-c/CoSIO.c:6:
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/Sd2Card.h: At top level:
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/Sd2Card.h:70:41: error: initializer element is not constant
     uint8_t const  SD_CHIP_SELECT_PIN = SS;
                                         ^~
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/Sd2Card.h:79:35: error: initializer element is not constant
     uint8_t const  SPI_MOSI_PIN = MOSI;
                                   ^~~~
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/Sd2Card.h:81:35: error: initializer element is not constant
     uint8_t const  SPI_MISO_PIN = MISO;
                                   ^~~~
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/Sd2Card.h:83:34: error: initializer element is not constant
     uint8_t const  SPI_SCK_PIN = SCK;
                                  ^~~
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/Sd2Card.h:176:1: error: unknown type name 'class'; did you mean 'labs'?
 class Sd2Card {
 ^~~~~
 labs
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/Sd2Card.h:176:15: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
 class Sd2Card {
               ^
In file included from /Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/SdFat.h:30:0,
                 from /Applications/Arduino.app/Contents/Java/libraries/SD/src/SD.h:20,
                 from /Users/jestinsivarajah/Documents/Arduino/servient-c/CoSIO.c:6:
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/FatStructs.h:405:40: error: initializer element is not constant
 uint8_t const DIR_ATT_FILE_TYPE_MASK = (DIR_ATT_VOLUME_ID | DIR_ATT_DIRECTORY);
                                        ^
In file included from /Users/jestinsivarajah/Library/Arduino15/packages/arduino/hardware/avr/1.8.6/cores/arduino/Print.h:27:0,
                 from /Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/SdFat.h:31,
                 from /Applications/Arduino.app/Contents/Java/libraries/SD/src/SD.h:20,
                 from /Users/jestinsivarajah/Documents/Arduino/servient-c/CoSIO.c:6:
/Users/jestinsivarajah/Library/Arduino15/packages/arduino/hardware/avr/1.8.6/cores/arduino/Printable.h:25:1: error: unknown type name 'class'; did you mean 'labs'?
 class Print;
 ^~~~~
 labs
/Users/jestinsivarajah/Library/Arduino15/packages/arduino/hardware/avr/1.8.6/cores/arduino/Printable.h:33:1: error: unknown type name 'class'; did you mean 'labs'?
 class Printable
 ^~~~~
 labs
/Users/jestinsivarajah/Library/Arduino15/packages/arduino/hardware/avr/1.8.6/cores/arduino/Printable.h:34:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
 {
 ^
In file included from /Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/SdFat.h:31:0,
                 from /Applications/Arduino.app/Contents/Java/libraries/SD/src/SD.h:20,
                 from /Users/jestinsivarajah/Documents/Arduino/servient-c/CoSIO.c:6:
/Users/jestinsivarajah/Library/Arduino15/packages/arduino/hardware/avr/1.8.6/cores/arduino/Print.h:37:1: error: unknown type name 'class'; did you mean 'labs'?
 class Print
 ^~~~~
 labs
/Users/jestinsivarajah/Library/Arduino15/packages/arduino/hardware/avr/1.8.6/cores/arduino/Print.h:38:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
 {
 ^
In file included from /Applications/Arduino.app/Contents/Java/libraries/SD/src/SD.h:20:0,
                 from /Users/jestinsivarajah/Documents/Arduino/servient-c/CoSIO.c:6:
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/SdFat.h:39:1: error: unknown type name 'class'; did you mean 'labs'?
 class SdVolume;
 ^~~~~
 labs
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/SdFat.h:69:26: error: initializer element is not constant
 uint8_t const O_RDONLY = O_READ;
                          ^~~~~~
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/SdFat.h:73:26: error: initializer element is not constant
 uint8_t const O_WRONLY = O_WRITE;
                          ^~~~~~~
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/SdFat.h:75:24: error: initializer element is not constant
 uint8_t const O_RDWR = (O_READ | O_WRITE);
                        ^
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/SdFat.h:77:27: error: initializer element is not constant
 uint8_t const O_ACCMODE = (O_READ | O_WRITE);
                           ^
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/SdFat.h:108:39: error: initializer element is not constant
 uint8_t const FAT_FILE_TYPE_MIN_DIR = FAT_FILE_TYPE_ROOT16;
                                       ^~~~~~~~~~~~~~~~~~~~
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/SdFat.h:151:1: error: unknown type name 'class'; did you mean 'labs'?
 class SdFile : public Print {
 ^~~~~
 labs
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/SdFat.h:151:14: error: expected '=', ',', ';', 'asm' or '__attribute__' before ':' token
 class SdFile : public Print {
              ^
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/SdFat.h:482:1: error: unknown type name 'class'; did you mean 'labs'?
 class SdVolume {
 ^~~~~
 labs
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/SdFat.h:482:16: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
 class SdVolume {
                ^
In file included from /Applications/Arduino.app/Contents/Java/libraries/SD/src/SD.h:21:0,
                 from /Users/jestinsivarajah/Documents/Arduino/servient-c/CoSIO.c:6:
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/SdFatUtil.h: In function 'FreeRam':
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/SdFatUtil.h:43:7: error: 'reinterpret_cast' undeclared (first use in this function)
   if (reinterpret_cast<int>(__brkval) == 0) {
       ^~~~~~~~~~~~~~~~
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/SdFatUtil.h:43:7: note: each undeclared identifier is reported only once for each function it appears in
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/SdFatUtil.h:43:24: error: expected expression before 'int'
   if (reinterpret_cast<int>(__brkval) == 0) {
                        ^~~
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/SdFatUtil.h:45:36: error: expected expression before 'int'
     free_memory = reinterpret_cast<int>(&free_memory)
                                    ^~~
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/SdFatUtil.h:49:36: error: expected expression before 'int'
     free_memory = reinterpret_cast<int>(&free_memory)
                                    ^~~
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/SdFatUtil.h: In function 'SerialPrint_P':
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/SdFatUtil.h:63:5: error: 'Serial' undeclared (first use in this function); did you mean 'ceil'?
     Serial.write(c);
     ^~~~~~
     ceil
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/SdFatUtil.h: In function 'SerialPrintln_P':
/Applications/Arduino.app/Contents/Java/libraries/SD/src/utility/SdFatUtil.h:74:3: error: 'Serial' undeclared (first use in this function); did you mean 'ceil'?
   Serial.println();
   ^~~~~~
   ceil
In file included from /Users/jestinsivarajah/Documents/Arduino/servient-c/CoSIO.c:6:0:
/Applications/Arduino.app/Contents/Java/libraries/SD/src/SD.h: At top level:
/Applications/Arduino.app/Contents/Java/libraries/SD/src/SD.h:26:1: error: unknown type name 'namespace'
 namespace SDLib {
 ^~~~~~~~~
/Applications/Arduino.app/Contents/Java/libraries/SD/src/SD.h:26:17: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
 namespace SDLib {
                 ^
/Applications/Arduino.app/Contents/Java/libraries/SD/src/SD.h:130:1: error: unknown type name 'using'; did you mean 'sinf'?
 using namespace SDLib;
 ^~~~~
 sinf
/Applications/Arduino.app/Contents/Java/libraries/SD/src/SD.h:130:17: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'SDLib'
 using namespace SDLib;
                 ^~~~~
/Applications/Arduino.app/Contents/Java/libraries/SD/src/SD.h:134:14: error: expected '=', ',', ';', 'asm' or '__attribute__' before ':' token
 typedef SDLib::File    SDFile;
              ^
/Applications/Arduino.app/Contents/Java/libraries/SD/src/SD.h:135:14: error: expected '=', ',', ';', 'asm' or '__attribute__' before ':' token
 typedef SDLib::SDClass SDFileSystemClass;
              ^
exit status 1
Erreur de compilation pour la carte Arduino Mega or Mega 2560

Je ne sais pas, si de meilleurs connaisseur que moi, peuvent indiquer si la localisation est normal?

Tu n'a pas la commande de compilation qui s'affiche, je crois me rappeler qu'il faut le préciser dans les préférences pour les avoirs.
Mais je n'en suis pas sûr

Je ne comprends pas très bien comment le répertoire de travail est organisé.
En principe dans l'IDE arduino, il y a des librairie dans

  • .arduino15/packages/arduino/hardware/avr/.... (en principe celles livrées avec l'IDE)
  • et d'autres (celles ajoutées par l'utilisateur) dans un sous répertoire libraries du répertoire de "travail" (le répertoire où sont rangés les "sketch")

Vu la teneur des messages il doit manquer des include.

Ces erreur ne proviennent pas de mon projet mais de la librairie elle même. C'est pour ca je n'ai pas compris du pourquoi je n'arrive pas a la faire marcher sur un projet en C contrairement à un projet en C++.

On tourne en rond, une erreur sans le code (complet, pour qu'on puisse le tester) qui cause l'erreur cela conduit à un échange complètement stérile.

Un bug dans un include ou un define au dessus de l’import du .h peut emmener le compilateur à reporter des erreurs là où elles ne sont pas.

Dernière demande pour Poster TOUT le code sinon ce fil ne sert à rien.

Pardon pour le retard.

Voici le code que j'utilise pour écrire dans le fichier test.txt se trouvant dans ma carte SD.

#include <Arduino.h>
#include <SD.h>

void main() {
  // put your main code here, to run repeatedly:
  SD.begin(53);

  File myFile = SD.open("test.txt", FILE_WRITE);

  if (myFile) {
    myFile.write("Hello World");
    myFile.close();
  }
}

et j'ai les mêmes erreurs que je vous ai envoyé précédemment.

si vous utilisez main() votre Arduino ne se configure pas. utilisez setup() et laissez la loop() vide

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.