Need Interrupt Help

I ran into something a while ago, maybe it is related. There is something beyond my understanding about handling interrupts, so I can’t give you good advice. But I would try to use different pins for interrupts, maybe some other combination will work. Maybe some pins conflict when interrupt is attached to both of them.

I had interrupts working great when attached to pins D2, D3, D4, A0 and A1.

And I would also recommend some software debouncing, as @BulldogLowell recommends. But you might keep it for later, when interrups work well. I did mine in main loop instead of ISR handler (to keep code in ISR minimal). Something like this, although it doesn’t work well when interrupt events are independent, as any interrupt blocks everything else. Good enough for user input though. Just use more debounceTime variables if you need it.

// software debounce
#define             DEBOUNCE_TIMEOUT    200     // software debounce timeout
unsigned int debounceTime      = 0;

void loop() {
    unsigned int now = millis();
    if (now > debounceTime) {
        if (readingflag) {
            debounceTime    = now + DEBOUNCE_TIMEOUT;
            readingflag     = false;
            Serial.println("READING!");
        }

        // ... other flags handling follows
    }
    else {
        // just reset anything interrupt might trigger
        readingflag = false;
        memflag     = false;
        clearflag   = false;
        powerflag   = false;
    }
}

// Your ISRs here, unchanged...

And the topic with the problem I encountered: