{"id":616,"date":"2015-10-25T22:18:40","date_gmt":"2015-10-25T21:18:40","guid":{"rendered":"http:\/\/ignus.co.pl\/blog\/?p=616"},"modified":"2015-10-25T22:18:40","modified_gmt":"2015-10-25T21:18:40","slug":"lc-studio-sd-card-reader-arduino","status":"publish","type":"post","link":"http:\/\/ignus.co.pl\/blog\/?p=616","title":{"rendered":"LC Studio SD Card Reader + Arduino"},"content":{"rendered":"<p>Poradnik prezentuje w jaki spos\u00f3b pod\u0142\u0105czy\u0107 czytnik kart SD do Arduino wraz z przyk\u0142adowym zapisem lub odczytem liczb losowych. Czytnik przydaje si\u0119 na przyk\u0142ad gdy chcemy zapisywa\u0107 dane z r\u00f3\u017cnych senser\u00f3w do p\u00f3\u017aniejszej obr\u00f3bki lub wgl\u0105du.<\/p>\n<p><!--more--><\/p>\n<h4>Potrzebne cz\u0119\u015bci<\/h4>\n<ul>\n<li>Arduino b\u0105d\u017a jakikolwiek kompatybilny klon,w przyk\u0142adzie jest wykrozystany Arduino Uno<\/li>\n<li>czytnik kart SD &#8211; ja wykorzytuje popularny i tani czytnik od LC Studio:<\/li>\n<\/ul>\n<p><a href=\"http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/10\/arduino_sd_card_1.png\"><img loading=\"lazy\" width=\"250\" height=\"444\" class=\"alignnone size-medium wp-image-622\" src=\"http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/10\/arduino_sd_card_1-250x444.png\" alt=\"arduino_sd_card_1\" srcset=\"http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/10\/arduino_sd_card_1-250x444.png 250w, http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/10\/arduino_sd_card_1-120x213.png 120w, http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/10\/arduino_sd_card_1.png 581w\" sizes=\"(max-width: 250px) 100vw, 250px\" \/><\/a><a href=\"http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/10\/arduino_sd_card_2.png\"><img loading=\"lazy\" width=\"250\" height=\"444\" class=\"alignnone size-medium wp-image-623\" src=\"http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/10\/arduino_sd_card_2-250x444.png\" alt=\"arduino_sd_card_2\" srcset=\"http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/10\/arduino_sd_card_2-250x444.png 250w, http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/10\/arduino_sd_card_2-120x213.png 120w, http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/10\/arduino_sd_card_2.png 581w\" sizes=\"(max-width: 250px) 100vw, 250px\" \/><\/a><\/p>\n<ul>\n<li>karta SD, sformatowana najlepiej do systemu plik\u00f3w FAT16 (lub ew. FAT32, ale najlepiej do tego pierwszego)<\/li>\n<li>zestaw kabelk\u00f3w pod\u0142\u0105czeniowych (minimum 6 sztuk), wyj\u0105tkowo nie korzystam z p\u0142ytki prototypowej i pod\u0142\u0105czam bezpo\u015brednio do Arduino za pomoc\u0105 m\u0119sko-\u017ce\u0144skich kabelk\u00f3w, oczywi\u015bcie mo\u017cna poprzez p\u0142ytk\u0119<\/li>\n<\/ul>\n<h4>Pod\u0142\u0105czenie<\/h4>\n<p>Pod\u0142\u0105czamy wed\u0142ug schematu:<\/p>\n<p style=\"text-align: left;\">\n<table id=\"tablepress-4\" class=\"tablepress tablepress-id-4\">\n<thead>\n<tr class=\"row-1 odd\">\n\t<th class=\"column-1\">SD Card Reader<\/th><th class=\"column-2\">Arduino<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-hover\">\n<tr class=\"row-2 even\">\n\t<td class=\"column-1\">GND<\/td><td class=\"column-2\">GND<\/td>\n<\/tr>\n<tr class=\"row-3 odd\">\n\t<td class=\"column-1\">MISO<\/td><td class=\"column-2\">12<\/td>\n<\/tr>\n<tr class=\"row-4 even\">\n\t<td class=\"column-1\">SCK<\/td><td class=\"column-2\">13<\/td>\n<\/tr>\n<tr class=\"row-5 odd\">\n\t<td class=\"column-1\">MOSI<\/td><td class=\"column-2\">11<\/td>\n<\/tr>\n<tr class=\"row-6 even\">\n\t<td class=\"column-1\">CS<\/td><td class=\"column-2\">10<\/td>\n<\/tr>\n<tr class=\"row-7 odd\">\n\t<td class=\"column-1\">+5<\/td><td class=\"column-2\">5V<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-4 from cache --><\/p>\n<p style=\"text-align: left;\"><a href=\"http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/10\/arduino_sd_card_3.png\"><img loading=\"lazy\" width=\"250\" height=\"141\" class=\"alignnone size-medium wp-image-624\" src=\"http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/10\/arduino_sd_card_3-250x141.png\" alt=\"arduino_sd_card_3\" srcset=\"http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/10\/arduino_sd_card_3-250x141.png 250w, http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/10\/arduino_sd_card_3-700x394.png 700w, http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/10\/arduino_sd_card_3-120x68.png 120w, http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/10\/arduino_sd_card_3.png 1032w\" sizes=\"(max-width: 250px) 100vw, 250px\" \/><\/a><\/p>\n<h4 style=\"text-align: left;\">Oprogramowanie<\/h4>\n<p>Uruchamiamy Arduino studio i\u00a0wklejamy:<\/p>\n<pre class=\"lang:c++ decode:true\" title=\"Arduino Studio SD Card\">#include &lt;SD.h&gt;\r\n#include &lt;SPI.h&gt;\r\n\r\n\/\/ Sta\u0142e i zmienne konfiguracyjne\r\n\r\nconst int chipSelect = 10;\r\nint i = 0;\r\nlong randNumber;\r\nchar filename[] = \"ZAPISZDO.TXT\";\r\nFile dataFile;\r\n\r\nvoid setup()\r\n{\r\n  \/\/ Otwarcie komunikacji\r\n  Serial.begin(57600);\r\n  while (!Serial) {\r\n    ;\r\n  }\r\n\r\n  \/\/ Inicjalizacja liczb losowych\r\n  randomSeed(analogRead(0));\r\n\r\n  Serial.print(\"Sprawdzanie karty SD...\");\r\n  pinMode(SS, OUTPUT);\r\n\r\n  \/\/ Sprawdzanie czy jest w\u0142o\u017cona karta\r\n  if (!SD.begin(chipSelect)) {\r\n    Serial.println(\"Karta SD nie jest wlozona lub wystapil z nia problem\");\r\n    while (1) ;\r\n  }\r\n  \r\n  Serial.println(\" karta znaleziona\");\r\n\r\n  \/\/ Je\u017celi chcemy za ka\u017cdym razem zapisa\u0107 do pliku to odkomentowujemy poni\u017csz\u0105 linijk\u0119\r\n  \/\/SD.remove(filename);\r\n\r\n  \/\/ W przypadku gdy plik nie istnieje - tworzymy go\r\n\r\n  if (! SD.exists(filename)) {\r\n     dataFile = SD.open(filename, FILE_WRITE);\r\n      if (! dataFile) {\r\n        Serial.println(\"Nie mozna utworzyc pliku\");\r\n        while (1) ;\r\n      }\r\n      Serial.print(\"Zapisywanie do \");\r\n      Serial.println(filename);\r\n  } else {\r\n    \/\/ w przeciwnym wypadku listujemy zawarto\u015b\u0107:\r\n    Serial.print(\"Znaleziono plik '\");\r\n    Serial.print(filename);\r\n    Serial.println(\"' na karcie pamieci, listing:\");\r\n    dataFile = SD.open(filename);\r\n    while (dataFile.available()) {\r\n      Serial.write(dataFile.read());\r\n    }\r\n    dataFile.close();\r\n    Serial.println(\"Zakonczono listowanie pliku\");\r\n  }\r\n}\r\n\r\nvoid loop()\r\n{\r\n  \/\/ G\u0142\u00f3wna p\u0119tla zapisuj\u0105ca liczby losowe do pliku\r\n  randNumber = random(300);\r\n\r\n  dataFile.println(randNumber);\r\n\r\n  i++;\r\n  if (i &gt; 50) {\r\n    dataFile.flush();\r\n    i = 0;\r\n  }\r\n\r\n  delay(10);\r\n}<\/pre>\n<p>Skrypt utworzy plik o nazwie podanej na jego pocz\u0105tku, nast\u0119pnie co podany czas b\u0119dzie do niego wpisywa\u0107 liczby losowe. Je\u017celi plik ju\u017c istnieje to odczyta i wy\u015bwietli jego zawarto\u015b\u0107 w monitorze szeregowym.<\/p>\n<p>Zach\u0119cam do eksperyment\u00f3w z kodem, w pow\u017cyszym przyk\u0142adzie wida\u0107 na jakiej zasadzie dzia\u0142a odczyt i zapis do dowolnego pliku. Losowe liczby zosta\u0142y u\u017cyte w formie przyk\u0142adu.<\/p>\n<p>Nast\u0119pnie w\u0142\u0105czamy monitor szeregowy i patrzymy na rezultaty. Je\u017celi jest w\u0142o\u017cona karta i nie ma problemu z zapisem powinni\u015bmy otrzyma\u0107:<\/p>\n<p><a href=\"http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/10\/arduino_studio_sd_card.jpg\"><img loading=\"lazy\" width=\"250\" height=\"186\" class=\"alignnone size-medium wp-image-619\" src=\"http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/10\/arduino_studio_sd_card-250x186.jpg\" alt=\"arduino_studio_sd_card\" srcset=\"http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/10\/arduino_studio_sd_card-250x186.jpg 250w, http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/10\/arduino_studio_sd_card-120x89.jpg 120w, http:\/\/ignus.co.pl\/blog\/wp-content\/uploads\/2015\/10\/arduino_studio_sd_card.jpg 546w\" sizes=\"(max-width: 250px) 100vw, 250px\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"Poradnik prezentuje w jaki spos\u00f3b pod\u0142\u0105czy\u0107 czytnik kart SD do Arduino wraz z przyk\u0142adowym zapisem lub odczytem liczb losowych. Czytnik przydaje si\u0119 na przyk\u0142ad gdy chcemy zapisywa\u0107 dane z r\u00f3\u017cnych senser\u00f3w do p\u00f3\u017aniejszej obr\u00f3bki lub wgl\u0105du.","protected":false},"author":1,"featured_media":620,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[96,104,105,106,107],"_links":{"self":[{"href":"http:\/\/ignus.co.pl\/blog\/index.php?rest_route=\/wp\/v2\/posts\/616"}],"collection":[{"href":"http:\/\/ignus.co.pl\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/ignus.co.pl\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/ignus.co.pl\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/ignus.co.pl\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=616"}],"version-history":[{"count":3,"href":"http:\/\/ignus.co.pl\/blog\/index.php?rest_route=\/wp\/v2\/posts\/616\/revisions"}],"predecessor-version":[{"id":628,"href":"http:\/\/ignus.co.pl\/blog\/index.php?rest_route=\/wp\/v2\/posts\/616\/revisions\/628"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/ignus.co.pl\/blog\/index.php?rest_route=\/wp\/v2\/media\/620"}],"wp:attachment":[{"href":"http:\/\/ignus.co.pl\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=616"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/ignus.co.pl\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=616"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/ignus.co.pl\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=616"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}