#1 2016-08-18 23:48:06

Владисл@в
Учасник
Зареєстрований: 2016-08-18
Повідомлень: 11

Допоможіть дописати

Потрібно допрацювати програму аби дані з датчика та годинника зберігалися в новий файл через кожні А хвилин. Тобто А хвилин програма працює і зберігає А хвилин своєї роботи в файл. Потім його закриває та відкриває новий для А хвилин роботи.
Ось,що є(просто зберігає всі дані в ОДИН файл):
#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":
}

Неактивний

#2 2016-08-24 14:35:39

serrrg10
Гість

Re: Допоможіть дописати

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":

#3 2016-08-26 23:30:42

Владисл@в
Учасник
Зареєстрований: 2016-08-18
Повідомлень: 11

Re: Допоможіть дописати

#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":
asdpng_3342784_23069905.png
Видає таку помилку. Допоможіть будь ласка

Остання редакція Владисл@в (2016-08-26 23:31:30)

Неактивний

#4 2016-08-27 06:45:27

vvr
Учасник
Зареєстрований: 2015-04-12
Повідомлень: 878

Re: Допоможіть дописати

вам каждые А мин нужно создавать новый файл с новым именем
а вы всё в один пишите

Неактивний

#5 2016-08-27 16:01:52

Владисл@в
Учасник
Зареєстрований: 2016-08-18
Повідомлень: 11

Re: Допоможіть дописати

vvr пише:

вам каждые А мин нужно создавать новый файл с новым именем
а вы всё в один пишите

Це я вже зрозумів. Однак,як зробити так аби скетч сам змінював ім’я файла? І при цьому через кожні А хвилин змінює ім’я файла,але ж і в нього записує.
Тобто А хвилин записує у файл1,потім у файл2 і так далі.

Неактивний

#6 2016-08-27 16:44:09

vvr
Учасник
Зареєстрований: 2015-04-12
Повідомлень: 878

Re: Допоможіть дописати

заведите счётчик, который каждые А мин прибавляет единицу и значение этого счётчика вводите в имя нового файла

Неактивний

#7 2016-08-27 23:20:01

Владисл@в
Учасник
Зареєстрований: 2016-08-18
Повідомлень: 11

Re: Допоможіть дописати

vvr пише:

заведите счётчик, который каждые А мин прибавляет единицу и значение этого счётчика вводите в имя нового файла

Дякую. Ви наштовхнули мене на правильне рішення. Намагався це зробити. Зрозумів шлях виконання,однак не зміг зрозуміти,як зробити так аби ім’я файла було б таке саме як поточне значення лічильника.
Буду вдячний за пояснення

Неактивний

#8 2016-08-28 08:07:20

vvr
Учасник
Зареєстрований: 2015-04-12
Повідомлень: 878

Re: Допоможіть дописати

значение счётчика нужно сначала преобразовать в строку, и тогда уже присваивать название файла

Неактивний

#9 2016-09-05 20:20:37

Владисл@в
Учасник
Зареєстрований: 2016-08-18
Повідомлень: 11

Re: Допоможіть дописати

vvr пише:

значение счётчика нужно сначала преобразовать в строку, и тогда уже присваивать название файла

Доброго часу доби! Вийшло наступно. Компілятор скетч приймає,помилок не видає. Однак не створює ВЗАГАЛІ  нічого на 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":

}

Неактивний

#10 2016-09-06 11:03:04

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Допоможіть дописати

попробуйте что ли такой вариант

#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":

}

Неактивний

#11 2016-09-08 22:05:48

Владисл@в
Учасник
Зареєстрований: 2016-08-18
Повідомлень: 11

Re: Допоможіть дописати

Все рівно нічого не створює. А може проблема  бути :
а)платі ардуїно
б)в бібліотеках.
в) в тому,що цей скетч займає 77% пам’яті??

NoName пише:

попробуйте что ли такой вариант

#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":

}

Неактивний

#12 2016-09-09 13:13:35

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Допоможіть дописати

ok
давайте по шагам

этот пример работает?
https://www.arduino.cc/en/Tutorial/ReadWrite

Неактивний

#13 2016-09-09 14:37:55

Владисл@в
Учасник
Зареєстрований: 2016-08-18
Повідомлень: 11

Re: Допоможіть дописати

Так,працює

NoName пише:

ok
давайте по шагам

этот пример работает?
https://www.arduino.cc/en/Tutorial/ReadWrite

Неактивний

#14 2016-09-09 15:16:42

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Допоможіть дописати

#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 работает в среде ардуино?

Остання редакція NoName (2016-09-09 15:19:17)

Неактивний

#15 2016-09-17 00:40:22

Владисл@в
Учасник
Зареєстрований: 2016-08-18
Повідомлень: 11

Re: Допоможіть дописати

NoName пише:
#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":
}

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму