namespace Butt {
enum class Event {
NO_CHANGE, PRESS, RELEASE
};
Event EvReco(bool state)
{
static bool prevState = false;
/* кнопка была отпущена */
if(state < prevState)
{
prevState = state;
return Event::RELEASE;
}
/* кнопка была нажата */
if(state > prevState)
{
prevState = state;
return Event::PRESS;
}
/* состояние кнопки не изменилось */
return Event::NO_CHANGE;
};
}
Butt::Event ev;
ev = Butt::EvReco(ButtonRead(BT2));
if(ev == Butt::Event::PRESS)
{
чето-сделать по факту нажатия кнопки
}
#define BT1 4 // ПИН к которому подключена кнопка 1
#include <BleKeyboard.h> // подключаем библиотеку
BleKeyboard bleKeyboard; // создаем объект
void setup() {
pinMode(BT1, INPUT_PULLUP); // ПИН кнопки как вход
pinMode(2, OUTPUT); // встроеный светодиод
bleKeyboard.begin(); // старт клавиатуры
}
void loop() {
// Если клавиатура подключена то встроеный светодиод горит
digitalWrite (LED_BUILTIN, bleKeyboard.isConnected());
}
Butt::Event ev;
ev = Butt::EvReco(ButtonRead(BT1));
if(ev == Butt::Event::PRESS)
{
bleKeyboard.press('A');
}