Skip to content

Commit

Permalink
sdk: add buzzer stub files
Browse files Browse the repository at this point in the history
doc: add Lua buzzer docs
  • Loading branch information
and3rson committed Mar 11, 2024
1 parent 155709a commit 83ec907
Show file tree
Hide file tree
Showing 6 changed files with 56 additions and 2 deletions.
8 changes: 8 additions & 0 deletions docs/manual/keira/lua/reference/buzzer.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
``buzzer`` - П'єзо-динамік
--------------------------

Функції для роботи з п'єзо-динаміком.

.. note:: Ці функції не блокують виконання програми: всі звуки та мелодії відтворюються в фоновому режимі.

.. lua:autoclass:: buzzer
1 change: 1 addition & 0 deletions docs/manual/keira/lua/reference/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,5 @@ Lua API
geometry
gpio
util
buzzer
state
1 change: 1 addition & 0 deletions docs/manual/keira/lua/reference/lilka.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
Детальніше про їх поведінку можна прочитати в :ref:`секції про написання ігор на Lua <lua-games>`.

.. lua:module:: lilka
:noindex:

.. lua:function:: init()
Expand Down
45 changes: 45 additions & 0 deletions sdk/addons/lualilka/library/buzzer.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
---@meta

---@class buzzer
buzzer = {}

---Відтворює звук заданої частоти.
---
---Якщо передати другий аргумент, звук буде відтворено впродовж цього часу (в мілісекундах).
---
---@param frequency number частота тону
---@param size? number тривалість звуку (в мілісекундах)
function buzzer.play(frequency, size) end

---Відтворює мелодію.
---
---Мелодія - це масив з пар частота-розмірність.
---
---Наприклад, ноту з тоном ``523`` Гц (нота "до" п'ятої октави) і тривалістю 1/4 можна представити як ``{523, 4}``.
---
---Від'ємна тривалість означає ноту з крапкою, наприклад:
---
---* ``-1`` - ціла нота з крапкою (1 + 1/2)
---* ``-2`` - половина з крапкою (1/2 + 1/4)
---* ``-4`` - чверть з крапкою (1/4 + 1/8)
---...і так далі.
---
---@param melody table мелодія (масив пар частота-розмірність)
---@param tempo number темп мелодії (кількість ударів на хвилину)
---@usage
--- -- Мелодія "до-ре-мі-фа-соль" п'ятої октави
--- local melody = {
--- {523, 2},
--- {587, 4},
--- {659, 2},
--- {698, 4},
--- {784, 1},
--- }
--- buzzer.play_melody(melody, 60) -- Відтворює мелодію з темпом 60 ударів на хвилину
function buzzer.play_melody(melody, tempo) end

---Зупиняє відтворення всіх звуків.
---@return nil
function buzzer.stop() end

return buzzer
2 changes: 1 addition & 1 deletion sdk/addons/lualilka/library/util.lua
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ util = {}
function util.time() end

---Затримує виконання скрипта на вказану кількість секунд.
---@usage
---@param sec number кількість секунд, на яку потрібно затримати виконання програми
---@usage
--- display.set_cursor(0, 32)
--- display.print("Зачекайте півсекунди...")
--- util.sleep(0.5) -- Затримує виконання програми на півсекунди.
Expand Down
1 change: 0 additions & 1 deletion sdk/lib/lilka/src/lilka/buzzer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,6 @@ void Buzzer::stop() {
}

void Buzzer::_stop() {
// TODO: This is not thread-safe
noTone(LILKA_BUZZER);
TaskHandle_t handle = melodyTaskHandle;
if (handle != NULL) {
Expand Down

0 comments on commit 83ec907

Please sign in to comment.