... pero el problema es que recibo 2 señales ALTAS cuando presiono y suelto el botón.
Esta es la parte que debería haber estado en tu pregunta. Usted está describiendo interruptor de rebote de contacto. Esto es común en todas las entradas del interruptor del microcontrolador. Tienes dos opciones para solucionarlo.
Figura1.Unaformadeondaderebotedecontactodeinterruptor.Fuente: Páginas de libros de laboratorio .
- Agregue un pequeño capacitor a través del interruptor: 100 nF sería suficiente. Esto mantendrá el voltaje por un tiempo después de que el interruptor se rompa o se rompa, con suerte hasta que el contacto haya dejado de rebotar.
- Haz el debouncing en tu programa. Esto significa que debe comprobar que un cambio de estado dura un tiempo razonable, tal vez de 50 ms a 100 ms antes de leerlo como un estado válido.
Hay miles de tutoriales en línea sobre este tema, así que no escribiré uno nuevo aquí. Vea el enlace para uno. Puede editar su pregunta para explicar cualquier otro problema que tenga y alguien responderá.