For others following along...
Sorry two small oversights in my earlier code sample - // <<——
#define ENABLE_PIN 3
#define PULSE_PIN. 4
bool count_enabled;
bool prev_enabled;
bool prev_pulse = false; // assumes positive logic
byte pulse_count = 0;
void setup() {
pinmode(ENABLE_PIN, INPUT); // assumes thesepins are driven
pinmode(PULSE_PUN, INPUT); // (not open-collector)
count_enabled = !digitalread(ENABLE_PIN); // capture idle state of pin
prev_enabled = !count_enabled; // <<—— ensure it is upside down
}
void loop() {
count_enabled = (digitalread(ENABLE_PIN) == true); //
if (count_enabled != prev_enabled) {
prev_enabled = count_enabled; // <<—— ready for next cycle
if (count_enabled) {
pulse_state = digitalread(PULSE_PIN);
if (pulse_state != prev_pulse) {
if (pulse_state) { // only count positive edges
pulse_count++;
}
prev_pulse = pulse_state;
}
} else { // enable pin has dropped // <<—— removed stray .
// process the pulse_count
// I’ll leave that to you...
pulse_count = 0; // reset the pulse count value
}
}
}