take over counter handling from old project

This commit is contained in:
2020-07-26 23:33:54 +02:00
parent 0c095c80ac
commit bd885752b4
4 changed files with 53 additions and 19 deletions

View File

@ -24,6 +24,20 @@
volatile uint32_t cnt = 0;
uint32_t uptime = 0;
void count() {
static uint32_t lastEvent = 0;
uint32_t currentEvent = micros();
if (currentEvent > (lastEvent + configBlock.debounce)) {
lastEvent = currentEvent;
cnt++;
}
}
// void subscribeApplication() {
// }
@ -36,12 +50,44 @@
void setupApplication() {
mqttSetup();
pinMode(REED_PIN, INPUT_PULLUP);
attachInterrupt(REED_PIN, count, FALLING);
}
void loopApplication() {
mqttLoop();
uint32_t currentMillis = millis();
static uint32_t lastUptimeMillis = 0;
if (currentMillis > (lastUptimeMillis + 1000)) {
lastUptimeMillis = currentMillis;
uptime++;
}
static uint32_t lastMillis = 0;
if (currentMillis > (lastMillis + (configBlock.period * 1000))) {
lastMillis = currentMillis;
// rain sensor
uint32_t rainCnt = 0;
noInterrupts();
rainCnt = cnt;
cnt = 0;
interrupts();
#ifdef DEBUG
Serial.print(rainCnt);
Serial.println();
#endif
// MQTT publishing
#define BUF_SIZE 256
char buf[BUF_SIZE];
snprintf(buf, BUF_SIZE-1, "{\"raincnt\":%ld, \"uptime\":%ld}", rainCnt, uptime);
mqttClient.publish(configBlock.mqttValuesTopic, buf);
}
}