I have a Wemos D1 R1
I can write on the SD and also read the SD
When I use the sample sketch and use the same conditions I get a lot of warning like: SD2Card does not name a type.
Can someone tell me what is going wrong?
Thanks
Post your code
Use code tags </>
Then, post your warnings too, use the copy button from the IDE
it seems not a warning, it must be a error
Hi
Here is the code.
/*
SD card test
This example shows how use the utility libraries on which the'
SD library is based in order to get info about your SD card.
Very useful for testing a card when you're not sure whether its working or not.
The circuit:
* SD card attached to SPI bus as follows:
** MOSI - pin 11 on Arduino Uno/Duemilanove/Diecimila
** MISO - pin 12 on Arduino Uno/Duemilanove/Diecimila
** CLK - pin 13 on Arduino Uno/Duemilanove/Diecimila
** CS - depends on your SD card shield or module.
Pin 4 used here for consistency with other Arduino examples
created 28 Mar 2011
by Limor Fried
modified 9 Apr 2012
by Tom Igoe
*/
// include the SD library:
#include <SPI.h>
#include <SD.h>
#include <FS.h>
//#define SD_RST D3
//#define SD_DC D4
#define SD_SCK D5
#define SD_MISO D6
#define SD_MOSI D7
#define SD_CS D8
// set up variables using the SD utility library functions:
Sd2Card card;
SdVolume volume;
SdFile root;
// change this to match your SD shield or module;
// Arduino Ethernet shield: pin 4
// Adafruit SD shields and modules: pin 10
// Sparkfun SD shield: pin 8
//const int chipSelect = D2;
//#define _cs D2
void setup()
{
// pinMode(_cs, OUTPUT);
// digitalWrite(_cs, HIGH);
// Open serial communications and wait for port to open:
Serial.begin(115200);
// SPIClass spi = SPIClass(VSPI);
// spi.begin(SCK, MISO, MOSI, CS);
if (!SD.begin(CS) {
Serial.println("Card Mount Failed");
return;
}
uint8_t cardType = SD.cardType();
if(cardType == CARD_NONE){
Serial.println("No SD card attached");
return;
}
// while (!Serial) {
// ; // wait for serial port to connect. Needed for Leonardo only
}
Serial.print("\nInitializing SD card...");
// On the Ethernet Shield, CS is pin 4. It's set as an output by default.
// Note that even if it's not used as the CS pin, the hardware SS pin
// (10 on most Arduino boards, 53 on the Mega) must be left as an output
// or the SD library functions will not work.
pinMode(D8, OUTPUT); // change this to 53 on a mega
// we'll use the initialization code from the utility libraries
// since we're just testing if the card is working!
// if (!card.init(SPI_QUARTER_SPEED, chipSelect)) {
Serial.println("initialization failed. Things to check:");
Serial.println("* is a card is inserted?");
Serial.println("* Is your wiring correct?");
Serial.println("* did you change the chipSelect pin to match your shield or module?");
// return;
// } else {
Serial.println("Wiring is correct and a card is present.");
// }
// print the type of card
Serial.print("\nCard type: ");
switch (card.type()) {
case
SD_CARD_TYPE_SD1:
Serial.println("SD1");
break;
case
SD_CARD_TYPE_SD2:
Serial.println("SD2");
break;
case
SD_CARD_TYPE_SDHC:
Serial.println("SDHC");
break;
default:
Serial.println("Unknown");
}
// Now we will try to open the 'volume'/'partition' - it should be FAT16 or FAT32
if (!volume.init(card)) {
Serial.println("Could not find FAT16/FAT32 partition.\nMake sure you've formatted the card");
return;
}
// print the type and size of the first FAT-type volume
uint32_t volumesize;
Serial.print("\nVolume type is FAT");
Serial.println(volume.fatType(), DEC);
Serial.println();
volumesize = volume.blocksPerCluster(); // clusters are collections of blocks
volumesize *= volume.clusterCount(); // we'll have a lot of clusters
volumesize *= 512; // SD card blocks are always 512 bytes
Serial.print("Volume size (bytes): ");
Serial.println(volumesize);
Serial.print("Volume size (Kbytes): ");
volumesize /= 1024;
Serial.println(volumesize);
Serial.print("Volume size (Mbytes): ");
volumesize /= 1024;
Serial.println(volumesize);
Serial.println("\nFiles found on the card (name, date and size in bytes): ");
root.openRoot(volume);
// list all files in the card with date and size
root.ls(LS_R | LS_DATE | LS_SIZE);
}
void loop(void) {
}
you forget to comment right bracket in this fragment:
Hi
I comment, but the warning remains.
Please copy to the forum all compiler diagnostic output
Try
#include "utility/SD2Card.h"
Hi,
researching your problem I identified a possibility:
There is an SD lib for Arduino and an SD lib for ESP8266.
On my PC the lib for the arduino is in the folder:
C:\Program Files (x86)\Arduino\libraries
and the lib for ESP8266 is in the folder:
C:\Users\xxxxx\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.3\libraries
This example you are using compiles well with Arduino.
But if you look at the ESP8266 example folder it is not there.
So I believe it's a sketch just for arduinos.
Thanks. I'm trying this file.
I'm not at home. I send it as quick as possible.
Hi,
You’re right.
thanks
Hi,
if your problem was solved, do a kindness to everyone on the forum, especially to those who helped you. Write [Solved] before your topic title, so if someone searches and finds your topic, they'll know what the solution looks like.
And if it was solved by some help, please tick the one that best describes your solution.
Thanks everybody who tryed to help me.
The problem is solved