Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Arduino - Zapis na karte SD

tomcio2017 14 Maj 2017 21:41 867 5
  • #1 14 Maj 2017 21:41
    tomcio2017
    Poziom 3  

    Witam

    Mam problem ponieważ zapisywane dane z modułu GPS po zaniku zasilania są tracone

    Arduino sprawdza przy każdym uruchomieniu czy na karcie znajduje się plik o konkretnej nazwie. Jeżeli tak to go usuwa. Zatem przy zaniku zasilania tracę wszystkie dane.

    Proszę o pomoc w przerobieniu kodu aby arduino sprawdzało czy jest plik, a jeżeli jest to aby zmieniło jego nazwę np. z NMEA na NMEA1 . I dopiero wtedy utworzył nowy plik NMEA na którym będzie zapasywać dane.


    Jest to wykonalne zdanie ?

    Oto część programu odpowiadajaca za zapis :

    #include <SD.h>
    #include<SPI.h>

    #include <Adafruit_GPS.h>
    #include <SoftwareSerial.h>
    SoftwareSerial mySerial(3,2);
    Adafruit_GPS GPS(&mySerial);

    String NMEA1;
    String NMEA2;
    char c;

    int chipSelect = 4;
    File mySensorData;


    void setup() {

    Serial.begin(115200);
    GPS.begin(9600);
    GPS.sendCommand("$PGCMD,33,0*6D");
    GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA);
    GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ);
    delay(1000);

    pinMode(10, OUTPUT);
    SD.begin(chipSelect);

    if (SD.exists("NMEA.txt"))
    {
    SD.remove("NMEA.txt");
    }

    }

  • Pomocny post
    #2 15 Maj 2017 00:34
    tomus2k
    Poziom 22  

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Kod ten tworzy za każdym uruchomieniem plik o kolejnym nowym numerze, jeśli ilość plików/uruchomień osiągnie 99 to będzie kasował i ponownie zapisywał tylko plik NMEASD99.TXT

    wszędzie gdzie masz "NMEA.txt" zastąp nmea_filename

  • #3 16 Maj 2017 00:43
    tomcio2017
    Poziom 3  

    Dzięki. Działa

    Potrzebuję jeszcze tego samego dla drugiego zapisu. Tylko, że nie działa mi to.

    Co zrobiłem źle, że nie działa to w przypadku gps_filename ?

    Kod: c
    Zaloguj się, aby zobaczyć kod

  • #4 16 Maj 2017 10:05
    tomus2k
    Poziom 22  

    char gps_filename[12];
    Ten zbiór po tej komendzie
    strcpy(gps_filename, "GpsSD00.TXT");
    to:







    0 1234 5 67891011
    G psSD 0 0.TXT0x00


    gps_filename[6] ='0'
    gps_filename[7] ='.'

    A przecież kropki nie chcemy zmieniać.
    wystarczy

    Kod: c
    Zaloguj się, aby zobaczyć kod

  • #5 17 Maj 2017 00:17
    tomcio2017
    Poziom 3  

    Kod niestety jest błędny. Operacja przebiega pomyślnie tylko dla jednego pliku "nmea" natomiast dla Gps za każdym razem zaczyna się od nowa.

    Zdjęcie przedstawia chwilowy zapis z 2 lub 3 restartami. Oto wyniki. Jak widać jest NMEA są utworzone 2 pliki natomiast GPS tylko jeden.

    Arduino - Zapis na karte SD


    Co w takim razie jest źle ?

    Kod: csharp
    Zaloguj się, aby zobaczyć kod

  • Pomocny post
    #6 18 Maj 2017 01:46
    tomus2k
    Poziom 22  

    Kod: csharp
    Zaloguj się, aby zobaczyć kod


    Pilnuj {} wyszła ci podwójna pętla for co przy zastosowaniu break; wyrzucało całość i pętla K się nie wykonywała

 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME