Бібліотека lilka

Проєкт «Лілка» має однойменну бібліотеку lilka, яка спрощує роботу з Лілкою та дозволяє вам швидко створювати для Лілки власні прошивки мовою програмування C++.

Ця бібліотека доступна в реєстрі бібліотек PlatformIO.

Звісно ж, ви можете писати код для Лілки і без бібліотеки lilka - ніхто не змушує вас використовувати її. Весь код, який ви побачите в цій документації, можна написати самостійно, без використання lilka.

Крім того, ви без проблем можете використовувати для роботи з Лілкою лише функції Arduino, ESP-IDF та різні сторонні бібліотеки.

Проте бібліолека lilka допоможе зробити ваші програми простішими та більш «portable» (переносними), а також зменшить кількість помилок при розробці.

Також lilka спрощує ініціалізацію дисплею, кнопок, батареї, звуку, SD-карти та інших компонентів, що входять до складу Лілки. Для цього потрібно викликати лише одну функцію - lilka::begin().

Тому, незалежно від рівня вашої кваліфікації, ми радимо використовувати бібліолеку lilka для роботи з Лілкою.

void lilka::begin()

Ініціалізація Лілки

Ініціалізує всі підсистеми Лілки - дисплей, кнопки, файлову систему, SD-карту, батарею, п’єзо-динамік і т.д.

Рекомендується викликати цю функцію один раз на початку програми в вашій функції setup().

 1#include <lilka.h>
 2
 3void setup() {
 4    lilka::begin();
 5    // Все залізо готове до роботи!
 6}
 7
 8void loop() {
 9    // Заповнити екран чорним кольором
10    lilka::display.fillScreen(lilka::colors::Black);
11
12    while (1) {
13        // Отримати стан кнопок
14        lilka::State state = lilka::controller.getState();
15
16        if (state.a.justPressed) { // Якщо щойно була натиснута кнопка "A"...
17            // Розпочати відтворення звуку на частоті 440 Гц
18            lilka::buzzer.play(lilka::NOTE_A4);
19            // Заповнити екран червоним кольором
20            lilka::display.fillScreen(lilka::colors::Red);
21        } else if (state.a.justReleased) { // Якщо кнопка "A" щойно була відпущена...
22            // Зупинити відтворення звуку
23            lilka::buzzer.stop();
24            // Заповнити екран зеленим кольором
25            lilka::display.fillScreen(lilka::colors::Green);
26        }
27    }
28}

Примітка

Порада для початківців: ви могли помітити, що всі функції та об’єкти бібліотеки lilka викликаються через ::. Це означає, що вони належать до простору назв lilka.

Такий синтаксис дозволяє нам уникнути плутанини з іншими бібліотеками (а також з вашим кодом), які можуть містити функції чи змінні з такими ж назвами.

Якщо не хочете щоразу писати lilka:: перед кожною функцією та об’єктом бібліотеки lilka, ви можете використати директиву using namespace:

 1#include <lilka.h>
 2
 3using namespace lilka; // Тепер не потрібно щоразу писати "lilka::"
 4
 5void setup() {
 6    begin();
 7    // Все залізо готове до роботи!
 8}
 9
10void loop() {
11    // Заповнити екран чорним кольором
12    display.fillScreen(colors::Black);
13
14    while (1) {
15        // Отримати стан кнопок
16        State state = controller.getState();
17
18        if (state.a.justPressed) { // Якщо щойно була натиснута кнопка "A"...
19            // Розпочати відтворення звуку на частоті 440 Гц
20            buzzer.play(NOTE_A4);
21            // Заповнити екран червоним кольором
22            display.fillScreen(colors::Red);
23        } else if (state.a.justReleased) { // Якщо кнопка "A" щойно була відпущена...
24            // Зупинити відтворення звуку
25            buzzer.stop();
26            // Заповнити екран зеленим кольором
27            display.fillScreen(colors::Green);
28        }
29    }
30}