Fala Pessoal,

Preciso de uma ajuda comprei recentemente um SD Card, porém não consigo testa-lo.

Meu problema é o seguinte:

Peguei este skatch abaixo da arduino, fiz as ligações conforme descrito, porém quando abro o monitor serial ele aparece "Initializing SD card...initialization failed!"

Tenho alguns arquivos no sd, porém ele não lê.

/*
Listfiles

This example shows how print out the files in a
directory on a SD card

The circuit:
* SD card attached to SPI bus as follows:
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
** CS - pin 4

created Nov 2010
by David A. Mellis
modified 9 Apr 2012
by Tom Igoe
modified 2 Feb 2014
by Scott Fitzgerald

This example code is in the public domain.

*/
#include <SPI.h>
#include <SD.h>

File root;

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...");

if (!SD.begin(4)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");

root = SD.open("/");

printDirectory(root, 0);

Serial.println("done!");
}

void loop()
{
// nothing happens after setup finishes.
}

void printDirectory(File dir, int numTabs) {
while(true) {

File entry = dir.openNextFile();
if (! entry) {
// no more files
break;
}
for (uint8_t i=0; i<numTabs; i++) {
Serial.print('\t');
}
Serial.print(entry.name());
if (entry.isDirectory()) {
Serial.println("/");
printDirectory(entry, numTabs+1);
} else {
// files have sizes, directories do not
Serial.print("\t\t");
Serial.println(entry.size(), DEC);
}
entry.close();
}
}

Exibições: 1543

As respostas para este tópico estão encerradas.

Respostas a este tópico

Você baixou a biblioteca SD.h e instalou na pasta correspondente? Se não baixe aqui>

https://github.com/adafruit/SD

Após descomprimir o arquivo zip, modifique o nome da pasta retirando o nome máster e o hífen, deixe a pasta nomeada apenas como SD, e copie a mesma para sua pasta libraries, (Caminho da pasta ver anexo: Clic direito no ícone da IDE, e escolha o segundo item do menu contextual que aparece, vai ver a pasta libraries cole a pasta SD que baixou) nesta pasta vai encontrar os exemplos clique sobre alguns e teste.

Boa sorte.

Abs.

Segue o anexo PDF.

Abs.

Anexos

Veja o vídeo, testei o mesmo código.

https://www.youtube.com/watch?v=FTPnrpd_Azk&feature=youtu.be

Abs.

Caro Carlos,

Fiz todo o procedimento que postou, mas mesmo assim aparece a mensagem no serial monitor "

Initializing SD card...initialization failed!".

Será que o módulo está queimado, vc está usando 5v ou 3,3v?

Descobri, o problema está no cartão que  não funciona no arduino.

Comprei um kingston no camelô por 20 reais. Ele lê no Pc faz tudo, mas no arduino não funciona.

