Capturing interrupt on both edges when it's set on RISING or FALLING
I've solved the issue with the reply by eventHandler to another post. Here it is;


  The problem you are having is because the button glitches are
  producing many interrupts on each button press. You can find a good
  description and a way of solving it using hardware here.
  
  Let me explain, when you press the button, the mechanical contact will
  have a transcient state in which it will fluctuate ON-OFF for a short
  period of time. The same effect might happen when you release the
  button.
  
  One way of solving this problem is using a capacitor parallel to the
  load. Another "easier" way would be done by software. The idea is to
  set a fixed arbitrary time in which you don't allow new interrupts.
  You could use the millis() or micros() library to set this time. The
  code would look something like this.

unsigned long lastInterrupt;

void ngt()
{

  if(millis() - lastInterrupt &gt; 10) // we set a 10ms no-interrupts window
    {    

    state = !state;

    lastInterrupt = millis();

    }
}

  
  This way you don't process new interrupts until 10ms have elapsed.
  
  Note: adjust the time to your requirements.