From 92f4db12cecbf97f0b11495f8c4d0556f772bb4d Mon Sep 17 00:00:00 2001 From: Cynopolis Date: Sat, 30 Oct 2021 12:46:15 -0500 Subject: [PATCH] Fixed debounce timer mistake I realized I has been subtracting the wrong way which cause the debounce to not work. I've fixed this now. I also added a debounce to the arming pin. --- src/main.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 7f85940..006d966 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -73,14 +73,16 @@ volatile boolean is_enabled = false; volatile boolean is_armed = false; boolean has_single_pulsed = false; unsigned long debounce_timer = 0; +volatile unsigned long armed_debounce = 0; // Toggles the armed state of single fire mode. (Only toggles is signle fire mdoe is already enabled.) void arm_single_fire(){ - if(is_enabled){ + if(is_enabled && millis()-armed_debounce > 100){ is_armed = !is_armed; // Toggle the armed indicator light digitalWrite(armed_indicator_pin, !digitalRead(armed_indicator_pin)); digitalWrite(fired_indicator_pin, LOW); + armed_debounce = millis(); } } @@ -248,7 +250,7 @@ void loop() { // Check to see if the single pulse pin has been pulled LOW if(is_enabled){ - if(is_armed && debounce_timer-millis() > 100){ + if(is_armed && millis() - debounce_timer > 100){ if(!digitalRead(single_pulse_trig_pin) && has_single_pulsed == false){ generate_waveform(sample_resolution); has_single_pulsed = true; @@ -262,7 +264,7 @@ void loop() { debounce_timer = millis(); } } - if(debounce_timer-millis()>250){ + if(millis()-debounce_timer>250){ digitalWrite(fired_indicator_pin, LOW); } }