Use external interrupt and timer interrupt to remove debouncing