Джереми Блум - Изучаем Arduino: инструметы и методы технического волшебства

Тут можно читать онлайн Джереми Блум - Изучаем Arduino: инструметы и методы технического волшебства - бесплатно полную версию книги (целиком) без сокращений. Жанр: Прочая околокомпьтерная литература, издательство БХВ-Петербург, год 2015. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

Джереми Блум - Изучаем Arduino: инструметы и методы технического волшебства краткое содержание

Изучаем Arduino: инструметы и методы технического волшебства - описание и краткое содержание, автор Джереми Блум, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
Книга посвящена проектированию электронных устройств на основе микроконтроллерной платформы Arduino. Приведены основные сведения об аппаратном и программном обеспечении Arduino. Изложены принципы программирования в интегрированной среде Arduino IDE. Показано, как анализировать электрические схемы, читать технические описания, выбирать подходящие детали для собственных проектов. Приведены примеры использования и описание различных датчиков, электродвигателей, сервоприводов, индикаторов, проводных и беспроводных интерфейсов передачи данных. В каждой главе перечислены используемые комплектующие, приведены монтажные схемы, подробно описаны листинги программ. Имеются ссылки на сайт информационной поддержки книги. Материал ориентирован на применение несложных и недорогих комплектующих для экспериментов в домашних условиях.
Для радиолюбителей

Изучаем Arduino: инструметы и методы технического волшебства - читать онлайн бесплатно полную версию (весь текст целиком)

Изучаем Arduino: инструметы и методы технического волшебства - читать книгу онлайн бесплатно, автор Джереми Блум
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать
Микросхема часов реального времени DS1307

