diff --git a/docs/library/index.rst b/docs/library/index.rst index 2b82320d..dccd5a4a 100644 --- a/docs/library/index.rst +++ b/docs/library/index.rst @@ -1,7 +1,9 @@ Бібліотека ``lilka`` ==================== -Проєкт "Лілка" має однойменну бібліотеку ``lilka``, яка дозволяє працювати з компонентами пристрою. +Проєкт "Лілка" має однойменну бібліотеку ``lilka``, яка спрощує роботу з Лілкою та дозволяє вам швидко створювати програми для неї. + +Ця бібліотека доступна в `реєстрі бібліотек PlatformIO `_. Звісно ж, ви можете використовувати Лілку і без бібліотеки ``lilka`` - ніхто не змушує вас використовувати її. Весь код, який ви побачите в цій документації, можна написати самостійно, без використання ``lilka``. @@ -13,6 +15,8 @@ Також ``lilka`` спрощує ініціалізацію дисплею, кнопок, батареї, звуку, SD-карти та інших компонентів, що входять до складу Лілки. Для цього потрібно викликати лише одну функцію - ``lilka::begin()``. .. code-block:: cpp + :linenos: + :emphasize-lines: 1,4 #include @@ -29,7 +33,7 @@ // Отримати стан кнопок lilka::State state = lilka::controller.getState(); - if (state.a.justPressed) // Якщо щойно була натиснута кнопка "A"... + if (state.a.justPressed) { // Якщо щойно була натиснута кнопка "A"... // Розпочати відтворення звуку на частоті 440 Гц lilka::buzzer.play(440); // Заповнити екран червоним кольором @@ -40,6 +44,7 @@ // Заповнити екран зеленим кольором lilka::display.fillScreen(lilka::display.color565(0, 255, 0)); } + } } Тому, незалежно від рівня вашої кваліфікації, ми радимо використовувати бібліолеку ``lilka`` для роботи з Лілкою. @@ -53,6 +58,8 @@ Якщо не хочете щоразу писати ``lilka::`` перед кожною функцією та об'єктом бібліотеки ``lilka``, ви можете використати директиву ``using namespace``: .. code-block:: cpp + :linenos: + :emphasize-lines: 3,12,16,20,22,25,27 #include @@ -71,7 +78,7 @@ // Отримати стан кнопок State state = controller.getState(); - if (state.a.justPressed) // Якщо щойно була натиснута кнопка "A"... + if (state.a.justPressed) { // Якщо щойно була натиснута кнопка "A"... // Розпочати відтворення звуку на частоті 440 Гц buzzer.play(440); // Заповнити екран червоним кольором @@ -82,6 +89,7 @@ // Заповнити екран зеленим кольором display.fillScreen(display.color565(0, 255, 0)); } + } } .. toctree:: diff --git a/docs/manual/environment.rst b/docs/manual/environment.rst index d2e617ce..3e7cc5ae 100644 --- a/docs/manual/environment.rst +++ b/docs/manual/environment.rst @@ -1,4 +1,133 @@ -Налаштування середовища розробки -================================ +Запуск першої прошивки +====================== -TODO +Для розробки програмного забезпечення для Lilka використовується середовище PlatformIO. + +PlatformIO - це набір інструментів для розробки вбудованого програмного забезпечення, який автоматизує процес збірки, завантаження та налагодження програмного забезпечення для мікроконтролерів. + +PlatformIO автоматично встановлює необхідні залежності, такі як компілятори, бібліотеки та інші інструменти, що необхідні для написання програм. + +В цьому документі описано процес налаштування середовища розробки для Lilka з використанням PlatformIO та Visual Studio Code для ОС Windows на прикладі демонстраційної прошивки для Лілки. + +Якщо ви використовуєте MacOS, процес буде схожим, але можуть бути деякі відмінності в налаштуваннях. А якщо ви використовуєте Linux, то ви, скоріш за все, вже знаєте, що робити, і цей документ вам не потрібен. ;) + +Встановлення Visual Studio Code, PlatformIO та Git +-------------------------------------------------- + +1. Встановіть **Visual Studio Code** з офіційного сайту: https://code.visualstudio.com/ + + .. image:: ./images/01_download_vscode_cropped.png + :width: 50% + +2. Запустіть **Visual Studio Code** та встановіть плагін **PlatformIO IDE**. + + Для цього відкрийте вкладку **Extensions** (``Ctrl`` + ``Shift`` + ``X``), введіть "**PlatformIO**" в поле пошуку та встановіть плагін. + + .. image:: ./images/04_install_platformio_cropped.png + :width: 50% + + .. .. image:: ./images/05_installed_platformio.png + .. :width: 50% + +3. Тепер нам потрібно встановити **Git**. + + **Git** - це система керування версіями, яка дозволяє ділитися кодом з іншими розробниками та використовувати код з відкритих репозиторіїв. + + Весь код для Лілки, а також бібліотеки, які використовуються в проекті, знаходяться на `GitHub `_, тому нам потрібно встановити **Git**, щоб здійснювати роботу з репозиторіями. + + Для встановлення **Git** перейдіть на вкладку **Source Control** (``Ctrl`` + ``Shift`` + ``G``) та натисніть "**Download Git for Windows**". + + .. image:: ./images/06_download_git_for_win_cropped.png + :width: 50% + + В процесі встановлення не змінюйте жодних параметрів, залиште все так, як є за замовчуванням, окрім кроку "**Choosing the default editor used by Git**". + + На цьому кроці виберіть "**Use Visual Studio Code as Git's default editor**". + + .. image:: ./images/07_use_vs_code_with_git_cropped.png + :width: 50% + +4. Після встановлення **Git** перезапустіть **Visual Studio Code**. + +Клонування репозиторію та побудова демонстраційної прошивки +----------------------------------------------------------- + +1. Перейдіть на вкладку **Source Control** (``Ctrl`` + ``Shift`` + ``G``) та клонуйте репозиторій `Lilka `_: + + .. image:: ./images/08_clone_repo_cropped.png + :width: 50% + + Для цього натисніть "**Clone Repository**" та введіть адресу репозиторію: + + ``https://github.com/and3rson/lilka`` + + .. image:: ./images/09_clone_cropped.png + :width: 50% + +2. Після клонування репозиторію перейдіть на вкладку **PlatformIO** та імпортуйте проєкт основної прошивки для Лілки. Для цього натисніть "**Open Project**" та виберіть директорію ``lilka/firmware/main``. + + .. image:: ./images/11_open_pio_project_cropped.png + :width: 50% + +3. Тепер нам потрібно дочекатися налаштування середовища розробки. + + **PlatformIO** автоматично встановить необхідні залежності, такі як компілятори, бібліотеки та інші інструменти, що необхідні для написання програм для Лілки. + + .. image:: ./images/13_wait_pio_project_init_more_cropped.png + :width: 50% + +4. Після налаштування середовища розробки перейдіть на вкладку **PlatformIO** та виберіть ``v2`` в якості цільової платформи. Потім натисніть "**Build**". + + .. image:: ./images/14_pio_build_v2_cropped.png + :width: 50% + + Тепер потрібно дочекатися завершення збірки. Перша збірка може зайняти деякий час. + + .. image:: ./images/15_pio_build_v2_progress_cropped.png + :width: 50% + + Щойно збірка завершиться, ви побачите повідомлення про успішне завершення збірки: + + .. image:: ./images/16_pio_build_ok_cropped.png + :width: 50% + +Завантаження демонстраційної прошивки в Лілку +--------------------------------------------- + +1. Підключіть Лілку до комп'ютера за допомогою USB-кабеля та увімкніть її. + + Windows може вимагати встановлення драйверів для Лілки. Якщо вам буде запропоновано встановити драйвери, встановіть їх. + + Після цього вимкніть Лілку. + + Тепер вам потрібно натиснути та утримувати кнопку ``SELECT`` і увімкнути Лілку. Після цього можна відпустити кнопку ``SELECT``. + Це переведе Лілку в **режим завантаження** (**bootloader mode**): в цьому режимі ви можете завантажити в неї нову прошику. + +2. Тепер перейдіть на вкладку **PlatformIO** та виберіть ``v2`` в якості цільової платформи. Потім натисніть "**Upload**". + + Спершу **PlatformIO** виконає підготовчі дії, а потім розпочне завантаження нашої свіжозібраної прошивки в Лілку. + + .. image:: ./images/17_run_upload_v2_cropped.png + :width: 50% + + Початок завантаження виглядатиме ось так: + + .. image:: ./images/18_upload_progress_cropped.png + :width: 50% + + Тепер потрібно дочекатися завершення завантаження. Щойно завантаження завершиться, ви побачите повідомлення про успішне завершення завантаження: + + TODO: додати скріншот, оскільки я це все робив під віртуалкою без Лілки під рукою. :) + +3. Коли завантаження завершиться, натисніть кнопку ``RESET`` на Лілці та насолоджуйтесь новою прошивкою! + +Вітаємо! +-------- + +Вітаємо, ви успішно налаштували середовище розробки та завантажили демонстраційну прошивку в Лілку! + +Ви можете потицяти Лілку та переконатися, що вона працює і спробувати різні демо. Також ви можете перейти на вкладку **Explorer** (``Ctrl`` + ``Shift`` + ``E``), відкрити файл ``src/main.cpp`` та поглянути, як виглядає код прошивки, яку ми щойно зібрали і запустили на Лілці. + +**Лілка - це відкрита платформа**, тому ви можете змінювати код прошивки, додавати нові функції та вдосконалювати Лілку, або навіть створювати власні прошивки для неї. + +**Але перш ніж приступати до цього**, рекомендуємо ознайомитися з документацією бібліотеки `lilka`, яка спрощує роботу з Лілкою, за `цим посиланням `_. diff --git a/docs/manual/flashing.rst b/docs/manual/flashing.rst deleted file mode 100644 index 264ccf15..00000000 --- a/docs/manual/flashing.rst +++ /dev/null @@ -1,4 +0,0 @@ -Запис прошивки -============== - -TODO diff --git a/docs/manual/images/01_download_vscode.png b/docs/manual/images/01_download_vscode.png new file mode 100644 index 00000000..e7887db0 Binary files /dev/null and b/docs/manual/images/01_download_vscode.png differ diff --git a/docs/manual/images/01_download_vscode_cropped.png b/docs/manual/images/01_download_vscode_cropped.png new file mode 100644 index 00000000..4dcb08e9 Binary files /dev/null and b/docs/manual/images/01_download_vscode_cropped.png differ diff --git a/docs/manual/images/02_inside_vscode.png b/docs/manual/images/02_inside_vscode.png new file mode 100644 index 00000000..e58af9ca Binary files /dev/null and b/docs/manual/images/02_inside_vscode.png differ diff --git a/docs/manual/images/03_go_to_extensions.png b/docs/manual/images/03_go_to_extensions.png new file mode 100644 index 00000000..f8c2014f Binary files /dev/null and b/docs/manual/images/03_go_to_extensions.png differ diff --git a/docs/manual/images/04_install_platformio.png b/docs/manual/images/04_install_platformio.png new file mode 100644 index 00000000..b98ef0b8 Binary files /dev/null and b/docs/manual/images/04_install_platformio.png differ diff --git a/docs/manual/images/04_install_platformio_cropped.png b/docs/manual/images/04_install_platformio_cropped.png new file mode 100644 index 00000000..d9e75f0b Binary files /dev/null and b/docs/manual/images/04_install_platformio_cropped.png differ diff --git a/docs/manual/images/05_installed_platformio.png b/docs/manual/images/05_installed_platformio.png new file mode 100644 index 00000000..247bbc0a Binary files /dev/null and b/docs/manual/images/05_installed_platformio.png differ diff --git a/docs/manual/images/06_download_git_for_win.png b/docs/manual/images/06_download_git_for_win.png new file mode 100644 index 00000000..76078624 Binary files /dev/null and b/docs/manual/images/06_download_git_for_win.png differ diff --git a/docs/manual/images/06_download_git_for_win_cropped.png b/docs/manual/images/06_download_git_for_win_cropped.png new file mode 100644 index 00000000..7274ce03 Binary files /dev/null and b/docs/manual/images/06_download_git_for_win_cropped.png differ diff --git a/docs/manual/images/07_use_vs_code_with_git.png b/docs/manual/images/07_use_vs_code_with_git.png new file mode 100644 index 00000000..a4ec7c32 Binary files /dev/null and b/docs/manual/images/07_use_vs_code_with_git.png differ diff --git a/docs/manual/images/07_use_vs_code_with_git_cropped.png b/docs/manual/images/07_use_vs_code_with_git_cropped.png new file mode 100644 index 00000000..67ef4ac2 Binary files /dev/null and b/docs/manual/images/07_use_vs_code_with_git_cropped.png differ diff --git a/docs/manual/images/08_clone_repo.png b/docs/manual/images/08_clone_repo.png new file mode 100644 index 00000000..a2ffaffc Binary files /dev/null and b/docs/manual/images/08_clone_repo.png differ diff --git a/docs/manual/images/08_clone_repo_cropped.png b/docs/manual/images/08_clone_repo_cropped.png new file mode 100644 index 00000000..2cd4d008 Binary files /dev/null and b/docs/manual/images/08_clone_repo_cropped.png differ diff --git a/docs/manual/images/09_clone.png b/docs/manual/images/09_clone.png new file mode 100644 index 00000000..a2f5e6d0 Binary files /dev/null and b/docs/manual/images/09_clone.png differ diff --git a/docs/manual/images/09_clone_cropped.png b/docs/manual/images/09_clone_cropped.png new file mode 100644 index 00000000..932ca8d8 Binary files /dev/null and b/docs/manual/images/09_clone_cropped.png differ diff --git a/docs/manual/images/10_see_cloned_repo.png b/docs/manual/images/10_see_cloned_repo.png new file mode 100644 index 00000000..347dc9ca Binary files /dev/null and b/docs/manual/images/10_see_cloned_repo.png differ diff --git a/docs/manual/images/11_open_pio_project.png b/docs/manual/images/11_open_pio_project.png new file mode 100644 index 00000000..b97d9afb Binary files /dev/null and b/docs/manual/images/11_open_pio_project.png differ diff --git a/docs/manual/images/11_open_pio_project_cropped.png b/docs/manual/images/11_open_pio_project_cropped.png new file mode 100644 index 00000000..538da4ff Binary files /dev/null and b/docs/manual/images/11_open_pio_project_cropped.png differ diff --git a/docs/manual/images/12_wait_pio_project_init.png b/docs/manual/images/12_wait_pio_project_init.png new file mode 100644 index 00000000..f3447cda Binary files /dev/null and b/docs/manual/images/12_wait_pio_project_init.png differ diff --git a/docs/manual/images/13_wait_pio_project_init_more.png b/docs/manual/images/13_wait_pio_project_init_more.png new file mode 100644 index 00000000..a6aafbf1 Binary files /dev/null and b/docs/manual/images/13_wait_pio_project_init_more.png differ diff --git a/docs/manual/images/13_wait_pio_project_init_more_cropped.png b/docs/manual/images/13_wait_pio_project_init_more_cropped.png new file mode 100644 index 00000000..5981c81c Binary files /dev/null and b/docs/manual/images/13_wait_pio_project_init_more_cropped.png differ diff --git a/docs/manual/images/14_pio_build_v2.png b/docs/manual/images/14_pio_build_v2.png new file mode 100644 index 00000000..a2eb614a Binary files /dev/null and b/docs/manual/images/14_pio_build_v2.png differ diff --git a/docs/manual/images/14_pio_build_v2_cropped.png b/docs/manual/images/14_pio_build_v2_cropped.png new file mode 100644 index 00000000..7d6cd834 Binary files /dev/null and b/docs/manual/images/14_pio_build_v2_cropped.png differ diff --git a/docs/manual/images/15_pio_build_v2_progress.png b/docs/manual/images/15_pio_build_v2_progress.png new file mode 100644 index 00000000..d31d86b6 Binary files /dev/null and b/docs/manual/images/15_pio_build_v2_progress.png differ diff --git a/docs/manual/images/15_pio_build_v2_progress_cropped.png b/docs/manual/images/15_pio_build_v2_progress_cropped.png new file mode 100644 index 00000000..b71c64e7 Binary files /dev/null and b/docs/manual/images/15_pio_build_v2_progress_cropped.png differ diff --git a/docs/manual/images/16_pio_build_ok.png b/docs/manual/images/16_pio_build_ok.png new file mode 100644 index 00000000..eb49e193 Binary files /dev/null and b/docs/manual/images/16_pio_build_ok.png differ diff --git a/docs/manual/images/16_pio_build_ok_cropped.png b/docs/manual/images/16_pio_build_ok_cropped.png new file mode 100644 index 00000000..5d2f96fd Binary files /dev/null and b/docs/manual/images/16_pio_build_ok_cropped.png differ diff --git a/docs/manual/images/17_run_upload_v2.png b/docs/manual/images/17_run_upload_v2.png new file mode 100644 index 00000000..cff246a7 Binary files /dev/null and b/docs/manual/images/17_run_upload_v2.png differ diff --git a/docs/manual/images/17_run_upload_v2_cropped.png b/docs/manual/images/17_run_upload_v2_cropped.png new file mode 100644 index 00000000..31cfd0d6 Binary files /dev/null and b/docs/manual/images/17_run_upload_v2_cropped.png differ diff --git a/docs/manual/images/18_upload_progress.png b/docs/manual/images/18_upload_progress.png new file mode 100644 index 00000000..7ffb7983 Binary files /dev/null and b/docs/manual/images/18_upload_progress.png differ diff --git a/docs/manual/images/18_upload_progress_cropped.png b/docs/manual/images/18_upload_progress_cropped.png new file mode 100644 index 00000000..3319c92b Binary files /dev/null and b/docs/manual/images/18_upload_progress_cropped.png differ diff --git a/docs/manual/index.rst b/docs/manual/index.rst index ec5ef724..78c6ebcb 100644 --- a/docs/manual/index.rst +++ b/docs/manual/index.rst @@ -8,6 +8,5 @@ TODO assembly environment - flashing development extension diff --git a/sdk/lib/lilka/README.md b/sdk/lib/lilka/README.md new file mode 100644 index 00000000..a7aa8c9a --- /dev/null +++ b/sdk/lib/lilka/README.md @@ -0,0 +1,36 @@ +# Lilka + +Бібліотека для роботи з компонентами [Лілки](https://lilka.readthedocs.io/). + +# Приклад використання + +```cpp +#include + +void setup() { + lilka::begin(); + // Все залізо готове до роботи! +} + +void loop() { + // Заповнити екран чорним кольором + lilka::display.fillScreen(lilka::display.color565(0, 255, 0)); + + while (1) { + // Отримати стан кнопок + lilka::State state = lilka::controller.getState(); + + if (state.a.justPressed) { // Якщо щойно була натиснута кнопка "A"... + // Розпочати відтворення звуку на частоті 440 Гц + lilka::buzzer.play(440); + // Заповнити екран червоним кольором + lilka::display.fillScreen(lilka::display.color565(255, 0, 0)); + } else if (state.a.justReleased) { // Якщо кнопка "A" щойно була відпущена... + // Зупинити відтворення звуку + lilka::buzzer.stop(); + // Заповнити екран зеленим кольором + lilka::display.fillScreen(lilka::display.color565(0, 255, 0)); + } + } +} +``` diff --git a/sdk/lib/lilka/library.json b/sdk/lib/lilka/library.json index 2b51270b..063f519e 100644 --- a/sdk/lib/lilka/library.json +++ b/sdk/lib/lilka/library.json @@ -1,6 +1,6 @@ { "name": "Lilka", - "version": "1.0.6", + "version": "1.0.7", "license": "MIT", "repository": { "type": "git", @@ -19,5 +19,9 @@ "platformio.ini", "Makefile", "*.tar.gz" + ], + "include": [ + "src", + "README.md" ] } diff --git a/sdk/lib/lilka/src/lilka/ui.h b/sdk/lib/lilka/src/lilka/ui.h index f27738ac..e2cc6798 100644 --- a/sdk/lib/lilka/src/lilka/ui.h +++ b/sdk/lib/lilka/src/lilka/ui.h @@ -37,6 +37,7 @@ namespace lilka { /// ); /// } /// @endcode + int ui_menu(String title, String menu[], int menu_size, int cursor = 0, const menu_icon_t *icons[] = 0); /// Відобразити сповіщення. ///