Arduino не пишет на SD-карту

У меня есть Arduino с SD-картой Seeedstudio vd 4.0 с экраном прототипа над ним, и на нем датчик температуры TMP36 и красный и два зеленых светодиода, красный, чтобы показать, что он "готов" для регистрации данных, первый зеленый, показывающий, что в данный момент "регистрируются данные", и последний светодиод, показывающий, что данные были "сохранены" на SD-карту, которую они отправили, в начале файла, однако он создает строку "Тестирование". 1, 2, 3..."в текстовом файле с именем TEST. в этом же файле должны быть данные, но нет данных, они будут записаны на карту в настройке, но не в цикле. Может кто-нибудь мне помочь?

Код:

#include <toneAC.h>
#include <SPI.h>
#include <SD.h>
int readyLED = 2;
int startLED = 8;
int buzzer = 7;
int tempSensor = A0;
int readyButton = 5;
int sampleNo = 0;
int button_mode = 1;
int saveLED = 4;
File myFile;
void setup() {
  // put your setup code here, to run once:
 pinMode(readyLED, OUTPUT);
 digitalWrite(readyLED, HIGH);
 pinMode(saveLED, OUTPUT);
 digitalWrite(saveLED, LOW);
  pinMode(startLED, OUTPUT);
  pinMode(buzzer, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(tempSensor, INPUT);
  pinMode(readyButton, INPUT);
  digitalWrite(readyLED, HIGH);
  digitalWrite(startLED, LOW);
  Serial.begin(9600);
  while (!Serial){}
    Serial.println("Initializing SD card...");
  if(!SD.begin(4)){
      Serial.println("Failed!");
      return;
    }
  Serial.println("Success!");
    myFile = SD.open("test.txt", FILE_WRITE);
     if (myFile) {
    Serial.println("Writing to test.txt...");
    myFile.println("testing 1, 2, 3.");
    delay(500);
    myFile.close();
    Serial.println("done.");
      } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
  } 


void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(readyLED, HIGH);
   digitalWrite(startLED, LOW);
    delay(700);
    digitalWrite(startLED, HIGH);
    delay(650);
    int reading = analogRead(tempSensor);  
    float voltage = reading * 5.0;
    voltage /= 1024.0; 
    float temperatureC = (voltage - 0.5) * 100;
    float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0;
    Serial.print("Sample No. ");
    sampleNo = sampleNo + 1;
    Serial.print(sampleNo);
    Serial.print(" Temperature: ");
    Serial.print(temperatureF);
    Serial.println(" F");
    myFile = SD.open("test.txt", FILE_WRITE);
    if(myFile){
      Serial.println("Test.txt");
      }
      while(myFile.available()){
        myFile.print("Sample No. ");
        myFile.print(sampleNo);
        myFile.print(" Temperature: ");
        myFile.print(temperatureF);
        myFile.println(" F");       
      }
      delay(30);
      digitalWrite(saveLED, HIGH);
      delay(10);
      digitalWrite(saveLED, LOW);
      delay(10);
      myFile.close();
}

1 ответ

Вы можете проверить, что ваш цикл while действительно запущен. Поскольку вы знаете, что вы можете написать на SD-карту из void setup() Вы знаете, что ваш код внутри цикла while работает, но действительно ли выполняется цикл while или он оценивается как false и пропустить?

Рассматривали ли вы время, необходимое для записи данных, как проблему? Вы можете попросить записать данные до того, как код Arduino успеет обработать.

Другие вопросы по тегам