Часы реального времени DS1307 поддерживают связь с Arduino по протоколу I 2C и подключаются к круглой батарейке, что обеспечивает ход часов в течение нескольких лет. К микросхеме подключается кварцевый резонатор, определяющий точность хронометража. Я выбрал плату расширения adafruit-DS1307-breakout (http://www.exploringarduino.com/parts/adafruit-DS1307-breakout), которая содержит микросхему DS1307, кварцевый резонатор, батарейку размером с монету, конденсатор развязки и I 2C подтягивающие резисторы. Плату легко подключить к Arduino (рис. 13.18).

Рис 1318 Подключение платы расширения adafruitDS1307breakout к Arduino - фото 143

Рис. 13.18. Подключение платы расширения adafruit-DS1307-breakout к Arduino

Далее предполагается, что вы используете эту плату. Тем не менее, можно просто собрать схему из элементов на макетной плате и подключить непосредственно к Arduino. Потребуется кварцевый резонатор на 32,768 кГц, подтягивающие резисторы номиналом 2,2 кОм и круглая батарейка 3,0 В размером с монету. Если вы решили собрать плату самостоятельно, можете приобрести эти компоненты и собрать их на макетной плате по схеме, приведенной на рис. 13.19.

- 290 -

Рис 1319 Схема часов реального времени собранная на макетной плате - фото 144

Рис. 13.19. Схема часов реального времени, собранная на макетной плате

Сторонняя библиотека Arduino RTClib

Как и в предыдущей главе, мы снова воспользуемся сторонней библиотекой для Arduino. На этот раз для облегчения связи с микросхемой часов реального времени (RTC). Библиотека называется RTClib, первоначально она была разработана JeeLabs, затем обновлена Adafruit Indusrtries. Ссылку для загрузки библиотеки можно найти на веб-странице http://www.exploringarduino.com/content/ch13. Скачайте библиотеку и распакуйте в папку libraries, как вы это делали в главе 12.

Работать с библиотекой просто. При первом выполнении кода нужно вызвать функцию RTC.adjust() для получения времени с компьютера и настройки часов.

Далее RTC работают автономно и можно получать текущее время и дату посредством команды RTC.now(). В следующем примере мы будем использовать эту функцию для ведения журнала регистрации в режиме реального времени.

13.3.2. Использование часов реального времени

Теперь объединим SD-карту и часы реального времени, чтобы включить ведение журнала с помощью временных меток. Мы модифицируем программу, добавив запись показаний часов реального времени вместо значений, выдаваемых функцией millis().

- 291 -

Подключение модулей SD card shield и RTC

Подключим к Arduino модули SD card shield и RTC. Если вы используете платы расширения Cooking Hacks Micro SD shield и adafruit-DS1307-breakout, то подключение будет выглядеть так, как на рис. 13.20.

Рис 1320 Плата Arduino с подключенными платами расширения Cooking Hacks - фото 145

Рис. 13.20. Плата Arduino с подключенными платами расширения Cooking Hacks Micro SD shield и adafruit-DS1307-breakout

Отметим, что последний контакт на RTC не связан с Arduino; это меандр, генерируемый RTC, в нашем примере он не задействован. В программе следует подать на контакт А2 уровень LOW и на A3 уровень HIGH (+5 В), чтобы обеспечить питание RTC. Если вы собрали свой модуль RTC на макетной плате, то установка будет выглядеть немного по-другому.

Модификация программы для работы с RTC

Теперь нужно добавить функционал RTC в нашу предыдущую программу. Необходимо сделать следующее:

• подключить библиотеку RTC;

• организовать питание модуля RTC (А2- LOW, A3-HIGH);

- 292 -

• инициализировать объект RTC;

• установить время RTC с помощью компьютера;

• записывать фактические временные метки в файл журнала.

Кроме того, в код программы добавлен вывод в файл заголовка столбца при каждом перезапуске журнала. Таким образом, вы легко найдете в журнале, записанном в файл CSV, моменты перезапуска.

ВНИМАНИЕ!

Если после запуска программы вы заметите, что она через некоторое время останавливается, то причина может заключаться в нехватке оперативной памяти. Так происходит из-за строк, которые занимают большой объем оперативной памяти, это относится к командам вывода в последовательный порт Serial.print() и Serial.println(). Проблему можно решить, удалив из программы указанные команды и поручив компилятору хранить строки не в оперативной памяти, а во флэшпамяти Arduino. Для этого для строк используем обертку F(), например Serial.println ( F ( "Hello") ). Описанный метод реализован в листинге 13.6.

Обновленная программа (листинг 13.6) использует RTC в качестве таймера для регистрации данных. Программа перемещает большинство строк во флэш-память, чтобы предотвратить переполнение оперативной памяти.

Листинг 13.6. Чтение и запись данных на SD-карту с использованием RTC - sd_read_write_rtc.ino

// Чтение и запись данных на SD-карту с использованием RTC

#include

// Подключение библиотеки SD

#include

// Для работы с RTC

#include "RTClib.h" // Подключение библиотеки RTC

// Подключение устройств SPI и I 2C с контактами по умолчанию

// SD-карта SPI контакты

// RTC - стандартные I 2C контакты

const int CS_PIN =10;

const int SD_POW_PIN =8;

const int RTC_POW_PIN =A3;

const int RTC_GND_PIN =А2.;

// Скорость опроса по умолчанию 5 секунд

int refresh rate = 5000;

// Создание объекта RTC

RTC_DS1307 RTC;

// Переменные для даты и времени

String year, month, day, hour, minute, second, time, date;

void setup()

{

Serial.begin(9600);

Serial.println(F("Initializing Card"));

// Настроить контакты CS и питания как выходы

pinMode(CS_PIN, OUTPUT);

- 293 -

pinMode(SD_POW_PIN, OUTPUT);

pinMode(RTC_POW_PIN, OUTPUT);

pinMode(RTC_GND_PIN, OUTPUT);

// Установка питания карты и RTC

digitalWrite(SD_POW_PIN, HIGH);

digitalWrite(RTC_POW_PIN, HIGH);

digitalWrite(RTC_GND_PIN, LOW);

// Инициализация Wire и RTC

Wire.begin();

RTC.begin();

// Если RTC не запущены, загрузить дату/время с компьютера

if ( ! RTC. isrunning())

{

Serial.println( F ( "RTC is NOT running ! ") );

RTC.adjust(DateTime(__DATE__, __TIME__ ));

}

// Инициализация SD-карты

if ( !SD.begin(CS_PIN))

{

Serial.println(F("Card Failure"));

return;

}

Serial.println(F("Card Ready"));

// Чтение конфигурационного файла (speed. txt)

File commandFile = SD.open("speed.txt");

if (commandFile)

{

Serial.println ( F ( "Reading Command File") );

while(commandFile.available())

{

refresh_rate = commandFile.parseInt();

}

Serial.print(F("Refresh Rate = "));

Serial.print(refresh_rate);

Serial.println(F("ms"));

commandFile.close();

}

else

{

Serial.println(F("Could not read command file."));

return;

}

// Запись заголовка

File dataFile = SD.open("log.csv", FILE_WRITE);

if (dataFile)

{

dataFile.println ( F ( "\nNew Log Started ! ") );

- 294 -

dataFile.println(F("Date,Time,Phrase"));

dataFile.close();

// Запись в последовательный порт

Serial.println(F("\nNew Log Started!"));

Serial.println(F("Date,Time,Phrase"));

}

else

{

Serial.println(F("Couldn't open log file"));

}

}

void loop()

{

// Получить значение даты и времени и перевести в строковые значения

DateTime datetime = RTC.now();

year = String(datetime.year(), DEC);

month = String(datetime.month(), DEC);

day = String(datetime.day(), DEC);

hour = String(datetime.hour(), DEC);

minute = String(datetime.minute(), DEC);

second = String(datetime.second(), DEC);

// Собрать строку текущей даты и времени

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Джереми Блум читать все книги автора по порядку

Джереми Блум - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Изучаем Arduino: инструметы и методы технического волшебства отзывы


Отзывы читателей о книге Изучаем Arduino: инструметы и методы технического волшебства, автор: Джереми Блум. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x