I am trying to save some data to the SD card using the memory shield module that I read from HC-SR04 Ultrasonic Module. The data that gets printed indicates error. This is how my SD card module is connected.
SD card attached to SPI bus as
VCC -Arduino 5v
GND- Arduino GND
MOSI - pin 11
MISO - pin 12
CLK - pin 13
CS - pin 4
Still, Arduino complains that there was an error opening the file in SD card. My sketch is this:
#include <SPI.h>
#include <SD.h>
#define echoPin 6 // Echo Pin
#define trigPin 7 // Trigger Pin
int maximumRange = 250; // Maximum range needed
int minimumRange = 1; // Minimum range needed
long duration, distance; // Duration used to calculate distance
const int chipSelect = 4;
void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.print("Initializing SD card...");
// see if the card is present and can be initialized:
if (!SD.begin(chipSelect)) {
Serial.println("Card failed, or not present");
// don't do anything more:
return;
}
Serial.println("card initialized.");
}
void loop() {
readDistance();
if(distance>minimumRange && distance < maximumRange){
String string = "distance is" + distance;
// open the file. note that only one file can be open at a time,
// so you have to close this one before opening another.
File dataFile = SD.open("datalog.txt", FILE_WRITE);
// if the file is available, write to it:
if( dataFile ){
dataFile.println(string);
dataFile.close();
Serial.println( string );
}else{
// if the file isn't open, pop up an error:
Serial.println("error opening datalog.txt");
dataFile.close();
}
}else{
Serial.println("Out of range...");
}
delay(50);
}
int readDistance(){
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration/58.2;
}
Output:
rror opening datalog.txt
rror opening datalog.txt
error opening datalog.txt
rror opening datalog.txt
error opening datalog.txt
error opening datalog.txt
error opening datalog.txt
error opening datalog.txt
error opening datalog.txt
How do I solve this to save the readings to SD card?