-fix button unresponsive issue

-introduce subtle flashing for keepaliev detection
This commit is contained in:
Joe Tretter
2023-10-13 18:30:44 -05:00
parent e7f33b5af2
commit 57d362a1fe

View File

@@ -5,12 +5,13 @@
// GPIOs
#define GPIO_EMERGENCY_LED 5
#define GPIO_SYNC_LED 19
#define GPIO_REQUESTED_STATE_LED 2
#define GPIO_EMERGENCY_BUTTON 16
// Software Parameters
#define LOOP_DELAY 1
#define PING_TIMEOUT_NUM_LOOPS 2
#define EMERGENCY_BUTTON_SCAN_RATE_SECONDS 2
#define EMERGENCY_BUTTON_SCAN_RATE_SECONDS 1
String macList[2] = {"24:6F:28:B1:EE:74", "24:6F:28:B2:40:8C"};
String macLocal,macRemote;
@@ -64,6 +65,7 @@ void OnButtonPushed(){
Serial.println("BUTTON PUSH CALLBACK.");
if((getUptimeInSeconds()-lastButtonPushUptimeInSeconds)>EMERGENCY_BUTTON_SCAN_RATE_SECONDS){
isSenderEmergency=!isSenderEmergency;
digitalWrite(GPIO_REQUESTED_STATE_LED,isSenderEmergency?HIGH:LOW);
lastButtonPushUptimeInSeconds=getUptimeInSeconds();
Serial.println("BUTTON PUSH EXEC.");
}
@@ -141,6 +143,9 @@ void setup(){
esp_now_register_recv_cb(OnDataRecv);
pinMode(GPIO_EMERGENCY_LED, OUTPUT);
pinMode(GPIO_REQUESTED_STATE_LED, OUTPUT);
digitalWrite(GPIO_REQUESTED_STATE_LED,LOW);
digitalWrite(GPIO_EMERGENCY_LED,LOW);
pinMode(GPIO_SYNC_LED,OUTPUT);
digitalWrite(GPIO_SYNC_LED,LOW);
@@ -159,11 +164,12 @@ void setup(){
void loop(){
// Send message via ESP-NOW
sleep(LOOP_DELAY);
boolean isButtonPushed = (HIGH== digitalRead(GPIO_EMERGENCY_BUTTON));
Serial.println(isButtonPushed?"PUSHED":"RELEASED");
// only one device has a button, the origin will tell the recipient to revert back the status.
if (isButtonPushed) {
if (isSenderEmergency) {
myData.macOfSender=macLocal;
}
@@ -178,12 +184,11 @@ void loop(){
Serial.println(myData.isEmergency?"EMERGENGY ON":"EMERGENCY OFF");
Serial.println((isSenderEmergency==1)?"SEN EMERG ON":"SEN EMERG OFF");
digitalWrite(GPIO_SYNC_LED,LOW);
if ((getUptimeInSeconds()-lastPingUptimeInSeconds) < (LOOP_DELAY*PING_TIMEOUT_NUM_LOOPS)) {
delay(3);
digitalWrite(GPIO_SYNC_LED,HIGH);
} else {
digitalWrite(GPIO_SYNC_LED,LOW);
}
}
switch (result) {
case ESP_OK: