Principio microcontroladores parte 9: Botón y Software contra rebotes métodos (2 / 2 paso)

Paso 2: Software contra rebotes

Así que ¿por qué necesitamos ir sobre un nuevo método cuando uno parece funcionar bien? Bien, el método de software debounce es esencialmente libre si lo permite el ciclo de programa espacial y el microcontrolador. Con sólo unas pocas líneas de código, puede proporcionar mucho más control sobre cómo los métodos debouncing funcionan con el botón te está usando. Contra rebotes en hardware pueden añadir costes adicionales a cada tablero desarrollado, y es más difícil de determinar una buena contra rebotes para todos los interruptores de botón que se utilizará. Sin embargo, si desea conservar los ciclos de ejecución del programa, es mejor ir con la ruta del hardware.

Mi método de contra rebotes con software utiliza solamente dos variables que miden el nivel de confianza de la prensa del botón actual. Con la ayuda de la variable presionada en el botón contra rebotes, habrá un flujo de 1 cuando se presiona el botón y una corriente de 0 cuando se suelta el botón. Si allí está rebotando en, la corriente de 1 o de 0 será muy corta, así que podemos aprovechar de este mediante la introducción de dos variables que miden la longitud de estas corrientes. Las variables se llaman, Pressed_Confidence_Level, para medir el estado presionado del botón y Released_Confidence_Level para medir el estado liberado del botón.