:-(

Bom dia FM,

Já tive problemas com cartão ruim também, e determinadas marcas, mas Kingston e Scandisk são confiáveis, o que não é confiável é comprar em camelô, acredite, existe cartões e pendrive falsificados na china, multiplique isso por milhões de unidades e vai perceber que é um bom negocio, uma aplicação confiável não pode depender de um produto suspeito, sei que as vezes é mais cômodo, não se trata do barato, mas as vezes melhor perder um tempo indo a uma loja e estar seguro.

Outra coisa importante, tente formatar o cartão, formate com a formatação padrão do Windows, depois de um retorno.

PD Estou usando 5V na alimentação do Arduino e meu cartão esta no ethernet shield, http://www.labdegaragem.org/loja/29-arduino/genuinos/arduino-ethern...  o seu esta colocado em que shield?

Abs.

Em que pino você colocou o CS? (CHIP SELECT) se estiver no pino 10 mude para o pino 4.

Abs.

Formatei, mas não deu em nada. :-(

Eu estou usando um módulo SD que ccomprei.http://www.filipeflop.com/pd-6b847-modulo-cartao-sd-card.htm.

E estou usando 5v.

O Cs estou usando o pino 4 msn.

Estou tentando criar um datalogger. Aquele que vc fez o vídeo vc poderia compartilhar o skatch?

Abs

Olha meu datalogger que copiei do arduino.cc.

Ta tudo errado. Pode dar uma olhada?

#include <SPI.h>
#include <SD.h>
#include <Wire.h>

#define DS1307_ADDRESS 0x68

byte zero = 0x00;

const int chipSelect = 4;

void setup()
{
Wire.begin();
Serial.begin(9600);

while (!Serial) {
;
}

Serial.print("Initializing SD card...");

if (!SD.begin(chipSelect)) {
Serial.println("Card failed, or not present");
return;
}
Serial.println("card initialized.");
//A linha abaixo pode ser retirada apos setar a data e hora
SelecionaDataeHora();
}

void loop()
{{
String dataString = "";

for (int analogPin = 0; analogPin < 3; analogPin++) {
int sensor = analogRead(analogPin);
dataString += String(sensor);
if (analogPin < 2) {
dataString += ",";
}
}

File dataFile = SD.open("datalog.txt", FILE_WRITE);

if (dataFile) {
dataFile.println(dataString);
dataFile.close();
// print to the serial port too:
Serial.println(dataString);
}
else {
Serial.println("error opening datalog.txt");
}
}
//-----------------------------------
{
Mostrarelogio();
delay(1000);
}

void SelecionaDataeHora()
{
byte segundos = 40;
byte minutos = 59;
byte horas = 23;
byte diadasemana = 1;
byte diadomes = 17;
byte mes = 4;
byte ano = 13;
Wire.beginTransmission(DS1307_ADDRESS);
Wire.write(zero);

Wire.write(ConverteParaBCD(segundos));
Wire.write(ConverteParaBCD(minutos));
Wire.write(ConverteParaBCD(horas));
Wire.write(ConverteParaBCD(diadasemana));
Wire.write(ConverteParaBCD(diadomes));
Wire.write(ConverteParaBCD(mes));
Wire.write(ConverteParaBCD(ano));
Wire.write(zero); //Start no CI
Wire.endTransmission();
}

byte ConverteParaBCD(byte val){
return ( (val/10*16) + (val%10) );
}

byte ConverteparaDecimal(byte val) { //Converte de BCD para decimal
return ( (val/16*10) + (val%16) );
}

void Mostrarelogio()
{
Wire.beginTransmission(DS1307_ADDRESS);
Wire.write(zero);
Wire.endTransmission();
Wire.requestFrom(DS1307_ADDRESS, 7);
int segundos = ConverteparaDecimal(Wire.read());
int minutos = ConverteparaDecimal(Wire.read());
int horas = ConverteparaDecimal(Wire.read() & 0b111111);
int diadasemana = ConverteparaDecimal(Wire.read());
int diadomes = ConverteparaDecimal(Wire.read());
int mes = ConverteparaDecimal(Wire.read());
int ano = ConverteparaDecimal(Wire.read());
//Mostra a data no Serial Monitor
Serial.print("Data: ");
Serial.print(diadomes);
Serial.print("/");
Serial.print(mes);
Serial.print("/");
Serial.print(ano);
Serial.print(" ");
Serial.print("Hora : ");
Serial.print(horas);
Serial.print(":");
Serial.print(minutos);
Serial.print(":");
Serial.print(segundos);
switch(diadasemana)
{
case 0:Serial.println(", Domingo");
break;
case 1:Serial.println(", Segunda");
break;
case 2:Serial.println(", Terca");
break;
case 3:Serial.println(", Quarta");
break;
case 4:Serial.println(", Quinta");
break;
case 5:Serial.println(", Sexta");
break;
case 6:Serial.println(", Sabado");
}
}
}

Eu copiei o código do site, funciona perfeito, estou subindo um vídeo para você.

Em todo caso segue o código que usei e você esta solicitando.

http://pastebin.com/T2FLGB8W

Video; https://www.youtube.com/watch?v=n4I9s2C2tKM&feature=youtu.be

Daqui a pouco posto o link do vídeo.

Abs,

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço