Бібліотека AVR для роботи з шиною I2C та з годинником реального часу PCF8583.

У цій статті розповім, як використовувати інтерфейсний модуль I2C для керування LCD дисплеєм (2×16/20х4) за допомогою Arduino. Даний модуль дозволяє зменшити кількість використовуваних висновків контролера, замість 8 або 4-бітного з'єднання, потрібно лише 2 виводи (SDA та SCL).

Технічні характеристики

Підтримка дисплеїв: LCD 16×02/20×04
Додатково: регулювання контрастності
Напруга живлення. 5В
Інтерфейс: I2C
Габарити: 54мм x 19мм x 15мм

Загальні відомості інтерфейсного модуля I2C

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

Тепер трохи про сам модуль, побудований він на мікросхемі PCF8574T. Резистори R8 (4.7ком) і R9 (4.7ком) необхідні для підтяжки ліній SDA і SCL, в ідеалі при підключенні двох і більше пристроїв по шині I2C необхідно використовувати підтяжку тільки на одному пристрої, пізніше напишу чому. На платі передбачені три перемички (за схемою видно, що лінії A0, A1, A2 підтягнуті до живлення через резистори R4, R5, R6), необхідні вони для зміни адресації пристрою, всього їх 8 варіантів. Зміна адресації дає можливість підключення до восьми пристроїв по шині IC2 з мікросхемою PCF8574T, варіанти адрес показані на малюнку (за замовчуванням адреса пристрою 0x27). Також модуль оснащений потенціометром R11 з його допомогою можна змінити контрастність LCD дисплея.

Для з'єднання на модулі розташовано три групи контактів:

Перша група:
SCL: лінія тактування (Serial CLock)
SDA: лінія даних (Serial Dфta)
VCC: "+" харчування
GND: "-" харчування

Друга група:
VSS: "-" харчування
VDD: "+" харчування
VO: Виведення керування контрастом
RS: Вибір регістру
RW: Читання/запис (режим запису при з'єднанні із землею)
E: Еnable (строб зі спаду)
DB0-DB3: Молодші біти інтерфейсу
DB4-DB7: Старші біти інтерфейсу
A: «+» живлення підсвічування
K: «-» живлення підсвічування

Третя група: (за замовчуванням встановлено перемичку)
VCC:
A від LCD:

Підключення до Arduino

Необхідні деталі:
Arduino UNO R3 x 1шт.
LCD-дисплей 1602A (2×16, 5V, Синій) x 1 шт.
Інтерфейсний модуль I2C, IIC, TWI для LCD x 1 шт.
Провід DuPont, 2,54 мм, 20 см, F-M (Female - Male) x 1 шт.
Кабель USB 2.0 A-B х 1 шт.

Підключення:
Насамперед припаюємо модуль I2C до LCD дисплея, потім необхідно підключити дисплей до Arduino UNO. Для цього скористаємося проводками DuPont, підключення здійснюємо за таблицею нижче.

Для наочності наведу ще одну схему.

Для цього експерименту необхідно завантажити та встановити бібліотеку «LiquidCrystal_I2C». Потім скопіюйте та вставте цей приклад коду у вікно програми IDE Arduino та завантажте у контролер.

/* Тестувалося на Arduino IDE 1.6.11 Дата тестування 15.09.2016р. */ #include #include LiquidCrystal_I2C lcd(0x27,16,2); // Задаємо адресу та розмір дисплея void setup() ( lcd.init(); // Ініціалізація lcd lcd.backlight(); // Включаємо підсвічування lcd.setCursor(0,0); // Встановлюємо курсор на початок 1 рядка lcd .print("Hello, world"); // Виводимо текст lcd.setCursor(0,1); // Встановлюємо курсор на початок 2 рядка lcd.print("www.robotchip.ru"); // Виводимо текст) void loop() ( )

Завантажити програму

Якщо Ви правильно все зробили, але на дисплеї немає жодних символів, спробуйте збільшити контрастність потенціометром.


Посилання
Завантажити бібліотеку LiquidCrystal_I2C
Документація на мікросхему PCF8574T
Документація до LCD1602A

Купити на Aliexpress

Мені потрібно було зробити годинник на основі мікросхеми, що має I 2 C інтерфейс. Мікросхема RTC, т.зв. "годинник реального часу" PCF8583.

Усередині мікросхеми розташовані: годинник, будильник, таймер, календар (кривий) і 240 байт оперативної пам'яті, куди можна записувати будь-яку інформацію, яку тільки заманеться. Оперативна пам'ять це дуже корисна штука, на відміну від флеш-пам'яті, оперативна пам'ять не має обмежень за кількістю циклів перезапису, і в неї можна зберігати якісь дані, налаштування, скільки завгодно часто.

Але була одна проблемка - писати код страшно не хотілося, і я вирішив знайти готовий код в інтернеті. Як пізніше з'ясувалося, знайти "на свою голову". Завантажив приклад роботи з I 2 C, підправив, прошив мікроконтролер. Чи не запрацювало. Став колупати код, шукати причину непрацездатності… і жахнувся!! Запис у деяких випадках велася на весь порт відразу, а не в конкретні біти. Таким чином, якщо на порт ще щось повісити, наприклад, дисплей, то швидше за все, воно працювати не буде. Також неправильно було реалізовано читання даних по шині (без генерацій умови закінчення прийому або просто без NACK). Але це пів-біди. Основна проблема в іншому. Найчастіше автор коду виставляв у порт логічну "1", а як ми знаємо, шина I 2 C управляється "притягуванням" висновків SDA та SCL до загального дроту. А логічна "1" на шині, у свою чергу, формується за рахунок підтяжки до плюсу живлення резисторами на 4,7 кілом. Таким чином, якщо на виході мікроконтролера виставити логічну «1», а ведений пристрій «притягне» цей вихід до спільного дроту, то вийде «ба-бах» коротке замикання. Мені це дуже не сподобалося, і я вирішив винайти свій велосипед написати свою бібліотеку, а точніше навіть дві бібліотеки: одна для роботи з шиною I 2 C, а інша безпосередньо для роботи з годинником реального часу PCF8583. Так, до речі, код написаний у .

Для того, щоб підключити бібліотеку I 2 C до проекту, потрібно прописати її через include, як на зображенні, а також скопіювати бібліотеку в папку з проектом.

Після цього необхідно відкрити файл "i2c.h", і вказати ніжки мікроконтролера, які будуть виступати в ролі шини I 2 C. За замовчуванням шина налаштована на ніжки PC0 (SCL) і PC1 (SDA). А налаштування робиться ось тут:

Все, бібліотеку I2C ми підключили, ніжки налаштували, бібліотека готова до роботи. Приклад використання:

I2c_init(); // Ініціалізація шини I2C i2c_start_cond(); // старт шини i2c_send_byte (0xA0); // адресу пристрою, що висить на шині i2c_send_byte (0x10); // байт даних, який записуємо до пристрою i2c_send_byte (0x10); // ще один байт даних, який записуємо у пристрій i2c_stop_cond(); // стоп шини

Після стоп-умови ми можемо перевірити, чи все у нас в порядку з шиною I 2 C. Для цього потрібно прочитати змінну «i2c_frame_error». Якщо все нормально, то в ній буде 0. Якщо один із висновків шини не «підтягнувся» до живлення, і логічна «1» не встановилася на шині, то бібліотека генерує помилку і записує в змінну «i2c_frame_error» циферку 1. Читати змінну « i2c_frame_error» потрібно після стоп-умови. На малюнку нижче продемонструю, як працює контроль помилки:

Тепер займемося підключенням бібліотеки годинника реального часу PCF8583. Для цього потрібно зробити ті ж дії. Скопіюємо в папку з проектом файл "PCF8583.h" і пропишемо його в include, як на фото:

Готово. Бібліотека годинника реального часу PCF8583 підключена. Вона не потребує будь-яких налаштувань, тому можна відразу приступати до читання часу та дати з мікросхеми. Звертаю увагу, що бібліотека PCF8583 працює за допомогою бібліотеки I2C, тому якщо хочемо працювати з PCF8583, потрібно підключити обидві бібліотеки!

Приклад використання бібліотеки (запис та читання часу та дати):

// Ініціалізація шини I2C i2c_init(); // Підготовляємо час та дату для запису в мікросхему PCF8583 PCF_hour=23; // 23 години PCF_min = 59; // 59 хвилин PCF_day=31; // 31 число PCF_month=12; // 12 місяць – грудень PCF_year=0; // Рік (0 - не високосний) PCF_weekday = 6; // 6 день тижня (неділя) // Записуємо час та дату в мікросхему PCF8583 PCF_write_hh_mm_ss(); // Зчитуємо час та дату з мікросхеми PCF8583 PCF_read_hh_mm_ss(); Приклад роботи з оперативною пам'яттю (запис та читання) // Підготовляємо 5 байт для запису в мікросхему PCF8583 PCF_data_ram_1=255; // байт 1 PCF_data_ram_2=255; // байт 2 PCF_data_ram_3=255; // байт 3 PCF_data_ram_4=255; // байт 4 PCF_data_ram_5=255; // байт 5 // Записуємо 5 байт у мікросхему PCF8583 PCF_write_ram(); // Зчитуємо 5 байт із мікросхеми PCF8583 PCF_read_ram();

Читання з мікросхеми ще простіше – достатньо викликати функціюPCF_ read_ hh_ mm_ ss() після чого час і дата з'являться в змінних, звідки їх тільки забирай. Для читання оперативної пам'яті відповідно використовуємо функціюPCF_ read_ ram() після чого дані забираємо до зміннихPCF_ data_ ram_ N

Ось список змінних, де і що зберігається:

// час та дата PCF_hour = 0; // час, годинник (від 0 до 23, захист від переповнення під час запису та читання) PCF_min=0; // час, хвилини (від 0 до 59, захист від переповнення під час запису та читання) PCF_sec=0; // час, секунди (тільки читання, під час запису скидаються в 00) PCF_day=0; // день (від 1 до 31, захист від переповнення під час запису та читання) PCF_weekday=0 // день тижня (0-понеділок; 6-неділя, захист від переповнення під час запису та читання) PCF_month=0; // Місяць (від 1 до 12, захист від переповнення при записі та читанні) PCF_year=0; // рік (0-високосний; 1,2,3-невисокосний, захист від переповнення при записі та читанні) // оперативна пам'ять PCF_data_ram_1; //Дані (ОЗУ PCF8583), байт 1 PCF_data_ram_2; //Дані (ОЗУ PCF8583), байт 2 PCF_data_ram_3; //Дані (ОЗУ PCF8583), байт 3 PCF_data_ram_4; //Дані (ОЗУ PCF8583), байт 4 PCF_data_ram_5; // Дані (ОЗП PCF8583), байт 5

Тепер розповім про захист від переповнення. Допустимо, ми забули підключити мікросхему. Прочитаємо дані з мікросхеми, і ... прочитається байт 11111111, або число 255. Вся справа в тому, що в основі шини I 2 C лежать 2 резистора, що підтягують, ось вони те і видають нам логічні «одинички» якщо мікросхема не підключена. Для захисту від подібних випадків, у бібліотеці PCF8583 я зробив захист від переповнень, який стежить за тим, щоб годинник не показував вам 62 години 81 хвилину… Наявність переповнення можна простежити, прочитавши змінну PCF_overflow. Якщо в ній 0, значить помилок переповнення не було. Якщо в ній 1 або більше, то помилки переповнення є. Читати змінну «PCF_overflow» потрібно після функції читання дати та часуPCF_ read_ hh_ mm_ ss()

Для наочності проект AVR Studio 6 під ATmega32 додається. Перекомпілювати можна під будь-який AVR. У проекті також підключив дисплей для візуального контролю. При подачі живлення мікроконтролер встановлює 23 години 59 хвилин, 31 грудня, Неділя. І за хвилину стає 00 годин 00 хвилин, 1 січня, Понеділок.

Тепер розповім, чому я говорив про "кривий" календар цієї мікросхеми. Справа в тому, що мікросхема не вміє зберігати поточний календарний рік, а зберігає лише прапор високосного року. Коротше кажучи:
0 – високосний рік
1 – не високосний рік
2 – не високосний рік
3 – не високосний рік

І так за циклом 0-1-2-3-0-1-2-3-0…

Загалом щоб зробити нормальний календар, потрібно реалізовувати програмний розрахунок та збереження року, наприклад, у ту ж оперативну пам'ять PCF8583, але це не зручно. А головне, що за знеструмленої схеми пам'ять, на жаль, ніхто не перезапише...

Також додаю наприкінці статті невеликий відеозвіт. У програмуванні я можна сказати новачок, хоч і програмую вже 3 роки (помалу), за код суворо не судіть, якщо є якісь доповнення та зауваження, пишіть, виправлятимемо. Всім вдалих саморобок!

Список радіоелементів

Позначення Тип Номінал Кількість ПриміткаМагазинМій блокнот
МК AVR 8-біт

ATmega32

1 До блокноту
Годинник реального часу (RTC)

PCF8583

1 До блокноту
LCD-дисплейWH16021

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

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

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

Стандартні бібліотеки Ардуїно

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

Список вбудованих бібліотек (вони поставляються разом із дистрибутивом Arduino IDE):

  • EEPROM
  • Ethernet / Ethernet 2
  • Firmata
  • LiquidCrystal
  • Servo
  • SoftwareSerial
  • Stepper

Добірка бібліотек в одному архіві

Якщо у вас немає часу на детальний аналіз множини сайтів і ви хочете завантажити все необхідне для роботи з зовнішніми пристроямиАрдуїно в одному архіві ми підготували список 40 найпопулярніших бібліотек. Просто та розпакуйте його вміст (папку libraries) у папку Arduino.

Бібліотеки для екранів, індикаторів та дисплеїв

Бібліотека I2C

Бібліотека призначена для роботи периферійного пристрою за протоколом I2C.

Приклад використання:

#ifndef I2C_MASTER_H

#define I2C_MASTER_H

void I2C_init (void) – створення об'єкта, налаштування на правильну частоту для шини.

uint8_t I2C_start () – встановлення з'єднання з новим пристроєм.

uint8_t I2C_write() – запис даних на поточний пристрій.

uint8_t I2C_read_ack() – зчитування байта з пристрою, запит наступного байта.

Бібліотека LiquidCrystal

Стандартна бібліотека, встановлена ​​в Arduino IDE. Призначена для керування рідкокристалічними дисплеями LCD.

Приклад використання:

#include . Також, щоб не помилитися під час написання, можна підключити через меню Sketch – Import Library – LiquidCrystal.

Конструктор класу – LiquidCristal(…). Аргументами є rs, rw, en, do…d7. Перші 3 відповідаю висновкам сигналів RS, RW та Enable. Висновки d відповідають номерам шин даних, до яких підключено дисплей.

void begin(cols, rows) – метод, який ініціалізує інтерфейс дисплея. Аргументами є кількість знаків у рядку (cols) та кількість рядків (rows). Цей метод має задаватися першим.

void createChar(num, data) - метод, необхідний для створення символів користувача.

Бібліотека UTFT

Стандартна бібліотека, необхідна для роботи Ардуїно з екранами TFT різних типів. Всі підтримувані дисплеї представлені в супровідному документіз бібліотекою.

Приклад використання:

#include

UTFT(); - Створення екземпляра UTFT.

textRus(char*st, int x, int y); – метод, що дозволяє виводити рядок із покажчика. Наприклад, char * dht = "Температура, С";

textRus(string st, int x, int y); - Виведення рядка із зазначенням у параметрі. Наприклад, g.textRus("Температура, С", 0, 20);

Бібліотека LedControl

Дозволяє керувати семисегментними дисплеями, об'єднувати масив із світлодіодів в одну матрицю.

Приклад використання:

#include

LedControl lc1 = LedControl();

- Потрібен для ініціалізації бібліотеки. Повинна складатися з чотирьох аргументів – номери пінів, до яких підключено дисплей (перші 3 аргументи) та кількість підключених чіпів.

writeArduinoOn7Segment() – відображення на дисплеї всіх чисел від 0 до 15. Використовує функції setChar() для символів a та d та setRow() для створення макета пропущених символів.

LedControl.shutdown() – вимкнення зображення.

setIntensity() – контроль яскравості.

Бібліотеки для роботи з датою та часом ардуїно

Бібліотека RTClib

Бібліотека для роботи з годинником реального часу, що спрощує взаємодію з Ардуїно.

Приклад використання:

#include

RTC_DS1307 RTC; - Вибір датчика (в даному випадку DS1307).

rtc.adjust(DateTime(Date, Time)); – налаштування часу та календаря.

dayOfTheWeek () – виведення дня тижня. Аргумент від 0 до 6, 0 – неділя.

Бібліотека Timelib

Дозволяє Ардуїно отримувати інформацію про дату та час на даний момент.

Приклад використання:

#include

Time(); - Створення екземпляра.

setTime(t); - Встановлення часу. Аргумент t – година, хвилина, секунда, день, місяць та рік.

timeStatus(); - Вказує, чи встановлено час.

adjustTime(adjustment); - Налаштування часу.

Бібліотека Ds1307

Бібліотека для зручної взаємодії годинника DS1307 з Ардуїно з використанням бібліотеки Wire.

Приклад використання:

#include

class DS1307RTC – створення об'єкта DS1307.

SetTime() – встановлення часу.

get() – зчитує RTC, повертає отриману дату у форматі POSIX.

Set(time_t t) – запис дати у RTC

Бібліотека DS 3231

Призначена для керування датою та часом у модулі ds3231.

#include “ds3231.h”

DS3231 Clock(SDA, SCL); – створення об'єкта DS3231, підключення до лінії тактування та лінії даних.

getTime(); – зчитування дати та часу з годинника.

setDate(date, mon, year); - Встановлення дати.

Системні бібліотеки Ардуїно

Бібліотека EEPROM

Стандартні бібліотеки. Призначений для роботи з енергонезалежною пам'яттю (запис даних, їх читання).

Приклад використання:

#include

EEPROM.read(); - Створення об'єкта, зчитування байта за адресою з енергонезалежної пам'яті.

EEPROM.write(address, value) – запис байта в енергонезалежну пам'ять.

EEPROM.put() – запис рядків чисел із плаваючою комою.

EEPROM.get() – читання рядків та чисел з плаваючою комою.

Бібліотека SoftwareSerial

Бібліотека, яка дозволяє реалізовувати послідовні інтерфейси з будь-яких цифрових пінів. Також дозволяє створювати кілька послідовних портів, які працюють на швидкості до 115 200 бод.

#include

SoftwareSerial mySerial(RX, TX) – створення об'єкта, аргументи – висновки, яких підключені RX і TX.

Serial.begin(); – встановлює швидкість порту для зв'язку ардуїно та комп'ютера.

mySerial.overflow() – перевірка вхідного буфера на переповнення.

Бібліотека Math

Включає велику кількість математичних функцій для роботи з числами з плаваючою комою.

Приклад використання:

#include

Math(); - Створення екземпляра Math.

Serial.print("cos num = "); - Повертає косинус числа.

Serial.println (fmod (double__x, double__y)); - Повертає числа по модулю.

Бібліотека Scheduler

Призначена для роботи з Arduino Due, що дозволяє працювати в режимі багатозадачності. Поки що є експериментальною бібліотекою.

Приклад використання:

#include

Scheduler; - Створення екземпляра.

Scheduler.startLoop() – дозволяє додати функцію, яка виконуватиметься разом із loop().

yield() – дозволяє передати керування іншим завданням.

Бібліотеки серво моторів та крокових двигунів

Бібліотека Серво

Стандартні бібліотеки. Необхідна для керування серводвигунами та часто використовується у робототехнічних проектах з маніпуляторами.

Приклад використання:

#include

Servo myservo; - Створення об'єкта для серводвигуна.

myservo.attach(); - Номер виходу, до якого підключено серводвигун.

myservo.write(180, 30, true); - Рух на 180 градусів, швидкість 30, очікування закінчення руху.

Бібліотека Stepper

Необхідна для керування кроковим уніполярним та біполярним двигуном.

#include

const int stepsPerRevolution = ; – кількість кроків, за які двигун проходить повний поворот.

Stepper myStepper = Stepper(steps, pin1, pin2) – створює екземпляр класу із зазначеною кількістю кроків та висновками, до яких підключається двигун.

Бібліотеки датчиків Ардуїно

Бібліотека DHT

#include< DHT.h>

DHT dht(DHTPIN, DHT11); – ініціалізує датчик (у разі DHT11).

dht.begin(); - Запуск датчика.

float t = dht.readTemperature(); - Зчитування поточного значення температури в градусах Цельсія.

Бібліотека DallasTemperature

Призначений для роботи з датчиками Dallas. Працює разом із бібліотекою OneWire.

#include

DallasTemperature dallasSensors(&oneWire); – передача об'єкта oneWire для роботи з датчиком.

покласти в регістр.

printTemperature(sensorAddress); – запит на отримання виміряного значення температури.

Бібліотека Ultrasonic

Забезпечує роботу Ардуїно із ультразвуковим датчиком вимірювання відстані HC-SR04.

#include

Ultrasonic ultrasonic (tig, echo) – оголошення об'єкта, аргументи – контакт Trig та контакт Echo.

dist = ultrasonic.distanceRead(); - Визначення відстані до об'єкта. Агрумент – сантиметри (СМ) чи дюйми (INC).

Timing() – зчитування тривалості імпульсу на виході Echo, переведення в необхідну систему числення.

Бібліотека ADXL345

Призначається до роботи з акселерометром ADXL345.

Приклад використання:

#include

ADXL345_ADDRESS – створення об'єкта, зазначення його адреси.

ADXL345_REG_DEVID – ідентифікація пристрою.

ADXL345_REG_OFSX - зміщення по осі Х.

ADXL345_REG_BW_RATE – керування швидкістю передачі даних.

Бібліотека BME280

Призначається для роботи з датчиком температури, вологості та тиску BME280.

Приклад використання:

#include

BME280_ADDRESS – створення об'єкта BME280, зазначення його адреси.

begin(uint8_t addr = BME280_ADDRESS); - Початок роботи датчика.

getTemperature – одержання виміряної температури.

getPressure – одержання виміряного тиску.

Бібліотека BMP280

Потрібний для роботи з датчиком атмосферного тиску BMP280.

Приклад використання:

#include

BMP280_CHIPID – створення екземпляра, вказівка ​​його адреси.

getTemperature(float *temp); – одержання виміряної температури.

getPressure(float *pressure); - Отримання вимірюваного значення тиску.

Бібліотека BMP085

Потрібний для роботи з датчиком тиску BMP085.

Приклад використання:

#include

Adafruit_BMP085 bmp; - Створення екземпляра BMP085.

dps.init(MODE_ULTRA_HIGHRES, 25000, true); - Вимірювання тиску, аргумент 25000 - висота над рівнем моря (в даному випадку 250 м. над рівнем моря).

dps.getPressure(&Pressure); - Визначення тиску.

Бібліотека FingerPrint

Потрібно працювати зі сканером відбитків пальців.

прикладвикористання:

#include

Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); – оголошення об'єкту Finger. Параметр – посилання на об'єкт для роботи з UART, до якого підключений модуль.

finger.begin(); - Ініціалізація модуля відбитків пальців.

Func_sensor_communication(); - Виклик модуля відбитків пальців.

Бібліотеки комунікації

Бібліотека Wire

Потрібно для роботи із двопровідним інтерфейсом I2C.

Приклад використання:

#include

Wire.begin() – ініціалізація бібліотеки, підключення до шини I2C.

Wire.requestFrom() – запит майстром байтів від керованого пристрою.

Wire.beginTransmission() – початок передачі на керований пристрій.

Бібліотека Irremote

Потрібно для роботи ардуїно з ІЧ приймачем.

Приклад використання:

#include

IRrecv irrecv(RECV_PIN); - Пін, до якого підключений ІЧ приймач.

SetPinAndButton(int ir1, int ir2, int pin) - дозволяє налаштувати певний вихід на спрацьовування при заданих значеннях ir1, ir2.

Бібліотека GSM

Потрібно для з'єднання через GSM-плату з мережею GSM/GRPS. З її допомогою можна реалізувати операції, що здійснюються GSM-телефоном, працювати з голосовими дзвінками та підключатися до Інтернету через GRPS.

Приклад використання:

#include

GSM GSMAccess – ініціалізує екземпляр класу.

gprs.powerOn() – увімкнення живлення.

GPRS – налаштування підключення до Інтернету.

GSM – керування радіо-модемом.

Бібліотека RFID

Потрібно для з'єднання Ардуїно та RFID-модуля.

Приклад використання:

#include

RFID rfid (SS_PIN, RST_PIN); - Створення екземпляра rfid, аргументи - піни, до яких підключений модуль.

rfid.init(); - Ініціалізація модуля RFID.

Бібліотека MFRC 522

Потрібно для з'єднання Ардуїно та MFRC522-модуля.

Приклад використання:

#include

MFRC522 mfrc522(SS_PIN, RST_PIN); – створення екземпляра MFRC522, аргументами вказані виходи, до яких підключено модуль.

mfrc522.PCD_Init(); - Ініціалізація MFRC522.

Бібліотека Ethershield

Нова версія https://github.com/jcw/ethercard

Потрібен для підключення Ардуїно до локальної мережічи мережі інтернет. Бібліотека більше не підтримується, більше Нова версія Ethercard. Також існує стандартна бібліотека Ethernet.

Приклад використання:

#include «EtherShield.h»

#include

EtherShield es = EtherShield(); – підготовка веб-сторінки

ether.begin(sizeof Ethernet::buffer, mymac,); - Початок роботи, аргументи - адреса Macта номер порту, до якого підключено вихід CS.

Бібліотека Nrf24l01

