Przycisk dodajemy standardowo:
Code: Select all
#include <supla/control/button.h>
...
auto b1 = new Supla::Control::Button(pin, pullup, invertLogic); // gdy dajemy pullup, to invertLogic dajemy na true
Code: Select all
b1->setHoldTime(2000); // po 2 s od przytrzymania przycisku zostanie wywołane zdarzenie ON_HOLD
b1->setMulticlickTime(400); // program zlicza kliknięcia i po upływie 400 ms od puszczenia przycisku, wywoła odpowiednią akcję ON_CLICK_1 do ON_CLICK_9
Natomiast jeśli jesteśmy na którymś kolejnym kliknięciu, to ON_HOLD nie działa i możemy trzymać przycisk dowolnie długo.
Akcje dodajemy standardowo:
Code: Select all
b1->addAction(Supla::TURN_ON, relay1, ON_CLICK_1);
b1->addAction(Supla::TURN_ON, relay2, ON_CLICK_2);
b1->addAction(Supla::TURN_ON, relay3, ON_CLICK_3);
b1->addAction(Supla::TURN_ON, relay4, ON_CLICK_4);
b1->addAction(Supla::TURN_OFF, relay1, ON_HOLD);
b1->addAction(Supla::TURN_OFF, relay2, ON_HOLD);
b1->addAction(Supla::TURN_OFF, relay3, ON_HOLD);
b1->addAction(Supla::TURN_OFF, relay4, ON_HOLD);
Dotychczasowe zdarzenia ON_PRESS, ON_RELEASE, ON_CHANGE są wywoływane po staremu niezależnie od tego, czy używamy nowych metod czy nie. Na chwilę obecną wydaje mi się, że powinno się używać albo tych starych zdarzeń bez dodatkowych funkcji, albo tyklo tych nowych.
Mam już kilka pomysłów na to jak to jeszcze bardziej rozbudować o nowe funkcje, ale na razie nie będę ich zdradzał.