LC Studio SD Card Reader + Arduino
Poradnik prezentuje w jaki sposób podłączyć czytnik kart SD do Arduino wraz z przykładowym zapisem lub odczytem liczb losowych. Czytnik przydaje się na przykład gdy chcemy zapisywać dane z różnych senserów do późniejszej obróbki lub wglądu.
Potrzebne części
- Arduino bądź jakikolwiek kompatybilny klon,w przykładzie jest wykrozystany Arduino Uno
- czytnik kart SD – ja wykorzytuje popularny i tani czytnik od LC Studio:
- karta SD, sformatowana najlepiej do systemu plików FAT16 (lub ew. FAT32, ale najlepiej do tego pierwszego)
- zestaw kabelków podłączeniowych (minimum 6 sztuk), wyjątkowo nie korzystam z płytki prototypowej i podłączam bezpośrednio do Arduino za pomocą męsko-żeńskich kabelków, oczywiście można poprzez płytkę
Podłączenie
Podłączamy według schematu:
| SD Card Reader | Arduino |
|---|---|
| GND | GND |
| MISO | 12 |
| SCK | 13 |
| MOSI | 11 |
| CS | 10 |
| +5 | 5V |
Oprogramowanie
Uruchamiamy Arduino studio i wklejamy:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
#include <SD.h> #include <SPI.h> // Stałe i zmienne konfiguracyjne const int chipSelect = 10; int i = 0; long randNumber; char filename[] = "ZAPISZDO.TXT"; File dataFile; void setup() { // Otwarcie komunikacji Serial.begin(57600); while (!Serial) { ; } // Inicjalizacja liczb losowych randomSeed(analogRead(0)); Serial.print("Sprawdzanie karty SD..."); pinMode(SS, OUTPUT); // Sprawdzanie czy jest włożona karta if (!SD.begin(chipSelect)) { Serial.println("Karta SD nie jest wlozona lub wystapil z nia problem"); while (1) ; } Serial.println(" karta znaleziona"); // Jeżeli chcemy za każdym razem zapisać do pliku to odkomentowujemy poniższą linijkę //SD.remove(filename); // W przypadku gdy plik nie istnieje - tworzymy go if (! SD.exists(filename)) { dataFile = SD.open(filename, FILE_WRITE); if (! dataFile) { Serial.println("Nie mozna utworzyc pliku"); while (1) ; } Serial.print("Zapisywanie do "); Serial.println(filename); } else { // w przeciwnym wypadku listujemy zawartość: Serial.print("Znaleziono plik '"); Serial.print(filename); Serial.println("' na karcie pamieci, listing:"); dataFile = SD.open(filename); while (dataFile.available()) { Serial.write(dataFile.read()); } dataFile.close(); Serial.println("Zakonczono listowanie pliku"); } } void loop() { // Główna pętla zapisująca liczby losowe do pliku randNumber = random(300); dataFile.println(randNumber); i++; if (i > 50) { dataFile.flush(); i = 0; } delay(10); } |
Skrypt utworzy plik o nazwie podanej na jego początku, następnie co podany czas będzie do niego wpisywać liczby losowe. Jeżeli plik już istnieje to odczyta i wyświetli jego zawartość w monitorze szeregowym.
Zachęcam do eksperymentów z kodem, w powżyszym przykładzie widać na jakiej zasadzie działa odczyt i zapis do dowolnego pliku. Losowe liczby zostały użyte w formie przykładu.
Następnie włączamy monitor szeregowy i patrzymy na rezultaty. Jeżeli jest włożona karta i nie ma problemu z zapisem powinniśmy otrzymać:



