Бібліотека Arduino для перевірки дати та температури вбудованого DS3231 через I2C

Бібліотека Arduino для перевірки дати та температури вбудованого DS3231 через I2C

Бібліотека Arduino для перевірки дати та температури вбудованого DS3231 через I2C

ОНОВЛЕНО: Також відвідайте новий бібліотека для керування датою та часом за допомогою модуля DS3231 RTC та Arduino з удосконаленнями, такими як сезонний час.

Робота IC de годинник реального часу (RTC) найпопулярніші, які контролюються за допомогою автобус І2C Зазвичай він дуже схожий. Крім того, Дротова бібліотека de Arduino значно спрощує спілкування з пристроями Двопровідний послідовний інтерфейс (TWI), I2C, специфічний.

Зміст

    Загалом, процес складається з

    1. Ініціювати зв'язок як підлеглий або головний (налаштовано за замовчуванням) за допомогою цієї функції Wire.begin(адреса). Якщо слово «адреса» опущено, спілкування починається з мкКл вчитель о автобус І2C.

    2. Активізуйте спілкування I2C з пристроєм через адресу пам’яті, де він знаходиться, за допомогою команди Wire.beginTransmission(адреса).

    3. Напишіть замовлення в автобус І2C щоб повідомити пристрою операцію, яку він бажає виконати, використовуючи Wire.write(команда), у якому «порядок» є кодом операції.

    4. Вимкніть зв'язок, щоб звільнити автобус І2C з функцією Wire.endTransmission().

    5. Попросити пристрій надіслати певний обсяг даних, який відповідає запитуваній операції (у цьому випадку дата й час) за допомогою функції Wire.requestFrom(адреса,сума).

    6. Зачекайте, поки дані, запитувані функцією, стануть доступними для читання Wire.available(), який повертає кількість даних, які вже були отримані та можуть бути прочитані.

    7. Прочитайте дані, надіслані пристроєм ( годинник реального часу, у цьому випадку) за допомогою функції Wire.read() стільки разів, скільки вказано байтів Wire.available() доступні.

    8. Зазвичай дані надсилаються в дуже компактних форматах, тому дуже ймовірно, що буде необхідно інтерпретувати отримані дані у спосіб, який відповідає представленню даних, створених у програмі, яка використовує пристрій.

    Що стосується DS3231 (і сумісних з тієї ж серії, наприклад DS3232) та інтерпретація даних відповідно до специфікацій інтегрованого, наприклад, значення різних цифр, які представляють час, представлені в десяткове двійкове кодування (BCD) яке буде зручніше виразити у вигляді десяткового значення (a байт) використовувати в Arduino

    У цьому ж рядку температура виражається в байтах доповнення двох для цілої частини та два біти для кроку, з роздільністю в чверть градуса, десяткової частини. Ці та інші аспекти представлення даних на годиннику були вичерпно розглянуті в коді бібліотеки нижче. DS3231

    Щоб перевірити температуру за допомогою цієї бібліотеки, просто скористайтеся методом read_temperature() об'єкт DS3231 екземпляр на початку. Щоб прочитати дату й час, вони спочатку завантажуються, а потім запитуються в одному з форматів (компактний, людський...), доступних для різних цілей, задокументованих у документі заголовка бібліотеки коду нижче.

    Нижче наведено приклад коду, який показує, як використовувати бібліотеку. Як згадувалося вище, температура просто зчитується за допомогою функції read_temperature() об'єкта класу DS3231 але, щоб ігнорувати помилки в читанні, використовуються дві константи, які зберігають, відповідно, максимальну та мінімальну температуру пристрою відповідно до паспорта даних і які зчитуються за допомогою відповідних функцій.

    Зчитування температури виконується в два етапи: спочатку значення завантажується, щоб різні способи використання дати або часу були послідовними (у несприятливих випадках вони не відображатимуть вищого значення), а по-друге, воно використовується відповідно до формату, який потрібен. Приклад програми (який не дуже практичний, хоча пояснює всі можливості) показує всі доступні формати

    • Функція date_time_value() який повертає вказівник на масив бак (байтів), що містить сім числових значень, які представляють дату й час на годиннику DS3231 перетворені в десяткові (вони знаходяться в BCD на пристрої)

    • Використання функції weekday_number() Отримано значення, яке відповідає номеру дня тижня, починаючи з неділі. Щоб відобразити його як текст, використовується масив, і одиниця віднімається, починаючи з нульового індексу, неділя.

    • Щоб переглянути дату в «місцевому» (іспанському) форматі, скористайтеся цією функцією human_date(), який повертає покажчик на рядок, у якому дата представлена ​​у форматі ДД/ММ/РРРР, де ДД — день, представлений двома цифрами, ММ — місяць із двома цифрами, а РРРР — рік із 2 цифрами.

    • Функція людина_година() повертає час у форматі hh:mm:ss, де hh — це години (у форматі 24), представлені двома цифрами, mm — це хвилини з 2 цифрами, а ss — це секунди з 2 цифрами.

    • Щоб легко використовувати дату й час на файли журналів функція була запрограмована compact_date_time(), який передає значення дати й часу у форматі РРММДДггммсс, де AA — рік, представлений двома останніми цифрами, MM — місяць із 2 цифрами, DD — день із 2 цифрами, hh — година (у форматі 2) із 24 цифри, mm хвилини з 2 цифрами і ss секунди з 2 цифрами. Цей формат, незважаючи на те, що це текст, займає небагато місця та дозволяє дуже просто впорядкувати дані в алфавітному порядку.

    • Функція date_time_MySQL() служить для представлення дати й часу у форматі, що використовується менеджером бази даних MySQL (або новий і вільніший MariaDB) РРРР-ММ-ДД гг:хх:сс, де РРРР – рік, представлений 4 цифрами, ММ – місяць з 2 цифрами, ДД – день з 2 цифрами, гг – година (у форматі 24) з 2 цифрами , мм – це хвилини з 2 цифрами та секунди з 2 цифрами.

    Хоча існує багато форматів, за допомогою яких можна представити дату й час, потрібний вам може не бути, але, звичайно, на основі одного з існуючих і використовуючи його як приклад, буде легко додати новий метод відповідно до інші характеристики. Будь ласка, якщо ви додаєте нові функції, поділіться кодом (випустіть його!) і поясніть нам, як це працює, щоб ми могли поступово покращувати бібліотеку. Дякуємо!

    Результат програми, наведеної вище, може бути приблизно таким, як показано на наступному зображенні: список із 7 значень (секунди, хвилини, година, день тижня, день місяця, місяць і рік), дата та час, виражений «людським» способом (відповідно до іспанського стилю) час як ціле число у форматі чотиризначного годинника, дата й час у форматі бази даних MySQL, дата й час у компактному форматі (для logs) і внутрішньої температури DS3231.

    Бібліотека вихідних даних консолі Arduino, годинник реального часу (RTC) і температура DS3231 через шину I2C

    Дати коментар

    Можливо, ви пропустили