Los cables no hacen el contacto adecuado/interfieren

Quiero registrar las pulsaciones de botones a través de un programa de Python que escribí con una Raspberry Pi 3. Mis botones están conectados tanto a tierra como a los pines GPIO 22 y 27. Sin embargo, cuando se presionan los botones, no está dando un verdadero verdadero pero cambia muy rápido, así que obtengo algo como 'Verdadero, Falso, Verdadero, Verdadero, Falso, Falso, Falso, Verdadero, Verdadero' cuando debería ser todo verdadero.

Sin embargo, cuando no se presiona el botón, da un falso constante. He revisado todos los cables y probado con y sin resistencias (10k y 4.7k), pero dan el mismo resultado.

¿Hay alguna forma de solucionar este problema? También probé con diferentes interruptores, pero todos dan el mismo resultado. Son cables con cables de puente estándar.

Muestre un esquema de cómo los ha cableado exactamente y cómo (¿pulgadas?) ha configurado los pines.
¿Está usando 'presionado' como verbo, y estamos hablando del rebote de 10 mS de la respuesta de Olin, o como sustantivo, el estado de estar presionado, y estamos hablando de los segundos que deberían ser verdaderos una vez que el rebote ¿Se ha detenido?
El rebote de contacto intermitente y poco confiable es normal para cualquier interruptor deficiente. Al agregar una derivación C a través del interruptor de manera que RC> intervalo de sondeo, el voltaje del interruptor rebota al cargar y mantener. El tiempo de caída RC se puede controlar con 1M=R. Suponiendo que el interruptor es <100 ohmios de carbono y que el aumento de R a Vdd (máx.) es 1 M, C puede ser 10 nF. para 10mS =T que debería exceder el tiempo de rebote.

Respuestas (2)

Esto es lo que se llama rebote . Debe esperar que cualquier interruptor mecánico haga eso por hasta unos pocos 10s de ms en conexión y desconexión.

Para lidiar con esto, realiza la eliminación de rebotes en el software. Por lo general, eso significa que no considera válido un nuevo estado de botón hasta que haya visto ese estado continuamente durante aproximadamente 50 ms.

Si el rebote persiste mientras mantiene presionado el botón, entonces el botón está defectuoso. Reemplázalo.

Quien votó negativo, ¿qué crees que está mal exactamente?
¡Gracias por su respuesta! No rebota , porque incluso cuando pruebo cada 1/10 de segundo, el problema persiste. Cuando no hay un cable conectado, es un 0 constante, como debería ser. Cuando hay un cable conectado al pin GPIO, está cambiando entre 1 y 0, por lo que obtienes algo como esto: 0000001111111000001111110000000000000111111 Cuando ese cable está conectado a tierra (se presiona el botón) da un 0 constante, que encuentro un poco un poco extraño.
@its: Algo no cuadra. Parece que esta entrada es de alta impedancia, y con solo un cable conectado está captando ruido. Sin embargo, eso es inconsistente con lo que dijiste en la pregunta. Muestre un esquema y explique exactamente qué sucede cuando se presiona el botón y cuando no. La parte del cable no tiene sentido.
¡Yo realmente aprecio tu esfuerzo! Lo arreglé agregando una resistencia desplegable (corríjame si me equivoco) a tierra y en lugar de conectar el botón a tierra, lo conecté a 3.3v. Ahora funciona sin problemas (todavía). ¡Gracias por sus rápidas respuestas y que tenga un buen día!

La mayoría de los tutoriales dicen que debe tener solo dos cables conectados al botón: uno desde el pin GPIO al botón y otro desde el botón a tierra. Esto no funcionó para mí como debería. Todavía tengo el 'cable GPIO' conectado al botón, pero al lado hay una resistencia de 10k conectada a tierra. El otro sonido del botón lo conecté a 3.3v. ¡Asegúrese de no usar nada por encima de 3.3v, porque los pines GPIO no son capaces de manejar nada por encima de 3.3v!