1 contributor
#ifndef _BUTTON_H
#define _BUTTON_H
#include <EEPROM.h>
#include "beacon.h"
#define DEBOUNCE_TIME 100
int lastExecTime = 0;
int buttonState = 0; // variable for reading the pushbutton status
#ifdef ARDUINO_HELTEC_WIFI_LORA_32
const int BUTTON_PRG = 0; // PRG Button
#elif ARDUINO_M5Stick_C
const int BUTTON_PRG = M5_BUTTON_HOME; // Home Button
#elif ARDUINO_ESP32C3_DEV
const int BUTTON_PRG = 9; // PRG Button
#endif // ARDUINO_HELTEC_WIFI_LORA_32 & ARDUINO_M5Stick_C &ARDUINO_ESP32C3_DEV
void onPrgFall(){
int currentExecTime=millis();
if(DEBOUNCE_TIME > (currentExecTime - lastExecTime)) {
//Bouncing
return;
}
Serial.println("onPrgFall");
lastExecTime=currentExecTime;
//delay(BEACON_SLEEP_ADV);
switch( beacon_type ) {
case EN_BEACON_TYPE_entry:
beacon_type = EN_BEACON_TYPE_hazard;
beaconTypeStr="Hazard ";
break;
case EN_BEACON_TYPE_hazard:
beacon_type = EN_BEACON_TYPE_safe;
beaconTypeStr="Safe ";
break;
case EN_BEACON_TYPE_safe:
beacon_type = EN_BEACON_TYPE_exit;
beaconTypeStr="Exit ";
break;
case EN_BEACON_TYPE_exit:
beacon_type = EN_BEACON_TYPE_entry;
beaconTypeStr="Entry ";
break;
default:
beacon_type = EN_BEACON_TYPE_safe;
beaconTypeStr="Safe ";
break;
}
Serial.println("Switching to "+beaconTypeStr);
#ifdef _M5STICKC_H_
M5.Lcd.fillRect(0, LINE2, 160, 10, BLACK);
M5.Lcd.fillRect(0, LINE4, 160, 20, BLACK);
#endif //_M5STICKC_H_
beacon_changed = true;
}
void pollPrg() {
if(false != beacon_changed) {
EEPROM.write(0, beacon_type);
EEPROM.commit();
DisplayButtonStatus();
beacon_changed = false;
}
}
#endif //_BUTTON_H