ARDUINO нужна помощь по доработке скетча sd card

Artemilin

✩✩✩✩✩✩✩
17 Дек 2018
4
0
Всем доброго.Друзья ,никак не могу сообразить ,в поиске решения своей задачи, прошерстил весь гугл,яндекс и ютуб .Имеется две ардуины,с одной ардуины отсылаются показания с датчиков через передатчик 433mhz,вторая принимает эти показания и записывает на sd card в текстовый файл .В таком варианте все работает.Мне нужно сделать так ,чтобы еще с одной ардуины принимать данные с датчиков.Но я не нашел примеров с sd card, чтобы данные с каждой ардуины записывались в разные текстовые файлы,что нужно изменить в скетче из стандартного примера sd card,чтобы создать второй текстовый фаил для записи.
C++:
#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.");

  // open the file. note that only one file can be open at a time,
  // so you have to close this one before opening another.
  myFile = SD.open("test.txt", FILE_WRITE);

  // if the file opened okay, write to it:
  if (myFile) {
    Serial.print("Writing to test.txt...");
    myFile.println("testing 1, 2, 3.");
    // close the file:
    myFile.close();
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }

  // re-open the file for reading:
  myFile = SD.open("test.txt");
  if (myFile) {
    Serial.println("test.txt:");

    // read from the file until there's nothing else in it:
    while (myFile.available()) {
      Serial.write(myFile.read());
    }
    // close the file:
    myFile.close();
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
}

void loop() {
  // nothing happens after setup
}
чтобы создать несколько текстовых файлов?
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,263
1,302
Москва
Так не работает ? Я не пробовал, нет сд читалки. но в обычных версиях так и делают
myFile = SD.open("test.txt", FILE_WRITE);
myFile2= SD.open("test2.txt", FILE_WRITE);
myFile3 = SD.open("test3.txt", FILE_WRITE);
 

Artemilin

✩✩✩✩✩✩✩
17 Дек 2018
4
0
побробывал вставить в пример

myFile2= SD.open("test2.txt", FILE_WRITE);
myFile3 = SD.open("test3.txt", FILE_WRITE);
ругается
C++:
#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.");

  // open the file. note that only one file can be open at a time,
  // so you have to close this one before opening another.
  myFile = SD.open("test.txt", FILE_WRITE);
  myFile2= SD.open("test2.txt", FILE_WRITE);
  myFile3 = SD.open("test3.txt", FILE_WRITE);

  // if the file opened okay, write to it:
  if (myFile) {
    Serial.print("Writing to test.txt...");
    myFile.println("testing 1, 2, 3.");
    // close the file:
    myFile.close();
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }

  // re-open the file for reading:
  myFile = SD.open("test.txt");
  if (myFile) {
    Serial.println("test.txt:");

    // read from the file until there's nothing else in it:
    while (myFile.available()) {
      Serial.write(myFile.read());
    }
    // close the file:
    myFile.close();
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
}

void loop() {
  // nothing happens after setup
}
sketch_dec22a:25:3: error: 'myFile2' was not declared in this scope

myFile2= SD.open("test2.txt", FILE_WRITE);

^

sketch_dec22a:26:3: error: 'myFile3' was not declared in this scope

myFile3 = SD.open("test3.txt", FILE_WRITE);

^

exit status 1
'myFile2' was not declared in this scope
 

Artemilin

✩✩✩✩✩✩✩
17 Дек 2018
4
0
извиняюсь.туплю.надо было еще в начале дописать
File myFile2;
File myFile3;
так скомпилировался
спасибо за подсказку.пошел пробывать в основном скетче.
 

Artemilin

✩✩✩✩✩✩✩
17 Дек 2018
4
0
Вообщем не выходит.Прописал в основном скетче чтобы записывались данные во второй текстовый фаил,в итоге в первый фаил не пишет и во второй тоже не пишет.данные приходят с разным интервалом.скетч приемма данных прикрепляю,может кто подскажет в чём ошибка.
 

Вложения

Старик Похабыч

★★★★★★★
14 Авг 2019
4,263
1,302
Москва
Перед тем, как записывать что то на карту сделай вывод в монитор порта. не просто prtibtln(peremennaya) а расширенный, к примеру так
Serial.println("Данные с датчика 1");
Serial.print("|");Serial.print(dannye);Serial.println("|");
Сразу будет понятно, что данные для записи поступают и ничего пустого на карту не пишется.
Там где условие if (myFile2)
обработай else {Serial.prtintln("Ошибка открытия File2")}

ну еще попробовать сделать flush()