He probado todos los ejemplos de la libreria SD y no ha habido manera de que arrancara, cambie if (!SD.begin(chipSelect)) por while (!card.init(SPI_HALF_SPEED, chipSelect)) { y parece que la detecta, pero no lee el interior.Agradeceria que alguien me echara una mano. saludos
#include <SPI.h>
#include <SD.h>
File myFile;
Sd2Card card;
SdVolume volume;
SdFile root;
const int chipSelect = 53;
void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial.print("Initializing SD card...");
pinMode(53, OUTPUT);
pinMode(53, HIGH);
//if (!SD.begin(chipSelect)) {
while (!card.init(SPI_HALF_SPEED, chipSelect)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization positive.");
if (SD.exists("A.txt")) {
Serial.println("A.txt existe.");
}
else {
Serial.println("A.txt no aparece.");
}
// open a new file and immediately close it:
Serial.println("Creating prueba.txt...");
myFile = SD.open("prueba.txt", FILE_WRITE);
myFile.close();
// Check to see if the file exists:
if (SD.exists("prueba.txt")) {
Serial.println("prueba.txt existe.");
}
else {
Serial.println("prueba.txt no existe.");
}
// delete the file:
Serial.println("Removing c.txt...");
SD.remove("c.txt");
if (SD.exists("c.txt")){
Serial.println("c.txt existe.");
}
else {
Serial.println("c.txt no existe ya.");
}
}
void loop()
{
// nothing happens after setup finishes.
}
Sadvance:
y parece que la detecta, pero no lee el interior.
Suena a problema de partición.
Probaste a formatear la tarjeta con SDFormatter?
Recuerda que formatear implica perder todo lo que tenga ahí, así que respalda lo importante antes de hacerlo.
Lucario nien FAT16 ni FAT32 ni FAT, ni con el SDFormatt ni nada de nada. La he metido en otra pantalla y lee perfectamente, asique debe ser cosa de la TFT y de la libreria porque no me explico ya. Un saludo
Lucario, la tft va conectada directa al arduino mega, no tengo ni idea ya de que puede ser, y me esta rayando la cosa, que al final terminan en el cubo la basura.
He probado este nuevo codigo y tampoco ni lee ni escribe, la reconoce pero na mas.
He probado en una nueva placa arduino y en otra tft igual y tampoco nace nada, salvo reconocerla, empiezo a pensar que tiene que ser algo de la libreria relacionado con la pantalla ILI9327-8.
Seguire experimentando hasta que lo saque o alguien me de solucion.........saludos
#include <SPI.h>
#include <SdFat.h>
const byte ChipSelect_SD = 53;
Sd2Card card;
SdFile file;
SdFile root;
void setup(){
Serial.begin(9600);
pinMode (ChipSelect_SD, OUTPUT); // Pin 53;
digitalWrite (ChipSelect_SD,HIGH);
//digitalWrite (ChipSelect_SD,LOW);
Serial.print("Initializing SD card...");
if (!card.init(SPI_HALF_SPEED, ChipSelect_SD)) {
Serial.println("initialization failed!");
return;
}
else {
Serial.println("initialization positiva.");
}
card.init(SPI_QUARTER_SPEED, ChipSelect_SD); // Inicia a comunicaçion con SD.
if (!file.open(&root,"test.txt", O_APPEND | O_CREAT | O_WRITE)) {
Serial.print("no se escribe test.txt...");
}
else{
Serial.println("Writing to test.txt...");
file.println("testing 1, 2, 3.");
file.print("00.00");
file.write((uint8_t*)"\0", 1);
writeCRLF(file);
// close the file:
Serial.println("perfecto.");
}
file.close();
if (!file.open(&root, "test.txt", O_READ)){
Serial.println("test,txt no se abre");
}
else {
Serial.println("test,txt abierto con:");
int n;
while ((n =file.read()) >= 0) Serial.write(n);
}
file.close();
if (!file.open(&root, "C.TXT", O_READ)){
Serial.println("C.TXT no se abre");
}
else {
Serial.println("C.TXT abierto con:");
int n;
while ((n =file.read()) >= 0) Serial.write(n);
}
file.close();
}
void writeCRLF(SdFile& f)
{
f.write((uint8_t*)"\r\n", 2);
}
void loop(){
}
Si la encuentra e inicia, pero no lee el contenido de la misma.
Esta claro que no lee, pero dices que la encuentra, o sea pasa la inicialización?
Pregunta tonta, probaste con los demos que existen en la librería SD? El que te da la info de la SD, card_info (creo) por ejemplo, ese funciona? No debería según tu explicación pero es para entender.
Yo he tenido muchos problemas con la lectura asi que te comprendo.
Hasta que compré una interfaz de una TFT de saint smart y esa funcionó no importa que le enviara, con todas las pruebas. Otras no. Luego lo que si me funcionó fue una sugerencia de noter donde el modificaba la velocidad como bien has hecho tu, pero a QUARTER no HALF_SPEED.
Prueba con :
Surbyte, primero: no te evito, simplemente lo modifique ayer pero se me olvido poner un corchete. Ya esta modificado, espero que así ya duermes tranquilo.......jejeje.
Respecto a lo de la info_SD o CardInfo, reconoce el tipo de Sd que es, pero me dice: "Could not find FAT16/FAT32 partition", que no encuentra particion ninguna del FAT, vamos.
He probado tambien con el fragmento de codigo que has pegado y el Cardinfo dice exactamente lo mismo que antes, ademas si te das cuenta en el post 5, esta puesto "SPI_HALF_SPEED" y "SPI_QUARTER_SPEED" y vuelve a pasar lo mismo, la reconoce pero no lee el interior.
Voy a investigar eso de la particion FAT, porque solo lo hace con estas TFT´s . Saludos
PD: es una micro Sd de 2Gb.
Y dices que con otra interfaz SD si funciona? No importa nada de todas las alternativas que estamos mencionando. O sea sin cambiar velocidad, sin hacer nada.
Por cierto, gracias por editar el enlace, que no se te olvide!
Y gracias por dejarme dormir, justamente anoche pensaba en esto y me desvelé, jejeje. Fuera de broma me pasó pero no por esto.
Sadvance:
Respecto a lo de la info_SD o CardInfo, reconoce el tipo de Sd que es, pero me dice: "Could not find FAT16/FAT32 partition", que no encuentra particion ninguna del FAT
Ja, no estaba equivocado entonces:
Lucario448:
Suena a problema de partición.
Tendría que ver esa tarjeta en un gestor de particiones para ver si hay algo mal ahí...
He probado con 2 tarjetas diferentes, una de 2 Gb microSD y la otra de 4Gb microSD HC en dos pantallas como la del primer post y en las dos me pone lo mismo, inicia y reconoce el tipo de Sd que es, pero me dice la famosa frase: "Could not find FAT16/FAT32 partition", que no encuentra particion ninguna del FAT
Que pines estas usando para habilitar la SD.
Claro que te funciona con la otra TFT pero no dices cual usas en uno cual en otro.
Los link que pusiste son para MEGA entonces el chip_select no es 10 sino 53, ese usas en todos los casos?
surbyte:
Asi que no es cuestión de la partición creo yo.
El dice que asi tal como esta funciona en otro TFT.
Ahora que lo mencionas...
Could not find FAT16/FAT32 partition
Me recuerda la primera vez utilicé mi único módulo para tarjetas SD. Nunca iniciaba la tarjeta y era porque tenía desconectado el cable que va para el MISO.
Probé con el ejemplo CardInfo, y justo me sucedía ese error. Entre pedir ayuda y algo de observación, noté que el problema estaba en que las conexiones de la protoboard estaban defectuosas.
Ahora bien, la pregunta es la siguiente: la placa con el TFT es una shield, o es un módulo de esos para conectar en protoboards? (con una sola fila de pines, en un solo borde)
El habla de dos grupos de TFT, uno con el que si funciona y otro grupo de 2 TFT (si no entendí mal) con el que NO le funciona y son los que quiere y debe tener que usar.
Lucario, todas las tft que tengo llevan el lector de Sd acoplado por debajo, las que voy a utilizar (verdes) como bien dice Surbyte son las que me estan dando problemas y van conectadas directas sin shield al mega en el pin 53.
Las otras dos TFT (azules) son las que funcionan perfectamente y esas si llevan un shield para conectar al mega y tambien van al 53.
Podeis decirme la web o algun lector externo de Sd que no de problemas y hayais probado antes?????? porque empiezo a pensar que tienen algun fallo en el montaje bien en las pistas o en las soldaduras o vete a saber......
Saludos y gracias surbyte y lucario
Asumiré que son para Arduino Mega como dices, porque de otra forma pensaría que son para protoboard.
Si va directo a los pines del Mega, y funciona la pantalla TFT, entonces es que tenemos problemas de conexión entre pines y las terminales de la ranura de la SD.
Sadvance:
Podeis decirme la web o algun lector externo de Sd que no de problemas y hayais probado antes??????
En realidad, el mio lo adquirí con la aplicación Wish; pero lo que sí sé, es que es como uno de estos:
Este es para protoboards. Lo compré así porque en un principio solo contaba con Arduino Nano.
Muchas gracias Lucario, buscare uno lo ams similar posible, de todos modos el sd de ellas pantallas los dare por perdidos. Voy a colgar un nuevo post con un sketch que he hecho con la otra pantalla que funciona, pero no acaba de cumplir las ordenes....Saludos
Despues de hacer pruebas el fin de semana y estampar una tft contra el suelo, consegui hacer que leyera la SD, como bien dijo Lucario, era problemas de diseño de placa.
Nomalmente los pines en mega son:
SD_CS: 53 (SS)
SD_DIN: 50 (F_SO o MISO)
SD_CLK: 52 (SCLK)
SD_DO: 51 (F_SI o MOSI)
Pues esta TFT tiene cambiados los pines a :
SD_CS: 53 (SS)
SD_DIN: 52 (F_SO o MISO)
SD_CLK: 50 (SCLK)
SD_DO: 51 (F_SI o MOSI)