Mouse.isPressed()
Mouse.isPressed() возвращает true, если библиотека считает указанную кнопку мыши удерживаемой — удобно проверять перед Mouse.release() или для защиты от двойного нажатия.
Полная статья
Описание
Mouse.isPressed() не обращается к железу — она спрашивает у самой библиотеки Mouse, считает ли та конкретную кнопку нажатой в данный момент. Это важное уточнение: функция отражает внутреннее состояние, которое библиотека передаёт компьютеру, а не физическое состояние какого-либо вывода платы.
Типичный сценарий: вы вызвали Mouse.press(), и кнопка «удерживается» несколько итераций loop(). Чтобы не отпустить её дважды или убедиться, что она ещё нажата перед вызовом Mouse.release(), удобно проверить состояние через Mouse.isPressed().
Если вызвать функцию без аргумента, она проверит левую кнопку — MOUSE_LEFT.
Синтаксис
Mouse.isPressed()Mouse.isPressed(button)
Параметры
button — кнопка мыши, состояние которой нужно проверить. Тип данных: char.
Допустимые значения:
MOUSE_LEFT— левая кнопка (используется по умолчанию)MOUSE_RIGHT— средняя кнопкаMOUSE_MIDDLE— правая кнопка
Возвращает
true, если библиотека считает выбранную кнопку нажатой; false — если кнопка отпущена или ещё не была нажата. Тип данных: bool.
Пример кода
#include <Mouse.h>
void setup() {
//Кнопка, инициирующая нажатие мыши
pinMode(2, INPUT);
//Кнопка, завершающая нажатие мыши
pinMode(3, INPUT);
//Инициализация серийной связи с компьютером
Serial.begin(9600);
//Инициализация библиотеки Mouse
Mouse.begin();
}
void loop() {
//Переменная для хранения состояния кнопки
int mouseState = 0;
//Если кнопка на пине 2 нажата — удерживать левую кнопку мыши и сохранить состояние в переменную
if (digitalRead(2) == HIGH) {
Mouse.press();
mouseState = Mouse.isPressed();
}
//Если кнопка на пине 3 нажата — отпустить левую кнопку мыши и сохранить состояние в переменную
if (digitalRead(3) == HIGH) {
Mouse.release();
mouseState = Mouse.isPressed();
}
//Вывести текущее состояние кнопки мыши
Serial.println(mouseState);
delay(10);
}
Где применяется
- Удержание кнопки по условию. Нажать кнопку мыши при одном событии, а отпустить при другом — и между ними проверять через
Mouse.isPressed(), нужно ли что-то делать. - Защита от двойного нажатия. Перед вызовом
Mouse.press()убедиться, что кнопка ещё не нажата, чтобы не отправить лишнее событие. - Отладка логики управления мышью. Вывести результат в
Serial Monitorи визуально убедиться, чтоMouse.press()иMouse.release()чередуются в правильном порядке.
Практические замечания
Mouse.isPressed()не читает физические выводы платы. Она возвращает только то состояние, которое библиотека Mouse сама же и установила.- Если нужно проверить, нажата ли реальная тактовая кнопка, подключённая к пину Arduino, используйте
digitalRead()— это совершенно другая задача. - Если функция возвращает
false, хотя вы ожидалиtrue, проверьте, был ли вызванMouse.press()до обращения кMouse.isPressed(). - Вызов
Mouse.release()сбрасывает состояние кнопки, и последующийMouse.isPressed()вернётfalse— это ожидаемое поведение. - Для отладки удобно добавить
Serial.println(Mouse.isPressed(MOUSE_LEFT))прямо вloop(): так видно, когда именно меняется состояние.