Kurs Arduino #16: Obsługa kart SD

 3. Pierwszy program: Zapis do karty SD

Zaczniemy najpierw od zapisu, ponieważ jest on łatwiejszy.

Schemat dla tej części kursu:

16

Przy wykonywaniu operacji na plikach musimy zapamiętać kolejność wykonywania funkcji:

  1. Otworzyć/utworzyć plik oraz nadać prawa do zapisu
  2. Wstawić dane do pliku
  3. Zamknąć plik

A teraz przejdźmy do programu. Program ma zwiększać zmienną o 1, a następnie zapisywać wartość tej zmiennej do pliku.

Wiem, że może ten program wygląda strasznie, ale zaraz jak go wytłumaczę to powinno się rozjaśnić o wiele więcej. Kurs jak sama nazwa wskazuje ma nauczyć czegoś pożytecznego. W tym przypadku będzie to działanie programu w sposób logiczny oraz chciałbym też pokazać „nowe sposoby” na pisanie programów. Wychodząc z założenia, żeby „Arduino myślało co robi” to zamiast wykonywania programu na ślepo, najpierw niech sprawdzi warunki. Na przykład czy karta jest podłączona, czy utworzony jest plik do którego ma zapisywać itd. Zatem Najpierw sprawdzamy, czy karta jest podłączona do Arduino. Jeżeli nie jest to przerywamy program, bo po co ma być wykonywany skoro najważniejszy warunek nie jest spełniony. Natomiast jak karta została wykryta to sprawdź czy plik do którego chcemy zapisywać istnieje. Jeżeli istnieje to niech wyświetli się komunikat o istnieniu pliku. Jeżeli pliku nie ma, to go stwórz i wyślij komunikat o jego stworzeniu. Teraz przejdźmy do pętli głównej programu. Tutaj mała niespodzianka bo zawiera ona tylko dwie linie kodu. Zatem jak jest on wykonywany ? W tym momencie poznamy klasę.
Klasa jest stworzoną przez nas funkcją, której głównym celem jest zwiększenie przejrzystości programu przy czym program, który tworzymy staje się modułowy. Zamiast pisać wszystko w pętli głównej programu to lepiej rozpiszmy tą całą pętlę główną na mniejsze kawałki, do których będzie się tylko odwoływać. W tym przypadku akurat nie ma takiej potrzeby, żeby rozpisywać pętlę główną na mniejsze kawałki, ale to był tylko przykład zastosowania.

Przykład tworzenia klasy i odwoływania się do niej:

Wracając teraz do naszego programu. W klasie logger() odbywa się cały proces zapisu. Jak widać spełniona jest kolejność operacji na pliku, czyli otwieramy plik z nadaniem praw do zapisu, zapisujemy dane, zamykamy plik. Następnie odczekujemy 0,3 sekundy i wysyłamy komunikat o ukończonym zapisie do pliku. Teraz po zakończeniu naszej klasy program wraca do następnej linii w pętli głównej programu, czyli w tym przypadku zmienna x zostaje zwiększona o 1. Efekt naszego programu powinien być następujący:

1)Brak karty:

1

2)Karta wykryta:

2

3a) Brak pliku- utworzenie go:

3a

3b) Informacja o istniejącym pliku:

3b

 

4) Potwierdzenie zapisu do pliku

4

Po otwarciu utworzonego pliku powinniśmy ujrzeć taki efekt:

zapis

  • Michał Kluska

    void klasa()
    {
    //nasza wspaniała funkcja
    }

    Fajny poradni, ale wprowadzasz ludzi w błąd to jest FUNKCJA, a nie klasa!!!

    Pozdrawiam ;)