new device: pushbutton

This commit is contained in:
Ronald Schaten 2016-04-24 12:17:15 +02:00
parent 99ce953de3
commit d9d2ccd9bf
3 changed files with 48 additions and 0 deletions

25
things/DeviceButton.cpp Normal file
View File

@ -0,0 +1,25 @@
#include "DeviceButton.h"
void DeviceButton::deviceSetup() {
pinMode(pin, INPUT);
}
void DeviceButton::deviceRegister() {
Homie.registerNode(buttonNode);
}
void DeviceButton::deviceLoop() {
byte debounce = 0;
for (int i = 0; i < 3; i++) {
if (digitalRead(pin) == state) {
return;
}
delay(10);
}
state = !state;
Serial.print("button: ");
Serial.println(state);
if (!Homie.setNodeProperty(buttonNode, "state", String(state), false)) {
Serial.println("Sending failed");
}
}

18
things/DeviceButton.h Normal file
View File

@ -0,0 +1,18 @@
#pragma once
#include "Device.h"
#include <Homie.h>
class DeviceButton : public Device {
public:
inline DeviceButton(byte buttonPin) {
pin = buttonPin;
}
virtual void deviceSetup();
virtual void deviceRegister();
virtual void deviceLoop();
private:
byte pin;
bool state = LOW;
HomieNode buttonNode = HomieNode("button", "button");
};

View File

@ -5,6 +5,7 @@
#include "DeviceDht.h" #include "DeviceDht.h"
#include "DeviceIrRx.h" #include "DeviceIrRx.h"
#include "DeviceIrTx.h" #include "DeviceIrTx.h"
#include "DeviceButton.h"
const byte PIN_LED_RED = D8; const byte PIN_LED_RED = D8;
const byte PIN_LED_GREEN = D6; const byte PIN_LED_GREEN = D6;
@ -25,12 +26,16 @@ DeviceIrRx deviceIrRx(PIN_IRRX, PIN_POWER);
const byte PIN_IRTX = D2; const byte PIN_IRTX = D2;
DeviceIrTx deviceIrTx(PIN_IRTX); DeviceIrTx deviceIrTx(PIN_IRTX);
const byte PIN_BUTTON = D2;
DeviceButton deviceButton(PIN_BUTTON);
Device* devices[] = { Device* devices[] = {
&deviceLed, &deviceLed,
&deviceLdr, &deviceLdr,
&deviceDht, &deviceDht,
&deviceIrRx, &deviceIrRx,
&deviceIrTx, &deviceIrTx,
&deviceButton,
}; };
void setupHandler() { void setupHandler() {