Ви не увійшли.
#include <SPI.h> #include <SD.h> File myFile; void setup() { // Open serial communications and wait for port to open: Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for native USB port only } Serial.print("Initializing SD card..."); if (!SD.begin(4)) { Serial.println("initialization failed!"); while(1); } Serial.println("initialization done."); } void write_data ( void ) { char temp [128]; static int number = 0; String filename; sprintf (temp, "file_%d.txt",number); myFile = SD.open(temp, FILE_WRITE); // if the file opened okay, write to it: if ( myFile ) { number++; // myFile.println("testing 1, 2, 3."); sprintf (temp, "testing %d,%d,%d",1,2,3); myFile.println (temp); myFile.close(); } else { // if the file didn't open, print an error: Serial.println("error opening test.txt"); } } void loop() { // nothing happens after setup write_data (); delay (1000); }
Я Вас поздравлю, железо у Вас работает , возьмите за основу этот текст ... и сделайте что б работало
sprintf (temp, "file_%d.txt",number); sprintf работает в среде ардуино?
Так,дякую. Вийшло щось таке. Однак на сд карточку йде не коректно. А саме записує лише 1 секунду у файл. Тобто,якщо говорити про даний скетч,то раз в 9 секунд створюється новий файл,а інформації в ньому не за 9 секунд роботи,а лише за одну. Буду вдячний за пораду
//#include <MsTimer2.h>
#include <Timer.h>
#include <SPI.h>//
#include <SD.h>
#include <DS3231.h>
#include <Wire.h>
#include <Adafruit_BMP085.h>
Timer timer;
Timer t;
Adafruit_BMP085 bmp;
File myFile;
const uint8_t PIN_CS = 10; // указываем номер вывода arduino подключенного к выводу CS адаптера
DS3231 Clock;
int number = 0;
uint8_t prevMin = 0;
bool Century = false;
bool h12;
bool PM;
byte year, month, date, DoW, hour, minute, second;
long Temperature = 26, Pressure = 750, Altitude = 170;
void setup() {
Wire.begin();// Start the I2C interface
if (!bmp.begin()) {
Serial.println("Could not find a valid BMP085 sensor, check wiring!");
while (1) {}
}
Serial.begin(9600);// открываем последовательный порт на скорости 9600 бод
while (!Serial) {
; // ожидаем соединение последовательного порта
}
//используем ответ инициализации, для определения работоспособности карты и адаптера
if (!SD.begin(PIN_CS)) { // инициализация SD карты с указанием номера вывода CS
Serial.println("SD-card not found"); return; // ошибка инициализации. карта не обнаружена или не подключён (неправильно подключён) адаптер карт MicroSD
}
//проверяем наличие файла "iarduino.txt" на SD-карте
// SD.exists("iarduino.txt"); // если файл с именем "iarduino.txt" существует, то ...
// Serial.println("file exists");
timer.every(9000, tr);
}
void loop() {
int second, minute, hour, date, month, year, temperature;
second = Clock.getSecond();
minute = Clock.getMinute();
hour = Clock.getHour(h12, PM);
date = Clock.getDate();
month = Clock.getMonth(Century);
year = Clock.getYear();
temperature = Clock.getTemperature();
Serial.print("20");
Serial.print(year, DEC);
Serial.print('-');
Serial.print(month, DEC);
Serial.print('-');
Serial.print(date, DEC);
Serial.print(' ');
Serial.print(hour, DEC);
Serial.print(':');
Serial.print(minute, DEC);
Serial.print(':');
Serial.print(second, DEC);
Serial.print(' ');
Serial.print("Temperature = ");
Serial.print(bmp.readTemperature());
Serial.println(" *C");
Serial.print("Pressure = ");
Serial.print(bmp.readPressure() / 133);
Serial.println(" mm");
Serial.print("Altitude = ");
Serial.print(bmp.readAltitude());
Serial.println(" meters");
Serial.print("Real altitude = ");
Serial.print(bmp.readAltitude(101600));
Serial.println(" meters");
Serial.println(Clock.getYear());
Serial.println(Clock.getYear());
Serial.println();
timer.update();
delay(1000);
}
void tr ()
{
String filename;
static int number;
filename = "file_";
filename += number++;
filename += ".txt";
Serial.println(filename);
File myFile = SD.open(filename, FILE_WRITE );
// если файла с именем "filename " - нет, то он будет создан. |FILE_CREATE ??
myFile.print("20"); // запись строки в открытый файл "iarduino.txt", без добавления символов перехода на новую строку.
myFile.print(Clock.getYear(), DEC); // запись строки в открытый файл "iarduino.txt", с добавлением символов перехода на новую строку.
myFile.print('-');
myFile.print(Clock.getMonth(Century), DEC);
myFile.print('-');
myFile.print(Clock.getDate(), DEC);
myFile.print(' ');
myFile.print(Clock.getHour(h12, PM), DEC);
myFile.print(':');
myFile.print(Clock.getMinute(), DEC);
myFile.print(':');
myFile.print(Clock.getSecond(), DEC);
myFile.print(' ');
myFile.print("Temperature= ");
myFile.println(Temperature, DEC);
myFile.print(' ');
myFile.print("Altitude = ");
myFile.print(bmp.readAltitude(101900), DEC);
myFile.println(" meters");
myFile.print("Pressure = ");
myFile.print(bmp.readPressure()/133, DEC);
myFile.println(" mm");
myFile.close(); // закрытие файла "iarduino.txt":
}
#include <SPI.h>
#include <SD.h>
File myFile;
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
Serial.print("Initializing SD card...");
if (!SD.begin(4)) {
Serial.println("initialization failed!");
while(1);
}
Serial.println("initialization done.");
}
void write_data ( void )
{
char temp [128];
static int number = 0;
String filename;
sprintf (temp, "file_%d.txt",number);
myFile = SD.open(temp, FILE_WRITE);
// if the file opened okay, write to it:
if ( myFile ) {
number++;
// myFile.println("testing 1, 2, 3.");
sprintf (temp, "testing %d,%d,%d",1,2,3);
myFile.println (temp);
myFile.close();
} else {
// if the file didn't open, print an error:
Serial.println("error opening test.txt");
}
}
void loop() {
// nothing happens after setup
write_data ();
delay (1000);
}
Я Вас поздравлю, железо у Вас работает , возьмите за основу этот текст ... и сделайте что б работало
sprintf (temp, "file_%d.txt",number); sprintf работает в среде ардуино?
Так,працює
ok
давайте по шагамэтот пример работает?
https://www.arduino.cc/en/Tutorial/ReadWrite
ok
давайте по шагам
этот пример работает?
https://www.arduino.cc/en/Tutorial/ReadWrite
Все рівно нічого не створює. А може проблема бути :
а)платі ардуїно
б)в бібліотеках.
в) в тому,що цей скетч займає 77% пам’яті??
попробуйте что ли такой вариант
#include <Timer.h> #include <SPI.h>// #include <SD.h> #include <DS3231.h> #include <Wire.h> #include <BMP085.h> const uint8_t PIN_CS = 10; // указываем номер вывода arduino подключенного к выводу CS адаптера File myFile; // создаём переменную myFile класса File, которая будет служить "указателем" на открытый файл Timer timer; //обьявляем класс таймера Timer t; DS3231 Clock; BMP085 dps = BMP085(); bool Century=false; bool h12; bool PM; byte year, month, date, DoW, hour, minute, second; long Temperature = 0, Pressure = 0, Altitude = 40; void setup(){ Wire.begin();// Start the I2C interface dps.init(MODE_STANDARD, 3200, true); Serial.begin(9600); // открываем последовательный порт на скорости 9600 бод while(!Serial){;} // ожидаем соединение последовательного порта //используем ответ инициализации, для определения работоспособности карты и адаптера if(!SD.begin(PIN_CS)){ // инициализация SD карты с указанием номера вывода CS Serial.println("SD-card not found"); return; // ошибка инициализации. карта не обнаружена или не подключён (неправильно подключён) адаптер карт MicroSD } timer.every(1000, write_file); //Говорим вызывать функцию write_file каждые 60*A секунд } void loop() { int second,minute,hour,date,month,year,temperature; second=Clock.getSecond(); minute=Clock.getMinute(); hour=Clock.getHour(h12, PM); date=Clock.getDate(); month=Clock.getMonth(Century); year=Clock.getYear(); temperature=Clock.getTemperature(); dps.getPressure(&Pressure); dps.getTemperature(&Temperature); dps.getAltitude(&Altitude); Serial.print("20"); Serial.print(year,DEC); Serial.print('-'); Serial.print(month,DEC); Serial.print('-'); Serial.print(date,DEC); Serial.print(' '); Serial.print(hour,DEC); Serial.print(':'); Serial.print(minute,DEC); Serial.print(':'); Serial.print(second,DEC); Serial.print(' '); Serial.print("Temperature="); Serial.print(Temperature/10,DEC); Serial.print(' '); Serial.print("Pressure(mmHg):"); Serial.print(Pressure/133.3); //Выводим давление в мм.рт ст Serial.print(" mm "); Serial.print(" Altitude:"); Serial.print(Altitude/103,DEC); // высота в метрах Serial.print('\n'); timer.update(); delay(1000);//Проверяем не пора ли вызвать функцию привязаной к таймеру } // открытие файла "iarduino.txt" для чтения и записи, начиная с конца файла: void write_file() { static int number; String filename; filename = "file_"; filename += '0' + (number/100); filename += '0' + (number/10 )%10; filename += '0' + (number/1 )%10; filename += ".txt"; number++; myFile = SD.open(filename, FILE_WRITE ); // если файла с именем "filename " - нет, то он будет создан. |FILE_CREATE ?? myFile.print("20"); // запись строки в открытый файл "iarduino.txt", без добавления символов перехода на новую строку. myFile.print(year,DEC); // запись строки в открытый файл "iarduino.txt", с добавлением символов перехода на новую строку. myFile.print('-'); myFile.print(month,DEC); myFile.print('-'); myFile.print(date,DEC); myFile.print(' '); myFile.print(hour,DEC); myFile.print(':'); myFile.print(minute,DEC); myFile.print(':'); myFile.print(second,DEC); myFile.print(' '); myFile.print("Temperature= "); myFile.println(Temperature/10,DEC); Serial.print(' '); myFile.print("Pressure(mmHg):"); myFile.print(Pressure/133.3); myFile.print(' '); myFile.print(' '); myFile.print(" Altitude:"); myFile.print(Altitude/103,DEC); delay(1000); myFile.close(); // закрытие файла "iarduino.txt": }
попробуйте что ли такой вариант
#include <Timer.h>
#include <SPI.h>//
#include <SD.h>
#include <DS3231.h>
#include <Wire.h>
#include <BMP085.h>
const uint8_t PIN_CS = 10; // указываем номер вывода arduino подключенного к выводу CS адаптера
File myFile; // создаём переменную myFile класса File, которая будет служить "указателем" на открытый файл
Timer timer; //обьявляем класс таймера
Timer t;
DS3231 Clock;
BMP085 dps = BMP085();
bool Century=false;
bool h12;
bool PM;
byte year, month, date, DoW, hour, minute, second;
long Temperature = 0, Pressure = 0, Altitude = 40;
void setup(){
Wire.begin();// Start the I2C interface
dps.init(MODE_STANDARD, 3200, true);
Serial.begin(9600); // открываем последовательный порт на скорости 9600 бод
while(!Serial){;} // ожидаем соединение последовательного порта
//используем ответ инициализации, для определения работоспособности карты и адаптера
if(!SD.begin(PIN_CS)){ // инициализация SD карты с указанием номера вывода CS
Serial.println("SD-card not found"); return; // ошибка инициализации. карта не обнаружена или не подключён (неправильно подключён) адаптер карт MicroSD
}
timer.every(1000, write_file); //Говорим вызывать функцию write_file каждые 60*A секунд
}
void loop()
{
int second,minute,hour,date,month,year,temperature;
second=Clock.getSecond();
minute=Clock.getMinute();
hour=Clock.getHour(h12, PM);
date=Clock.getDate();
month=Clock.getMonth(Century);
year=Clock.getYear();
temperature=Clock.getTemperature();
dps.getPressure(&Pressure);
dps.getTemperature(&Temperature);
dps.getAltitude(&Altitude);
Serial.print("20");
Serial.print(year,DEC);
Serial.print('-');
Serial.print(month,DEC);
Serial.print('-');
Serial.print(date,DEC);
Serial.print(' ');
Serial.print(hour,DEC);
Serial.print(':');
Serial.print(minute,DEC);
Serial.print(':');
Serial.print(second,DEC);
Serial.print(' ');
Serial.print("Temperature=");
Serial.print(Temperature/10,DEC);
Serial.print(' ');
Serial.print("Pressure(mmHg):");
Serial.print(Pressure/133.3); //Выводим давление в мм.рт ст
Serial.print(" mm ");
Serial.print(" Altitude:");
Serial.print(Altitude/103,DEC); // высота в метрах
Serial.print('\n');
timer.update();
delay(1000);//Проверяем не пора ли вызвать функцию привязаной к таймеру
}
// открытие файла "iarduino.txt" для чтения и записи, начиная с конца файла:
void write_file()
{
static int number;
String filename;
filename = "file_";
filename += '0' + (number/100);
filename += '0' + (number/10 )%10;
filename += '0' + (number/1 )%10;
filename += ".txt";
number++;
myFile = SD.open(filename, FILE_WRITE );
// если файла с именем "filename " - нет, то он будет создан. |FILE_CREATE ??
myFile.print("20"); // запись строки в открытый файл "iarduino.txt", без добавления символов перехода на новую строку.
myFile.print(year,DEC); // запись строки в открытый файл "iarduino.txt", с добавлением символов перехода на новую строку.
myFile.print('-');
myFile.print(month,DEC);
myFile.print('-');
myFile.print(date,DEC);
myFile.print(' ');
myFile.print(hour,DEC);
myFile.print(':');
myFile.print(minute,DEC);
myFile.print(':');
myFile.print(second,DEC);
myFile.print(' ');
myFile.print("Temperature= ");
myFile.println(Temperature/10,DEC);
Serial.print(' ');
myFile.print("Pressure(mmHg):");
myFile.print(Pressure/133.3);
myFile.print(' ');
myFile.print(' ');
myFile.print(" Altitude:");
myFile.print(Altitude/103,DEC);
delay(1000);
myFile.close(); // закрытие файла "iarduino.txt":
}
значение счётчика нужно сначала преобразовать в строку, и тогда уже присваивать название файла
Доброго часу доби! Вийшло наступно. Компілятор скетч приймає,помилок не видає. Однак не створює ВЗАГАЛІ нічого на SD карточці. Можете порадити шляхи вирішення даної проблеми?
#include <Timer.h>
#include <SPI.h>//
#include <SD.h>
#include <DS3231.h>
#include <Wire.h>
#include <BMP085.h>
const uint8_t PIN_CS = 10; // указываем номер вывода arduino подключенного к выводу CS адаптера
File myFile; // создаём переменную myFile класса File, которая будет служить "указателем" на открытый файл
File myFile2;
Timer timer; //обьявляем класс таймера
Timer t;
DS3231 Clock;
BMP085 dps = BMP085();
bool Century=false;
bool h12;
bool PM;
byte year, month, date, DoW, hour, minute, second;
long Temperature = 0, Pressure = 0, Altitude = 40;
void setup(){
Wire.begin();// Start the I2C interface
dps.init(MODE_STANDARD, 3200, true);
Serial.begin(9600); // открываем последовательный порт на скорости 9600 бод
while(!Serial){;} // ожидаем соединение последовательного порта
//используем ответ инициализации, для определения работоспособности карты и адаптера
if(!SD.begin(PIN_CS)){ // инициализация SD карты с указанием номера вывода CS
Serial.println("SD-card not found"); return; // ошибка инициализации. карта не обнаружена или не подключён (неправильно подключён) адаптер карт MicroSD
}
//проверяем наличие файла "iarduino.txt" на SD-карте
if(SD.exists("iarduino.txt")){ // если файл с именем "iarduino.txt" существует, то ...
Serial.println("file exists");
timer.every(1000, write_file); //Говорим вызывать функцию write_file каждые 60*A секунд
}else{ // иначе ...
Serial.println("file doesn't exist");
}
}
void loop() {
int second,minute,hour,date,month,year,temperature;
second=Clock.getSecond();
minute=Clock.getMinute();
hour=Clock.getHour(h12, PM);
date=Clock.getDate();
month=Clock.getMonth(Century);
year=Clock.getYear();
temperature=Clock.getTemperature();
dps.getPressure(&Pressure);
dps.getTemperature(&Temperature);
dps.getAltitude(&Altitude);
Serial.print("20");
Serial.print(year,DEC);
Serial.print('-');
Serial.print(month,DEC);
Serial.print('-');
Serial.print(date,DEC);
Serial.print(' ');
Serial.print(hour,DEC);
Serial.print(':');
Serial.print(minute,DEC);
Serial.print(':');
Serial.print(second,DEC);
Serial.print(' ');
Serial.print("Temperature=");
Serial.print(Temperature/10,DEC);
Serial.print(' ');
Serial.print("Pressure(mmHg):");
Serial.print(Pressure/133.3); //Выводим давление в мм.рт ст
Serial.print(" mm ");
Serial.print(" Altitude:");
Serial.print(Altitude/103,DEC); // высота в метрах
Serial.print('\n');
timer.update();
delay(1000);//Проверяем не пора ли вызвать функцию привязаной к таймеру
}
// открытие файла "iarduino.txt" для чтения и записи, начиная с конца файла:
void write_file()
{
for(int i = 0; i<20;i++){
String str;
str = i + '0';
}
myFile = SD.open("iarduino.txt"+'str', FILE_WRITE); // если файла с именем "iarduino.txt" - нет, то он будет создан.
myFile.print("20"); // запись строки в открытый файл "iarduino.txt", без добавления символов перехода на новую строку.
myFile.print(year,DEC); // запись строки в открытый файл "iarduino.txt", с добавлением символов перехода на новую строку.
myFile.print('-');
myFile.print(month,DEC);
myFile.print('-');
myFile.print(date,DEC);
myFile.print(' ');
myFile.print(hour,DEC);
myFile.print(':');
myFile.print(minute,DEC);
myFile.print(':');
myFile.print(second,DEC);
myFile.print(' ');
myFile.print("Temperature= ");
myFile.println(Temperature/10,DEC);
Serial.print(' ');
myFile.print("Pressure(mmHg):");
myFile.print(Pressure/133.3);
myFile.print(' ');
myFile.print(' ');
myFile.print(" Altitude:");
myFile.print(Altitude/103,DEC);
delay(1000);
myFile.close(); // закрытие файла "iarduino.txt":
}
значение счётчика нужно сначала преобразовать в строку, и тогда уже присваивать название файла
заведите счётчик, который каждые А мин прибавляет единицу и значение этого счётчика вводите в имя нового файла
Дякую. Ви наштовхнули мене на правильне рішення. Намагався це зробити. Зрозумів шлях виконання,однак не зміг зрозуміти,як зробити так аби ім’я файла було б таке саме як поточне значення лічильника.
Буду вдячний за пояснення
заведите счётчик, который каждые А мин прибавляет единицу и значение этого счётчика вводите в имя нового файла
вам каждые А мин нужно создавать новый файл с новым именем
а вы всё в один пишите
Це я вже зрозумів. Однак,як зробити так аби скетч сам змінював ім’я файла? І при цьому через кожні А хвилин змінює ім’я файла,але ж і в нього записує.
Тобто А хвилин записує у файл1,потім у файл2 і так далі.
вам каждые А мин нужно создавать новый файл с новым именем
а вы всё в один пишите
#include <Timer.h>// Тут подключаем библиотеку
#include <SPI.h>//
#include <SD.h>
#include <DS3231.h>
#include <Wire.h>
#include <BMP085.h>
#include <LiquidCrystal.h>
const uint8_t PIN_CS = 10; // указываем номер вывода arduino подключенного к выводу CS адаптера
File myFile; // создаём переменную myFile класса File, которая будет служить "указателем" на открытый файл
File myFile2;
Timer timer; //обьявляем класс таймера
DS3231 Clock;
BMP085 dps = BMP085();
bool Century=false;
bool h12;
bool PM;
byte year, month, date, DoW, hour, minute, second;
long Temperature = 0, Pressure = 0, Altitude = 40;
int var = 0;
int vaf =0;
void setup(){
Wire.begin();// Start the I2C interface
dps.init(MODE_STANDARD, 3200, true);
Serial.begin(9600); // открываем последовательный порт на скорости 9600 бод
while(!Serial){;} // ожидаем соединение последовательного порта
//используем ответ инициализации, для определения работоспособности карты и адаптера
if(!SD.begin(PIN_CS)){ // инициализация SD карты с указанием номера вывода CS
Serial.println("SD-card not found"); return; // ошибка инициализации. карта не обнаружена или не подключён (неправильно подключён) адаптер карт MicroSD
}
//проверяем наличие файла "iarduino.txt" на SD-карте
if(SD.exists("iarduino.txt")){ // если файл с именем "iarduino.txt" существует, то ...
Serial.println("file exists");
timer.every(60*A, write_file); //Говорим вызывать функцию write_file каждые 60*A секунд
}else{ // иначе ...
Serial.println("file doesn't exist");
}
}
void loop() {
int second,minute,hour,date,month,year,temperature;
second=Clock.getSecond();
minute=Clock.getMinute();
hour=Clock.getHour(h12, PM);
date=Clock.getDate();
month=Clock.getMonth(Century);
year=Clock.getYear();
temperature=Clock.getTemperature();
dps.getPressure(&Pressure);
dps.getTemperature(&Temperature);
dps.getAltitude(&Altitude);
Serial.print("20");
Serial.print(year,DEC);
Serial.print('-');
Serial.print(month,DEC);
Serial.print('-');
Serial.print(date,DEC);
Serial.print(' ');
Serial.print(hour,DEC);
Serial.print(':');
Serial.print(minute,DEC);
Serial.print(':');
Serial.print(second,DEC);
Serial.print(' ');
Serial.print("Temperature=");
Serial.print(temperature);
Serial.print(' ');
Serial.print("Pressure(mmHg):");
Serial.print(Pressure/133.3); //Выводим давление в мм.рт ст
Serial.print(" mm ");
Serial.print(" Altitude:");
Serial.print(Altitude); // высота в метрах
Serial.print('\n');
timer.update(); //Проверяем не пора ли вызвать функцию привязаной к таймеру
}
// открытие файла "iarduino.txt" для чтения и записи, начиная с конца файла:
int write_file()
{
myFile = SD.open("iarduino.txt", FILE_WRITE); // если файла с именем "iarduino.txt" - нет, то он будет создан.
myFile.print("20"); // запись строки в открытый файл "iarduino.txt", без добавления символов перехода на новую строку.
myFile.print(year,DEC); // запись строки в открытый файл "iarduino.txt", с добавлением символов перехода на новую строку.
myFile.print('-');
myFile.print(month,DEC);
myFile.print('-');
myFile.print(date,DEC);
myFile.print(' ');
myFile.print(hour,DEC);
myFile.print(':');
myFile.print(minute,DEC);
myFile.print(':');
myFile.print(second,DEC);
myFile.print(' ');
myFile.print("Temperature= ");
myFile.println(temperature);
Serial.print(' ');
myFile.print("Pressure(mmHg):");
myFile.print(Pressure/133.3);
myFile.print(' ');
myFile.print(' ');
myFile.print(" Altitude:");
myFile.print(Altitude);
delay(1000);
myFile.close();
return 0;
} // закрытие файла "iarduino.txt":
Видає таку помилку. Допоможіть будь ласка
http://playground.arduino.cc/Main/LibraryList#Timing
Много библиотек можно попробовать Timer.h
#include <Timer.h>// Тут подключаем библиотеку
#include <SPI.h>//
#include <SD.h>
#include <DS3231.h>
#include <Wire.h>
#include <BMP085.h>
#include <LiquidCrystal.h>
const uint8_t PIN_CS = 10; // указываем номер вывода arduino подключенного к выводу CS адаптера
File myFile; // создаём переменную myFile класса File, которая будет служить "указателем" на открытый файл
File myFile2;
Timer timer; //обьявляем класс таймера
DS3231 Clock;
BMP085 dps = BMP085();
bool Century=false;
bool h12;
bool PM;
byte year, month, date, DoW, hour, minute, second;
long Temperature = 0, Pressure = 0, Altitude = 40;
int var = 0;
int vaf =0;
void setup(){
Wire.begin();// Start the I2C interface
dps.init(MODE_STANDARD, 3200, true);
Serial.begin(9600); // открываем последовательный порт на скорости 9600 бод
while(!Serial){;} // ожидаем соединение последовательного порта
//используем ответ инициализации, для определения работоспособности карты и адаптера
if(!SD.begin(PIN_CS)){ // инициализация SD карты с указанием номера вывода CS
Serial.println("SD-card not found"); return; // ошибка инициализации. карта не обнаружена или не подключён (неправильно подключён) адаптер карт MicroSD
}
//проверяем наличие файла "iarduino.txt" на SD-карте
if(SD.exists("iarduino.txt")){ // если файл с именем "iarduino.txt" существует, то ...
Serial.println("file exists");
timer.every(60*A, write_file); //Говорим вызывать функцию write_file каждые 60*A секунд
}else{ // иначе ...
Serial.println("file doesn't exist");
}
}
void loop() {
int second,minute,hour,date,month,year,temperature;
second=Clock.getSecond();
minute=Clock.getMinute();
hour=Clock.getHour(h12, PM);
date=Clock.getDate();
month=Clock.getMonth(Century);
year=Clock.getYear();
temperature=Clock.getTemperature();
dps.getPressure(&Pressure);
dps.getTemperature(&Temperature);
dps.getAltitude(&Altitude);
Serial.print("20");
Serial.print(year,DEC);
Serial.print('-');
Serial.print(month,DEC);
Serial.print('-');
Serial.print(date,DEC);
Serial.print(' ');
Serial.print(hour,DEC);
Serial.print(':');
Serial.print(minute,DEC);
Serial.print(':');
Serial.print(second,DEC);
Serial.print(' ');
Serial.print("Temperature=");
Serial.print(temperature);
Serial.print(' ');
Serial.print("Pressure(mmHg):");
Serial.print(Pressure/133.3); //Выводим давление в мм.рт ст
Serial.print(" mm ");
Serial.print(" Altitude:");
Serial.print(Altitude); // высота в метрах
Serial.print('\n');
timer.update(); //Проверяем не пора ли вызвать функцию привязаной к таймеру
}
// открытие файла "iarduino.txt" для чтения и записи, начиная с конца файла:
int write_file()
{
myFile = SD.open("iarduino.txt", FILE_WRITE); // если файла с именем "iarduino.txt" - нет, то он будет создан.
myFile.print("20"); // запись строки в открытый файл "iarduino.txt", без добавления символов перехода на новую строку.
myFile.print(year,DEC); // запись строки в открытый файл "iarduino.txt", с добавлением символов перехода на новую строку.
myFile.print('-');
myFile.print(month,DEC);
myFile.print('-');
myFile.print(date,DEC);
myFile.print(' ');
myFile.print(hour,DEC);
myFile.print(':');
myFile.print(minute,DEC);
myFile.print(':');
myFile.print(second,DEC);
myFile.print(' ');
myFile.print("Temperature= ");
myFile.println(temperature);
Serial.print(' ');
myFile.print("Pressure(mmHg):");
myFile.print(Pressure/133.3);
myFile.print(' ');
myFile.print(' ');
myFile.print(" Altitude:");
myFile.print(Altitude);
delay(1000);
myFile.close();
return 0;
} // закрытие файла "iarduino.txt":
Потрібно допрацювати програму аби дані з датчика та годинника зберігалися в новий файл через кожні А хвилин. Тобто А хвилин програма працює і зберігає А хвилин своєї роботи в файл. Потім його закриває та відкриває новий для А хвилин роботи.
Ось,що є(просто зберігає всі дані в ОДИН файл):
#include <SPI.h>//
#include <SD.h>
#include <DS3231.h>
#include <Wire.h>
#include <BMP085.h>
#include <LiquidCrystal.h>
const uint8_t PIN_CS = 10; // указываем номер вывода arduino подключенного к выводу CS адаптера
File myFile; // создаём переменную myFile класса File, которая будет служить "указателем" на открытый файл
File myFile2;
DS3231 Clock;
BMP085 dps = BMP085();
bool Century=false;
bool h12;
bool PM;
byte year, month, date, DoW, hour, minute, second;
long Temperature = 0, Pressure = 0, Altitude = 40;
int var = 0;
int vaf =0;
void setup(){
Wire.begin();// Start the I2C interface
dps.init(MODE_STANDARD, 3200, true);
Serial.begin(9600); // открываем последовательный порт на скорости 9600 бод
while(!Serial){;} // ожидаем соединение последовательного порта
//используем ответ инициализации, для определения работоспособности карты и адаптера
if(!SD.begin(PIN_CS)){ // инициализация SD карты с указанием номера вывода CS
Serial.println("SD-card not found"); return; // ошибка инициализации. карта не обнаружена или не подключён (неправильно подключён) адаптер карт MicroSD
}
//проверяем наличие файла "iarduino.txt" на SD-карте
if(SD.exists("iarduino.txt")){ // если файл с именем "iarduino.txt" существует, то ...
Serial.println("file exists");
}else{ // иначе ...
Serial.println("file doesn't exist");
}
}
void loop() {
int second,minute,hour,date,month,year,temperature;
second=Clock.getSecond();
minute=Clock.getMinute();
hour=Clock.getHour(h12, PM);
date=Clock.getDate();
month=Clock.getMonth(Century);
year=Clock.getYear();
temperature=Clock.getTemperature();
dps.getPressure(&Pressure);
dps.getTemperature(&Temperature);
dps.getAltitude(&Altitude);
Serial.print("20");
Serial.print(year,DEC);
Serial.print('-');
Serial.print(month,DEC);
Serial.print('-');
Serial.print(date,DEC);
Serial.print(' ');
Serial.print(hour,DEC);
Serial.print(':');
Serial.print(minute,DEC);
Serial.print(':');
Serial.print(second,DEC);
Serial.print(' ');
Serial.print("Temperature=");
Serial.print(temperature);
Serial.print(' ');
Serial.print("Pressure(mmHg):");
Serial.print(Pressure/133.3); //Выводим давление в мм.рт ст
Serial.print(" mm ");
Serial.print(" Altitude:");
Serial.print(Altitude); // высота в метрах
Serial.print('\n');
// открытие файла "iarduino.txt" для чтения и записи, начиная с конца файла:
myFile = SD.open("iarduino.txt", FILE_WRITE); // если файла с именем "iarduino.txt" - нет, то он будет создан.
myFile.print("20"); // запись строки в открытый файл "iarduino.txt", без добавления символов перехода на новую строку.
myFile.print(year,DEC); // запись строки в открытый файл "iarduino.txt", с добавлением символов перехода на новую строку.
myFile.print('-');
myFile.print(month,DEC);
myFile.print('-');
myFile.print(date,DEC);
myFile.print(' ');
myFile.print(hour,DEC);
myFile.print(':');
myFile.print(minute,DEC);
myFile.print(':');
myFile.print(second,DEC);
myFile.print(' ');
myFile.print("Temperature= ");
myFile.println(temperature);
Serial.print(' ');
myFile.print("Pressure(mmHg):");
myFile.print(Pressure/133.3);
myFile.print(' ');
myFile.print(' ');
myFile.print(" Altitude:");
myFile.print(Altitude);
delay(1000);
myFile.close(); // закрытие файла "iarduino.txt":
}