Así que, si se presiona el botón, el Pressed_Confidence_Level se levantará y lo mismo con Released_Confidence_Level cuando se suelta el botón. Sin embargo, estas variables también se convierten en restablecer a 0 si existe la condición opuesta. Por ejemplo, dicen que se presionó el botón por una vez y el Pressed_Confidence_Level se convirtió en un número muy grande, como 153.356. Si se suelta el botón (o un rebote sucedió), se reiniciará la variable a 0. El truco de estas variables es determinar un buen umbral para determinar una buena pulsación o liberación de estado. Decir, si la Pressed_Confidence_Level muestra que después de levantarse a 500, que este número s una fuerte indicación de una prensa del botón, a continuación, el LED cambiará una vez. Lo mismo pasa con el Released_Confidence_Level porque rebote podría suceder también en un comunicado de botón. Por lo tanto, vamos a ver cómo hacemos esto en el código:

 int main(void) { DDRB |= 1 << PINB0; //For Notes on what these actions mean PORTB ^= 1 << PINB0; DDRB |= 1 << PINB2; DDRB &= ~(1 << PINB1); PORTB |= 1 << PINB1; int Pressed = 0; int Pressed_Confidence_Level = 0; //Measure button press confidence int Released_Confidence_Level = 0; //Measure button release confidence while (1) { if (bit_is_clear(PINB, 1)) { Pressed_Confidence_Level ++; //Increase Pressed Confidence Released_Confidence_Level = 0; //Reset released button confidence since there is a button press if (Pressed_Confidence_Level >500) //Indicator of good button press { if (Pressed == 0) { PORTB ^= 1 << PINB0; PORTB ^= 1 << PINB2; Pressed = 1; } //Zero it so a new pressed condition can be evaluated Pressed_Confidence_Level = 0; } } else { Released_Confidence_Level ++; //This works just like the pressed Pressed_Confidence_Level = 0; //Reset pressed button confidence since the button is released if (Released_Confidence_Level >500 { Pressed = 0; Released_Confidence_Level = 0; } } } } 

Artículos Relacionados

Arduino: Software contra rebotes en función de la interrupción...

Arduino: Software contra rebotes en función de la interrupción...

Hi everybody!Recientemente estaba trabajando en un proyecto donde quería medir las RPM de una de las ruedas en mi coche, y de eso calcular la velocidad, realizar un seguimiento de la distancia de los Driven etc. con un Arduino.Quería usar un imán y u
Principio microcontroladores parte 8: Agregar un botón al microcontrolador y lo que es hacer algo

Principio microcontroladores parte 8: Agregar un botón al microcontrolador y lo que es hacer algo

Una manera muy simple y fácil para proporcionar para la interacción humana con el microcontrolador es insertar un botón en el circuito. Comunicarse con equipos mediante dos principales dispositivos de entrada: el ratón y el teclado. Un teclado no es
Principio microcontroladores parte 2: Creación de una interfaz SPI del programador para el microcontrolador

Principio microcontroladores parte 2: Creación de una interfaz SPI del programador para el microcontrolador

Hola, esperamos que te ha gustado la parte 1 del principio microcontroladores. Vamos a mover a lo largo de a parte 2 y empezar a hablar acerca de cómo obtener tu microcontrolador para comunicarse con una computadora e interfaces.Por lo tanto, en este
Principio microcontroladores parte 6: Escribir el primer programa para encender un LED

Principio microcontroladores parte 6: Escribir el primer programa para encender un LED

Sé que estás listo para escribir el primer programa. Han sido a través de mucho hasta ahora! Mientras estamos en el tema, vamos a recapitular los acontecimientos. Salió y compró el Microcontrolador AVR de Atmel de su elección. Elegí theATMega32 para
Principio microcontroladores parte 3: Transferencia de un programa en el microcontrolador (conductores)

Principio microcontroladores parte 3: Transferencia de un programa en el microcontrolador (conductores)

¡ Bienvenido a parte 3. Este es un pequeño tutorial que tratará simplemente cargar los controladores para hacer que el programador pueda comunicarse con el ordenador correctamente.Tenga en cuenta que a veces los dispositivos TinyISP y USBAVR ahora vi
Principio microcontroladores parte 5: Pruebas del programador y la construcción del primer circuito

Principio microcontroladores parte 5: Pruebas del programador y la construcción del primer circuito

Hasta ahora, tienes todo el software instalado y había construido la interfaz que proporcionará una conveniente conexión del programador al microcontrolador (MCU). Para el siguiente paso, usted necesitará un protoboard (los números son muy útiles), u
Principio microcontroladores parte 11: Temporizadores, contadores y el reloj del microcontrolador

Principio microcontroladores parte 11: Temporizadores, contadores y el reloj del microcontrolador

Temporizadores y contadores son tan esenciales que usted verá muchos ejemplos que a lo largo de esta serie. Como el nombre lo dice, se utilizan temporizadores para tiempo y contando. Cuenta y el tiempo le permite hacer algunas cosas muy prolijo como
Principio microcontroladores parte 13: Introducción a la interfaz de LCD

Principio microcontroladores parte 13: Introducción a la interfaz de LCD

El microcontrolador es una maravillosa pieza de ingeniería y puede hacer muchas cosas (con la ayuda de alguna gran programación), pero sigue siendo una caja negra opaca. Si desea compartir información, o mostrar lo que está tratando de hacer, necesit
Principio microcontroladores parte 7: Revisar el primer programa para hacer el parpadeo del LED

Principio microcontroladores parte 7: Revisar el primer programa para hacer el parpadeo del LED

Ha escrito el primer programa, que enciende un LED. sí, eso fue espectacular! Bueno, no realmente, pero vamos a introducir un poco de locura para el LED. Le daremos una personalidad "bipolar" por lo que es blink. Luego paso a otro nivel y hacer
Principio microcontroladores parte 4: Instalar el entorno de programación (WinAVR)

Principio microcontroladores parte 4: Instalar el entorno de programación (WinAVR)

Bienvenido al siguiente paso en nuestra serie. Vamos a introducir algunos elementos básicos de programación ahora. Este tutorial es simplemente acerca de cómo instalar el entorno de programación. El entorno de programación que vamos a usar se llama W
Tutorial de microcontroladores parte 10: Crear un juego (el botón)

Tutorial de microcontroladores parte 10: Crear un juego (el botón)

Ahora estamos listos para aplicar lo que sabemos y hacer un juego real. El juego consistirá en un par de botones y dos conjuntos de LEDs (2 filas de 7). El objetivo del juego es ver que entre dos personas puede presionar su botón más veces en la meno
Interrupciones contra rebotes con MPIDE parte 2: filtros RC

Interrupciones contra rebotes con MPIDE parte 2: filtros RC

¡ Hola chicos! ¿Estás listo para la segunda parte de mi serie debouncing?"Pero Jay!" Puedo te escucho preguntando: "No sabía que hubo una primera"! ¿O tal vez que dijo "espera, contra rebotes? ¿Qué es eso? No estoy muy seguro. Int
Interrupciones contra rebotes con MPIDE parte 1: fuerza bruta

Interrupciones contra rebotes con MPIDE parte 1: fuerza bruta

Ya es hora ¿no?¡Bienvenido! Si has estado siguiendo a mis I'bles hasta este punto, he mostrado dos maneras diferentes de configurar interrupciones en MPIDE usando attachInterrupt() y setIntVector(). En el primero de esos tutoriales, explicó lo que "r
Arduino Nano: Contra rebotes y alternar botón con Visuino

Arduino Nano: Contra rebotes y alternar botón con Visuino

Botones conectado a Arduino se pueden utilizar fácilmente como interruptor de encendido/apagado. Desgraciadamente los botones tienden a crear ruido que despiden cuando conectar/desconectar, hacer la funcionalidad de alternar no fiable. El ruido puede