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();
}
}
Tags:
As respostas para este tópico estão encerradas.
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.
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.
Video; https://www.youtube.com/watch?v=n4I9s2C2tKM&feature=youtu.be
Daqui a pouco posto o link do vídeo.
Abs,
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por