Потрібно для роботи з RF24-радіомодулем.

Приклад використання:

#include “RF24.h”

RF24 - Конструктор створює новий екземпляр драйвера. Перед використанням потрібно створити екземпляр і вказати піни, до яких підключений чіп (_cepin: контакт модуля Enable, cspin: контакт модуля Select).

Begin – початок роботи чіпа.

setChannel - канали для зв'язку RF.

setPayloadSize – встановлення фіксованого розміру передачі.

getPayloadSize – отримання фіксованого розміру.

Бібліотека TinyGPS

Потрібно читати повідомлення GPGGA і GPRMC. Допомагає зчитувати дані про положення, дату, час, висоту та інші параметри.

Приклад використання:

#include

TinyGPS gps; - Створення екземпляра TinyGPS.

encode() – подача на об'єкт послідовних даних за одним символом.

gps.stats() – метод статистики. Показує, чи отримані коректні дані чи ні.

Бібліотеки в Arduino IDE

Серед усієї різноманітності бібліотек можна виділити 3 основні групи:

  • Вбудовані – це бібліотеки, які спочатку встановлені в середовищі Arduino IDE. Їх не потрібно завантажувати та встановлювати додатково, вони доступні для використання у програмі відразу після запуску середовища розробки.
  • Додаткові – це бібліотеки, які потрібно самостійно завантажувати. Зазвичай, такий вид бібліотек розробляє виробник датчиків, сенсорів та інших компонентів для полегшення роботи з ардуїно.
  • Залежні бібліотеки – встановлюються як помічник додаткової бібліотеки, що окремо від неї не працює.

Самим простим способомроботи з бібліотеками в Ардуїно є використання вбудованих можливостей середовища розробки Arduino IDE. Про це ми поговоримо у окремій статті.

Поділитися