Ви не увійшли.
Сторінки 1
Є два скетча. Перший працює задовільно. Другий - ні.
Другий відповідає за роботу датчика кольору.
Перший поєднання першого,однак з записом на Sd картку.
Проблема: внаслідок роботи другого скетчу дані кольору повинні зберігатися на картку,однак зберігаться лише 000.
Допоможіть....
#include <Timer.h>
#include <SPI.h>//
#include <SD.h>
#include <DS3231.h>
#include <Wire.h>
Timer timer;
Timer t;
File myFile;
const uint8_t PIN_CS = 4; // указываем номер вывода arduino подключенного к выводу CS адаптера
DS3231 Clock;
bool Century = false;
bool h12;
bool PM;
byte year, month, date, DoW, hour, minute, second;
int s0 = 8;
int s1 = 9;
int s2 = 2;
int s3 = 7;
int out = 10;
int red ;
int green ;
int blue ;
void setup() {
Wire.begin();// Start the I2C interface
pinMode(s0, OUTPUT);
pinMode(s1, OUTPUT);
pinMode(s2, OUTPUT);
pinMode(s3, OUTPUT);
pinMode(out, INPUT);
Serial.begin(9600);
digitalWrite(s0, HIGH);
digitalWrite(s1, HIGH);
while (!Serial) {
;
}
timer.every(60000, tr);
if (!SD.begin(PIN_CS)) {
Serial.println("SD-card not found"); return;
}
}
void loop() {
color();
Serial.print(" RED :" + String(red));
Serial.print(" GREEN : " + String(green));
Serial.println(" BLUE : " + String(blue));
//Serial.println();
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();
timer.update();
delay(1000);
}
void color()
{
// если 11 и 12 порты отключить, то мы получим красный цвет
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
red = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
// если 11 порт включить, а 12 отключить, то синий
digitalWrite(s3, HIGH);
blue = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
// если 12 включить, а 11 отключить, то зеленый
digitalWrite(s2, HIGH);
green = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
}
void tr ()
{
String filename;
static int number;
int i = 0;
filename = "file_";
filename += number++;
filename += ".txt";
//Serial.println(filename);
File myFile = SD.open(filename, FILE_WRITE );
do {
//Serial.println(filename);
myFile.print("20");
myFile.print(Clock.getYear(), DEC);
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("R Intensity:");
myFile.print(255-red, DEC);
myFile.print(" G Intensity: ");
myFile.print(255-green, DEC);
myFile.print(" B Intensity : ");
myFile.println(255-blue, DEC);
delay(1000);
i++;
} while (i<60);
do {
i=i-i;
}while ( i = 0);
myFile.close(); // закрытие файла "iarduino.txt":
}
int s0 = 8;
int s1 = 9;
int s2 = 2;
int s3 = 7;
int out = 10;
int red = 0;
int green = 0;
int blue = 0;
void setup()
{
pinMode(s0, OUTPUT);
pinMode(s1, OUTPUT);
pinMode(s2, OUTPUT);
pinMode(s3, OUTPUT);
pinMode(out, INPUT);
Serial.begin(9600);
digitalWrite(s0, HIGH);
digitalWrite(s1, HIGH);
}
void loop()
{
color();
// выводим значения цветов
Serial.print(" RED :" + String(red));
Serial.print(" GREEN : " + String(green));
Serial.println(" BLUE : " + String(blue));
delay(500);
}
void color()
{
// если 11 и 12 порты отключить, то мы получим красный цвет
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
red = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
// если 11 порт включить, а 12 отключить, то синий
digitalWrite(s3, HIGH);
blue = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
// если 12 включить, а 11 отключить, то зеленый
digitalWrite(s2, HIGH);
green = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
}
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 10, 0, 0, 177 };
Server server(80);
void setup()
{
Ethernet.begin(mac, ip);
server.begin();
}
void loop()
{
Client client = server.available();
if (client) {
// an http request ends with a blank line
boolean current_line_is_blank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
// if we've gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so we can send a reply
if (c == '\n' && current_line_is_blank) {
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
// output the value of each analog input pin
for (int i = 0; i < 6; i++) {
client.print("analog input ");
client.print(i);
client.print(" is ");
client.print(analogRead(i));
client.println("");
}
break;
}
if (c == '\n') {
// we're starting a new line
current_line_is_blank = true;
} else if (c != '\r') {
// we've gotten a character on the current line
current_line_is_blank = false;
}
}
}
// give the web browser time to receive the data
delay(1);
client.stop();
}
}
Спробуйте цей варіант
Всем привет. Сколхозил я себе а-ля модуль для ардуино на лампах ИН-12 и ИН-3. В результате все заработало как нужно. Запитал лампы и ардуино от преобразователя на мс34063. Код был собран с горем пополам - то библиотека не подходила, то еще что-то. Короче, запустил,часы пошли. Но остался не совсем доволен, так как хотелось бы, что бы в коде еще отрабатывал перебор всех цифр каждого индикатора во избежание отравления катодов. Не хватает скилов, что бы сообразить, за счет чего это лучше сделать, то ли прерыванием, то ли как-то по другому. И как сделать прерывание по времени? Например, каждые 3 минуты запускать подпрограмму?
http://forum.arduino.ua/img/members/83/333.jpg
http://forum.arduino.ua/img/members/83/222.jpg
Доброго часу доби! Я не зовсім Вас зрозумів,але я знаю,як зробити виклик по часу
#include <Timer.h> // бібліотека
Timer timer; // клас таймер
void setup() {
// put your setup code here, to run once:
timer.every(60000, tr); // кажемо кожну хвилину викликати функцію tr
}
void loop() {
// put your main code here, to run repeatedly:
timer.update(); // перевіримо чи не пора викликатии функцію
}
void tr () { // оголушуємо функцію
Serial.println("ghg"); // вивід на екран
}
Ось посилання: http://www.ex.ua/849356801761
Скачаєте архів і знайдете бібліотеку. Ключ до скачування 849356801761
#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":
}
Так,працює
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": }
значение счётчика нужно сначала преобразовать в строку, и тогда уже присваивать название файла
Доброго часу доби! Вийшло наступно. Компілятор скетч приймає,помилок не видає. Однак не створює ВЗАГАЛІ нічого на 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":
Видає таку помилку. Допоможіть будь ласка
Потрібно допрацювати програму аби дані з датчика та годинника зберігалися в новий файл через кожні А хвилин. Тобто А хвилин програма працює і зберігає А хвилин своєї роботи в файл. Потім його закриває та відкриває новий для А хвилин роботи.
Ось,що є(просто зберігає всі дані в ОДИН файл):
#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":
}
Сторінки 1