Paso 1: Conectar el botón
Este es un interruptor momentáneo, con una posición estable (abierta) cuando no se ejerce ninguna fuerza y la realización (cerrado) cuando presiona. Es uno de lo más simple sensor electromecánico.
Conecte el botón como muestra en la foto de este paso.
(No ser impresionado por el tamaño de mi protoboard. Un pequeño será realmente más práctico).
El perno de la entrada-salida
El AVR (ATmega aka, es decir, el chip de Atmel alimentar la placa Arduino) tiene varios pines de I/O. I/O significa que ellos libremente configurables por software como entrada o salida.
Pin 2 será una buena opción para nuestro ejemplo. Que se utilizará para medir el estado del botón: presionado o liberado.
Resistencia de pull-up
La clavija debe ser conectada a en algún lugar mediante el botón. La pregunta es: donde.
Una primera idea sería ir a VCC. VCC es la denominación usual para la tensión de alimentación 5V aquí.
Así que cuando se presiona el botón, se conectaría el pin a VCC, y el software leería alto. Pero cuando se suelta el botón, el pin está conectado a ningún sitio, también conocido como "flotante" y estará expuesto a ruido, y el software leerá alta y baja de manera errática.
Así que la solución es utilizar un supuesto pull-up o pull-down resistor. Tal resistencia se asegura de que el perno está siempre conectado a GND o a VCC, directamente o a través de la resistencia, dependiendo de la posición del botón.
Afortunadamente, el chip AVR tiene internamente, un resistor de pull-up de 20 kOhm que puede ser conectado al pin (internamente). El pasador debe configurarse como entrada, y su valor, en esta situación, le dice si está conectado el pull-up (de lo contrario el valor define, cuando el pin es configurado como salida, su estado de salida).
Con esta tensión, a conectar la clavija a tierra a través del botón y tienen estas situaciones cuando se suelta el botón, pulsar respectivamente:
Button not pressed: VCC | 20K | | internal | | pull-up |_| | | _____ input ––––*––––––o–––––––––o o––––– GND pin released button
Entrada está aislada de tierra, tan sólo conectada a VCC a través de la resistencia. Ningún flujo actual.
Sin el resistor de pull-up, la entrada sería estar "flotando".
Button pressed: VCC | : 20K | | : internal | | : pull-up |_| : some current flows | `- - - - - - - - - -> | input ––––*––––––o–––––––––o–––––o––––– GND pin pushed button
Entrada ahora está conectada directamente a tierra. Algunos flujos actuales a través del resistor.
En ambos casos, ahora tenemos una situación claramente definida.
Consumo
Cuando se presiona el botón, el resistor tiene una diferencia de voltaje igual a VCC y una corriente fluye:
I = VCC / R
= 5 / 20.000 = 0.25 mA
Correspondiente a los consumidores el poder P:
P = VCC2 / R
= 52 / 20.000 = 1.25 mW
Esto no es mucho y se consume sólo cuando se pulsa el botón. A menudo, pull-up y las resistencias de pull-down tienen valores aún mayores, por lo tanto consume menos energía. Si no tienes razones concretas, utilizar este práctico 20 k interna pull-up.
Polaridad
Tenía un desplegable a nuestra disposición, habría conectado el pin a VCC en lugar de la tierra y lea alto sobre la prensa, que es más lógica. Pero ya que contamos con un pull-up solamente, tendremos que invertir la polaridad por el software, en el muestreo de pin.
Para más información sobre pins de I/O, siga http://www.arduino.cc/en/Tutorial/DigitalPins.
Programación
En el código a continuación se describe la configuración del perno AVR (como entrada y con pull-up activado).
Código
––––––––––8<––––––––––
#define BUTTON_PIN 2 void setup() { ... pinMode(BUTTON_PIN, INPUT); digitalWrite(BUTTON_PIN, HIGH); // connect internal pull-up ... } void loop() { ... }
––––––––––>8––––––––––