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 más que un montón de botones puso-hacia fuera para permitir que al usuario entrados caracteres (ASCII) al ordenador. Si te estás rascando la cabeza en la parte de ASCII, no te preocupes, sólo representa el código para cada carácter.

En este punto en nuestro recorrido, debe ya ha configurado su computadora con WINAVR (o AVR-GCC para Linux) y ser capaces de programar el microcontrolador. También debe tener un circuito con un LED conectado en el microcontrolador. También hiciste el parpadeo del LED en el tutorial anterior.

Agregar un botón o un interruptor en el circuito permite que el microcontrolador recibir la señal humana. Otras formas de entrada para microcontroladores incluyen (pero no están limitados a) un teclado o un ratón, botones, interruptores, toque audio (a través de los micrófonos), pantallas y digitalizadores. Por supuesto hay muchos otros dispositivos que pueden aportar a un microcontrolador, pero estos pueden no activarse por la acción humana voluntaria. Colocar estos dispositivos en la categoría "detección", como estos dispositivos típicamente sensación condiciones o eventos y reaccionar en consecuencia. Tales ejemplos incluyen sensores de inclinación (acelerómetros), detectando la energía infrarroja o control de temperatura.

Así que, aquí está el flaco en los botones y conmutadores mecánicos: son imperfectos! Las dos familias de mecánica y electrónica van juntos como los Montescos y Capuletos. Es decir, que no! Cuando se pulsa un botón, se puede esperar una respuesta limpia electrónicamente. Bueno, siento ser portador de malas noticias, pero la señal a menudo rebota un poco antes de que se instala a su nivel de tensión correcta. En esta imagen muestro este fenómeno. Si la tensión se fija en 5 voltios antes de que el botón es presionado y entonces va a cero voltios cuando se presiona el botón, habrá un efecto "rebote" de la tensión entre estos dos valores. Entonces ¿por qué no todos nuestros aparatos de cocina o nuestros coches exhiben este problema?

Como podrá ver en la imagen, he insertado un condensador entre las dos clavijas. Esto suavizará la señal. El efecto de este condensador puede verse en un osciloscopio, como se muestra en el video. Pero si no tienes un osciloscopio de los tuyos, entonces sólo deberás confiar en mí. Otra manera podríamos aliviar este problema es agregar un tiempo de retraso en el programa, justo después de que el microcontrolador detecta el primer evento de prensa botón. Sin embargo, añadir un componente discreto a un circuito para solucionar un problema electrónica es a menudo una mejor manera que agregar código a retrasar, ya que ese código introducirá otra fuente potencial de un error en el programa, también requerirá más tiempo de procesador para ejecutar. En adicional, este código también puede resultar en el desarrollo de otros problemas como continúa el resto del código a ejecutar.

Pero, ¿qué valores del condensador debemos seleccionar? En última instancia, dependerá de cómo mal el botón realiza con respecto a este problema en particular. Algunos botones pueden mostrar un comportamiento de rebote tremendo, sin embargo, otras tendrán muy poco. Un valor de condensador baja como 1.0nF (nanofarads) reacciona muy rápidamente, con poco o ningún efecto en el rebote. Por el contrario, un condensador de mayor valor como 220nF (que todavía es bastante pequeño en términos de condensadores) proporcionará una transición lenta desde el arranque a la tensión final (es decir de 5v a 0v). La transición considerada una capacidad de 220nF todavía es bastante rápida en el sentido de un mundo real sin embargo y así se puede utilizar en el bajo rendimiento de botones.

Usted puede haber notado por ahora que la placa ha cambiado algo, para darle el circuito un aspecto más limpio. Los cables anteriores eran demasiado largos, y el entorno de compilación comenzó a recibir desordenado como he añadido más componentes al circuito. Por lo tanto, un rediseño de la placa estaba en orden, por lo que espetó un segundo tablero al final de la primera. Pero usted puede preguntar--¿por qué hago esto si había suficientes lazos restantes en el otro extremo? Bueno, lo hice por la pulcritud, y también me ha gustado donde fue colocado el microcontrolador. Usted puede ser capaz de decir que he alineado con los números así que no necesito contar pasadores todo el tiempo, simplemente dejo la numeración de la placa me dicen que es cada pin en el MCU. También atados del todo de las barras de positivo (+) en ambas tarjetas y lo mismo a todos los carriles de negativo (-), así. Esto me permitirá tener VCC o GND cerca, en cualquier lugar en el protoboard.

Entonces, ¿cómo programa el microcontrolador ATmega32 (u otro MCU que puede aplicar a este experimento) para hacer uso del botón nuevo? Bueno es realmente muy sencillo! Sólo tenemos que añadir dos líneas de inicialización justo antes del bucle infinito y un bloque de una condición dentro del bucle. Las dos líneas de inicialización añadidas antes de que el bucle de incluir una declaración para establecer PINB1 para entrada asignando un "0" como esta:

 DDRB &= ~(1 << PINB1); 

También estableceremos pin B1 "alto", lo que significa que el pin va a leer 5 voltios hasta que se presiona el botón; momento en el que el perno leerá cero voltios. Para configurar el pin a una alta tensión de 5 voltios, añadimos esta línea de código:

 PORTB |= 1 << PINB1; 

Dentro del programa, debe ser una decisión: una decisión para ejecutar algún código cuando el botón es presionado, o ejecutar algún otro código si no se presiona el botón. Esta tarea en forma de una sentencia condicional se llama un "si lo" declaración. Hace exactamente lo que dice. Al igual que el equivalente en inglés... Si (la tecla), saltar hacia arriba y hacia abajo, más soporte sobre su cabeza. la acción "saltar arriba y abajo" sucederá mientras el botón esté presionado. Pero mientras no se presiona el botón, volverá a ocurrir otra acción "soporte en la cabeza". El if código de declaración:

 if (bit_is_clear(PINB, 1)) 

especifica una prueba de una condición especificada dentro de los paréntesis. El nombre "bit_is_clear" representa una función que toma dos argumentos. En este caso el primer argumento es PINB, que describe el conjunto de pines que estamos especificando. El segundo argumento representa que pin que estamos comprobando, y en este caso estamos preocupados con el pin #1 en el conjunto.

¿Tal vez se pregunte qué tipo de cosas podemos poner en el bloque de código controlado por la condición "si"? Que todo depende de lo que usted quiere su programa (como el circuito) hacer. En este caso, como una manera de mostrar que este botón haga algo y funciona, tengo la LED parpadea lentamente (cada 100 ms), mientras que el botón no está pulsado y parpadea más rápido (cada 10ms) mientras presiona.

Aquí están los cambios realizados en el anterior programa parpadeo de LED:

#include < avr/io.h > < util/delay.h > del #include int Main {DDRB | = 1 << PINB0; DDRB & = ~ (1 << PINB1); PORTB | = 1 << PINB1; mientras que (1) {PORTB ^ = 1 << PINB0; #include <avr/io.h>#include <util/delay.h> int main(void){DDRB |= 1 << PINB0;DDRB &= ~(1 << PINB1); PORTB |= 1 << PINB1;while (1){ PORTB ^= 1 << PINB0; if (bit_is_clear(PINB, 1)) { _delay_ms(10); //Fast} else { _delay_ms(100); //Slow, from previous } }} 

Eso es todo! Hay muy poca programación necesaria para utilizar un botón, parpadean LED y hace las cosas!

Artículos Relacionados

Decoración Origami caja de regalo: Parte II, agregar Bling

Decoración Origami caja de regalo: Parte II, agregar Bling

Este tutorial será sobre las opciones que elegí para decorar mis cajas. Mientras que podría muy bien decir "hacer lo que quiera", estoy esperando que mis decoraciones sencillas así como algunos consejos desde mi experiencia ayudará a estimular s
Principio microcontroladores parte 9: Botón y Software contra rebotes métodos

Principio microcontroladores parte 9: Botón y Software contra rebotes métodos

En esta parte del tutorial vamos a discutir el botón y software contra rebotes.Queremos estudiar botón contra rebotes primero y en detalle, así que tenemos una buena comprensión de lo que ello conlleva. Botón contra rebotes es importante y no debe se
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 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 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
Robótica básica parte 2 - agregar el microcontrolador y el Motor controlador

Robótica básica parte 2 - agregar el microcontrolador y el Motor controlador

Esta semana nuestros alumnos en la escuela de canto de largo (http://www.longridgeschool.org) une la electrónica en el chasis del robot que se completó en la parte 1:.Encontramos que había que sustituir a los separadores en el robot porque eran demas
Agregar un botón derecho del ratón a un Macbook

Agregar un botón derecho del ratón a un Macbook

esto muestra cómo añadir un botón derecho del ratón para el trackpad de un Macbook--haga clic en el lado izquierdo del botón existente, todo eso, haga clic en la derecha y click derecho. Funciona en Windows, Linux y Leopard.Paso 1: Encontrar la elect
Cómo agregar un botón a una pulsera de amistad

Cómo agregar un botón a una pulsera de amistad

en este mal tutorial muestra cómo agregar un botón a una pulsera de la amistad. Fuentes: Una pulsera acabada pegar un botónPaso 1: Encontrar un botón Haz un botón que es un poco más grande que el bucle. Trate de usar uno de los colores en tu pulsera.
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 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 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 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 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
¿Agregar un botón de disparo para el ratón mediante un temporizador 555

¿Agregar un botón de disparo para el ratón mediante un temporizador 555

hace que el dedo se cansa fácilmente jugando juegos de video? ¿Alguna vez ha deseado que usted podría pwn n00bs más rápido que la velocidad de la luz alguna vez sin sudar ni una? Este Instructable le mostrará cómo.Paso 1: Lo que usted necesita Origin