/////////////////////////////////////////////////////////////////
#include "Button2.h"
/////////////////////////////////////////////////////////////////
#define DVERE 37
#define ZVONEK 36
#define NAPAJENI 35
#define OVLADACA 34
#define OVLADACB 33
/////////////////////////////////////////////////////////////////
Button2 Dvere, Zvonek, Napajeni, OvladacA, OvladacB;
/////////////////////////////////////////////////////////////////
unsigned long now = 0;
byte ButtonCounter = 0;
uint32_t Timer20Start; // For delayed alarm.
const uint16_t Timer20 PROGMEM = 5000;
bool DelayedAlarm = false; // When "Dvere" sensor activated.
bool Armed = false;
void setup() {
Serial.begin(115200);
delay(500);
// Serial.println("Button Demo");
Dvere.begin(DVERE, INPUT_PULLUP, true);
Zvonek.begin(ZVONEK, INPUT_PULLUP, true);
Napajeni.begin(NAPAJENI, INPUT_PULLUP, false);
OvladacA.begin(OVLADACA, INPUT, false);
OvladacB.begin(OVLADACB, INPUT, false);
// Dvere.setLongClickTime(1000);
// Dvere.setDoubleClickTime(400);
// Serial.println(" Longpress Time:\t" + String(Dvere.getLongClickTime()) + "ms");
// Serial.println(" DoubleClick Time:\t" + String(Dvere.getDoubleClickTime()) + "ms");
// Serial.println();
// Dvere.setChangedHandler(changed);
Dvere.setPressedHandler(DvereOtevreny);
Dvere.setReleasedHandler(DvereZavreny);
Dvere.setTapHandler(DvereCycle);
// Dvere.setClickHandler(click);
// Dvere.setLongClickDetectedHandler(longClickDetected);
// Dvere.setLongClickHandler(longClick);
// Dvere.setLongClickDetectedRetriggerable(false);
// Dvere.setDoubleClickHandler(doubleClick);
// Dvere.setTripleClickHandler(tripleClick);
Zvonek.setPressedHandler(ZvonekStisknut);
Napajeni.setPressedHandler(NapajeniOdpojeno);
Napajeni.setReleasedHandler(NapajeniObnoveno);
OvladacA.setPressedHandler(PressedOvladacAB);
OvladacA.setReleasedHandler(ReleasedOvladacAB);
OvladacB.setPressedHandler(PressedOvladacAB);
OvladacB.setReleasedHandler(ReleasedOvladacAB);
}
/////////////////////////////////////////////////////////////////
void loop() {
Dvere.loop();
Zvonek.loop();
Napajeni.loop();
OvladacA.loop();
OvladacB.loop();
}
/////////////////////////////////////////////////////////////////
void DvereOtevreny(Button2& btn) {
Serial.println("Dvere otevreny");
}
void DvereZavreny(Button2& btn) {
Serial.print("Dvere zavreny po: ");
Serial.print((float) btn.wasPressedFor()/1000, 1);
Serial.println(" sec.");
}
void DvereCycle(Button2& btn) {
Serial.println("Dvere otevreny a zavreny.");
}
void ZvonekStisknut(Button2& btn){
Serial.println("Zvonek stisknut");
}
void NapajeniOdpojeno(Button2& btn){
Serial.println("Napajeni odpojeno.");
}
void NapajeniObnoveno(Button2& btn){
Serial.print("Napajeni obnoveno po ");
Serial.print((float) btn.wasPressedFor()/1000, 1);
Serial.println(" sec.");
}
void PressedOvladacAB(Button2& btn) {
ButtonCounter++;
if (ButtonCounter == 2) {
now = millis();
Serial.println("Ovladac A + B pressed.");
} else if (ButtonCounter == 1) {
Serial.print("Pressed only button ");
// Serial.print("");
Serial.println(btn.getID());
}
}
void ReleasedOvladacAB(Button2& btn) {
ButtonCounter--;
if (ButtonCounter == 0) {
if (now != 0) {
Serial.print("Ovladac A + B pressed for: ");
Serial.print(millis() - now);
Serial.println("ms");
now = 0;
}
Serial.print("Released button ");
Serial.println(btn.getID());
}
}
void changed(Button2& btn) {
Serial.println("changed");
}
void click(Button2& btn) {
Serial.println("click\n");
}
void longClickDetected(Button2& btn) {
Serial.println("long click detected");
}
void longClick(Button2& btn) {
Serial.println("long click\n");
}
void doubleClick(Button2& btn) {
Serial.println("double click\n");
}
void tripleClick(Button2& btn) {
Serial.println("triple click\n");
Serial.println(btn.getNumberOfClicks());
}
/////////////////////////////////////////////////////////////////