كيفية حفظ البيانات على بطاقة SD باستخدام وحدة الذاكرة الدرع SPI

أحاول حفظ بعض البيانات على بطاقة SD باستخدام وحدة درع الذاكرة التي أقرأها من وحدة HC-SR04 فوق الصوتية. تشير البيانات التي تتم طباعتها إلى خطأ. هذه هي طريقة توصيل وحدة بطاقة SD الخاصة بي.

بطاقة SD المرفقة بحافلة SPI على سبيل المثال   VCC -Arduino 5v
  GND- Arduino GND
  MOSI - pin 11
  MISO - دبوس 12
  CLK - دبوس 13
  CS - دبوس 4

ومع ذلك ، يشكو Arduino أن هناك خطأ في فتح الملف في بطاقة SD. رسمي هو هذا:

#include 
#include 
#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;
}  

انتاج:

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

كيف يمكنني حل هذا لحفظ القراءات على بطاقة SD؟

2
إعادة فتح الملف في كل مرة من خلال الحلقة تبدو فكرة سيئة. لسوء الحظ ، لا ترسم تجريدات نظام الملفات جيدًا لما تريد القيام به. قد ترغب في كتابة عدد من القراءات ، ثم إعادة فتح ملف ، ربما باسم مختلف في نمط متزايد. أو يمكنك تخطي نظام الملفات والكتابة إلى كتل خام. الأكثر عمليا ، إلقاء نظرة على الرمز المستخدم عادة مع أجهزة تسجيل البيانات USD المستندة إلى Arduino ومعرفة ما يمكنك تعلمه من كيفية التعامل معها.
وأضاف المؤلف rossp, مصدر
أعتقد أنك قد قمت بتقليب بطاقة SD الخاصة بك. هذه البطاقات تعمل في 3.3V وربما لا تكون متسقة 5V.
وأضاف المؤلف Greg Duncan, مصدر

لا توجد ردود.

0