Controller: Кнопки

Controller lilka::controller

Екземпляр класу Controller, який можна використовувати для вимірювання стану кнопок. Вам не потрібно інстанціювати Controller вручну.

struct ButtonState

Містить стан кнопки, який був вимінярий в певний момент часу.

Public Members

bool pressed

true, якщо кнопка була в натиснутому стані в момент виклику lilka::controller.getState().

bool justPressed

true, якщо кнопка була вперше натиснута в момент виклику lilka::controller.getState() (до цього була відпущена).

bool justReleased

true, якщо кнопка була вперше відпущена в момент виклику lilka::controller.getState() (до цього була натиснута).

uint64_t time
uint64_t nextRepeatTime
uint32_t repeatRate
uint32_t repeatDelay
struct State

Містить стани всіх кнопок, які були виміряні в певний момент часу.

Public Members

ButtonState up
ButtonState down
ButtonState left
ButtonState right
ButtonState a
ButtonState b
ButtonState c
ButtonState d
ButtonState select
ButtonState start
ButtonState any

Спеціальний стан, який містить стани «будь-якої» кнопки.

class Controller

Клас для роботи з контролером.

Використовується для вимірювання стану кнопок.

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

#include <lilka.h>

void setup() {
    lilka::begin();
}

void loop() {
    while (1) {
        lilka::State state = lilka::controller.getState();
        if (state.up.justPressed) {
            Serial.println("Ви щойно натиснули кнопку 'Вгору'");
        } else if (state.up.justReleased) {
            Serial.println("Ви щойно відпустили кнопку 'Вгору'");
        }
    }
}

Public Functions

Controller()
void begin()

Почати вимірювання стану кнопок.

Попередження

Цей метод викликається автоматично при виклику lilka::begin().

State getState()

Прочитати стан кнопок та скинути прапорці justPressed та justReleased.

State peekState()

Прочитати стан кнопок, не скидаючи прапорців justPressed та justReleased.

void resetState()
void setGlobalHandler(void (*handler)(Button, bool))

Встановити глобальний обробник подій, який буде викликатися при натисненні або відпусканні будь-якої кнопки.

void setHandler(Button button, void (*handler)(bool))

Встановити обробник подій для певної кнопки, який буде викликатися при натисненні або відпусканні цієї кнопки.

void clearHandlers()

Видалити всі обробники подій.

void setAutoRepeat(Button button, uint32_t rate, uint32_t delay)

Налаштувати автоматичне повторення натискання кнопки.

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

Щоб вимкнути автоматичне повторення натискання кнопки, викличте цей метод з параметрами delay = 0 та rate = 0.

Параметри:
  • button – Кнопка, для якої налаштовується автоматичне повторення натискання.

  • rate – Частота автоматичного повторення натискання (кількість натискань на секунду).

  • delay – Затримка перед початком автоматичного повторення натискання (в мілісекундах).

    // Натискання кнопки "Вгору" буде повторюватись з частотою 5 натискань на секунду після початкової затримки 500 мс:
    lilka::controller.setAutoRepeat(lilka::Button::UP, 5, 500);