Помогите пожалуйста разобраться с кодом записи на SD
- Войдите на сайт для отправки комментариев
Вс, 13/05/2018 - 12:50
[code]
#include <Wire.h>
#include <TimeLib.h>
#include <DS1307RTC.h>
#include <SPI.h>
#include <SD.h>
File dataFile;
int sensePin = 0;
String dataString = "";
unsigned long timing;
void setup()
{
Serial.begin(9600);
Serial.print("Initializing SD card...");
pinMode(10, OUTPUT);
if (!SD.begin(10)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
}
void loop()
{
dataString = "";
int Hour;
int Minute;
int Second;
int check;
int val = analogRead(sensePin);
val = constrain(val, 650, 975);
int sdv = map(val,650,975,1,0);
tmElements_t tm;
switch (check) {
RTC.read(tm);
Hour = print2digits(tm.Hour);
Minute = print2digits(tm.Minute);
Second = print2digits(tm.Second);
if (RTC.read(tm)) {
dataString += String(tm.Day);
dataString += ".";
dataString += String(tm.Month);
dataString += ".";
dataString += String(tmYearToCalendar(tm.Year));
dataString += "\t"; // ставим знак табуляции
dataString += String (Hour);
dataString += ":";
dataString += String (Minute);
dataString += ":";
dataString += String (Second);
dataString += ":";
dataString += String(sdv);
Serial.print(dataString); // выводим результаты в serial-порт
Serial.println();
else {
if (RTC.chipPresent()) {
Serial.println("The DS1307 is stopped. Please run the SetTime");
Serial.println("example to initialize the time and begin running.");
Serial.println();
} else {
Serial.println("DS1307 read error! Please check the circuitry.");
Serial.println();
}
delay(9000);
}
if (millis() - timing > 10000){ // Вместо 10000 можно подставить другую периодичность для сохранения
timing = millis();
saveSD(); // сохраняем на microSD
}
break;
case DHT_ERROR_CHECKSUM: // ошибка контрольной суммы
Serial.println("Checksum error");
break;
default: // неизвестная ошибка
Serial.println("Unknown error");
break;
}
delay(1000);
}
void print2digits(int number) {
if (number >= 0 && number < 10) {
Serial.write('0');
}
Serial.print(number);
}
void saveSD()
{
File dataFile = SD.open("sdv.txt", FILE_WRITE); // создаём файл для записи
if (dataFile) { // если файл доступен для записи
dataFile.println(dataString); // сохраняем данные
dataFile.close(); // закрываем файл
Serial.println("Save OK"); // выводим сообщение об удачной записи
} else {
Serial.println("Error opening sdv.txt"); // если файл не доступен
}
}
[/code]
Не могу понять, где я накосячил с кодом… нужно что бы на sd карту записывались данные с фоторезистора с привязкой ко времени.
Подскажите пожалуйста, как и где нужно подправить код? Спасибо.