Ардуино подключаем ЧРВ и SD карту
Постепенно приближаемся к реализации нашего нового проекта.
Но пока приходиться все делать по шагам. Сегодня мы сделаем еще один шаг
вперед: научимся подключать к ардуино часы реального времени и SD карту. И более того будем
записывать данные на карту памяти. А начнем с подключения отдельных блоков.
Первый блок это ЧРВ (часы реального времени). На этот раз мы
подключим пины следующим образом: GND-GND, VCC-+5V, RST-5, CLK-7, DAT-6. При этом указанные пины (5,6,7) в
скетче можно всегда заменить на другие.
Итак, модуль ЧРВ мы подключили…
Теперь давайте подключим SD карту. Для этого проще всего воспользоваться схемой, и тогда
точно не запутаетесь в куче проводов идущего от модуля SDкарты. На всякий случай на схеме
отобразим подключения обоих модулей.
Итак схему собрали, но перед тем как переходить к скетчу давайте
установим библиотеки: <SPI.h>,
<SD.h>, и <RTC.h>. Все эти
библиотеки можно загрузить с Яндекс диска (по отдельности) или сразу общимархивом.
Теперь что будет собственно делать скетч. В нашем проекте мы
будем вести несколько логов (общий и отдельные логии для записи времени и
случайных чисел) на карте памяти. Кстати не забудьте сразу же на компьютере
отформатировать карту в FAT32
(FAT16). По сути дела
мы будем (в следующем проекте подключать датчики) записывать на карту памяти
время, и случайные числа (пока еще не подключили датчик атмосферного давления).
Скетч можно так же загрузить с Яндекс диска жми сюда....
#include
<SPI.h>
#include
<SD.h>
#include
<RTC.h>
RTC time;
//Set by
default for the SD card library
//MOSI =
Pin 11
//MISO =
Pin 12
//SCLK =
PIN 13
//We
always need to set the CS Pin
const
int CS_PIN =10;
long
datet;
//We set
this high to provide power
const
int POW_PIN =8;
void
setup()
{
time.begin(RTC_DS1302,5,7,6);
Serial.begin(9600);
Serial.println("Initializing
Card");
//CS pin is an output
pinMode(CS_PIN, OUTPUT);
//Card will draw power from pin 8, so set it
high
pinMode(POW_PIN, OUTPUT);
digitalWrite(POW_PIN, HIGH);
if (!SD.begin(CS_PIN))
{
Serial.println("Card Failure");
return;
}
Serial.println("Card Ready");
}
void
loop()
{
int dataString = random (1000);
// datet
// time.gettime("d-m-Y, H:i:s, D");
//Open a file and write to it.
File dataFile = SD.open("log.csv",
FILE_WRITE);
if (dataFile)
{
dataFile.print(time.gettime("H:i"));
dataFile.print(",");
dataFile.println(dataString);
dataFile.close();
}
// отделный лог
для случ чисел
dataFile = SD.open("ran.csv", FILE_WRITE);
if (dataFile)
{
dataFile.println(dataString);
dataFile.close();
}
// отдельный лог для времени
dataFile =SD.open("tame.csv",
FILE_WRITE);
if (dataFile)
{
dataFile.println(time.gettime("H:i"));
// dataFile.flush();
}
dataFile.close();
delay(5000);
}