Насколько я понимаю, вместо обнаружения одного перехода вы обнаруживаете несколько переходов, это связано с тем, что контроллер опрашивает с гораздо большей частотой, поэтому он обнаруживает переход несколько раз.
Чтобы предотвратить это, вам понадобится механизм, обеспечивающий удержание отдельного перехода в заданном состоянии в течение определенного периода времени. Этот механизм называется устранением подпрыгивания. Другим преимуществом этого метода является то, что он предотвращает / отфильтровывает механический шум.
Некоторые ссылки ниже, которые объяснят это лучше: https://www.arduino.cc/en/tutorial/debounce
Надеюсь, это поможет ..! https://whatis.techtarget.com/definition/debouncing