Tutorial de Arduino botón (2 / 6 paso)

Paso 2: Toma de muestras, Deglitching y Estados de lectura

Fallos

Los botones son como muchas cosas: imperfecto. Incluso cuando da una firme sensación mecánica, generan un par de oscilaciones cuando el botón de posición de cambios.

Estas oscilaciones se denominan interferencias o rebotes. Se puede eliminar agregando un condensador (introducción de algo de retraso), o por software.

Filtrado por muestreo

A menudo, la aplicación de Arduino es lazo ()-base, es decir, hace algo, y luego duerme un rato, varias veces. Puede buscar el código del botón estado muestra como:

 void loop() { // handle button boolean button_pressed = read_button(); // do other things do_stuff(button_pressed); // sleep a moment before next iteration delay(DELAY); } 

Esto significa que al menos demorar elapse milisegundos entre muestreos sucesivos de botón. Función de retardo, esto nos hará insensibles a las interferencias. La respuesta no es totalmente exacto, pero en gran medida suficiente: habrá alguna variación en la magnitud del retraso. Debe asegurarse que las cosas que hacemos durante cada ciclo tardan una "pequeña" y comparables para cada iteración.

La primera foto de este paso muestra los problemas y la toma de muestras periódica (indicado en azul).

El estado de lectura

El código siguiente muestra cómo se realiza el muestreo periódico. Cuando el botón se ve como un punto no presiona, es enviado a la línea serie; Cuando el botón es pulsado, se envía un carácter de intercalación.

La segunda foto de este paso muestra la salida serial, una pulsación larga seguida de dos cortas pulsaciones.

Programación

En el código a continuación, tenga en cuenta que he elegido un nombre de variable (button_pressed) que representa un alto nivel de abstracción (el estado de botón) y no el estado eléctrico (botón, llevando a cabo o no, ni eléctrico valor leído en el pasador), que sería confuso por el hecho de que, debido a la resistencia de pull-up, el perno Lee alta cuando se suelta el botón.

Pro/contras

Aplicación muy simple. Adecuado para el control continuo (e.g. pedal de descanso).

Inadecuado control incremental (por ejemplo control de volumen incremental)--que se explica en el siguiente paso.

Código

––––––––––8<––––––––––

 #define BUTTON_PIN 2 // Button #define DELAY 20 // Delay per loop in ms void setup() { pinMode(BUTTON_PIN, INPUT); digitalWrite(BUTTON_PIN, HIGH); // pull-up Serial.begin(9600); } boolean handle_button() { int button_pressed = !digitalRead(BUTTON_PIN); // pin low -> pressed return button_pressed; } void loop() { // handle button boolean button_pressed = handle_button(); // do other things Serial.print(button_pressed ? "^" : "."); // add newline sometimes static int counter = 0; if ((++counter & 0x3f) == 0) Serial.println(); delay(DELAY); } 

––––––––––>8––––––––––

Artículos Relacionados

Cómo utilizar el Sensor de flujo de agua - Tutorial de Arduino

Cómo utilizar el Sensor de flujo de agua - Tutorial de Arduino

En este tutorial usted aprenderá cómo utilizar un sensor de flujo de agua con una placa Arduino.El sensor de flujo de agua consiste en un cuerpo de válvula de plástico, un rotor de agua y un sensor de efecto hall. Cuando el agua fluye a través del ro
Cómo utilizar el Tutorial de Arduino de sensor de DHT-11

Cómo utilizar el Tutorial de Arduino de sensor de DHT-11

La DHT-11 es una salida digital de humedad relativa y temperatura. Utiliza un sensor de humedad capacitivo y un termistor para medir el aire circundante. Comparado con el DHT22, este sensor es menos precisa, menos precisa y trabaja en un rango menor
Tutorial de Arduino - organizar tus proyectos

Tutorial de Arduino - organizar tus proyectos

si usted ha tenido éxito en algunos proyectos de arduino, Felicidades! Puede ser motivado para asumir un proyecto más amplio.Pero como te tomas en un proyecto más amplio, el protoboard se convierte en messier y messier, como un plato de espagueti (al
Cómo utilizar el Sensor infrarrojo Sharp (GP2Y0A41SK0F) - Tutorial de Arduino

Cómo utilizar el Sensor infrarrojo Sharp (GP2Y0A41SK0F) - Tutorial de Arduino

En este tutorial usaremos el sensor de infrarrojos Sharp (GP2Y0A41SK0F) para medir la distancia de un objeto.Sensores IR trabajar mediante el uso de un sensor de luz específico para detectar un seleccionar longitud de onda de luz en el espectro infra
Tutorial de Arduino Bundle.: Arduino Kit de experimentación:. (ARDX)

Tutorial de Arduino Bundle.: Arduino Kit de experimentación:. (ARDX)

¿Interesado en hacer proyectos aseados con un Arduino pero no está seguro de dónde empezar?Aquí es fácil de seguir guía acerca de cómo conectar y utilizar un conjunto de componentes electrónicos.(shameless plug)¿Interesados en hacer todo?Kits complet
Cómo utilizar el Sensor de Adafruit BMP280 - Tutorial de Arduino

Cómo utilizar el Sensor de Adafruit BMP280 - Tutorial de Arduino

En este tutorial vamos a utilizar el sensor de Adafruit BMP280. Este sensor puede medir la presión barométrica y la temperatura con muy buena precisión. Porque la presión cambia con la altitud podemos también usarlo como un altímetro con una precisió
Cómo: varios botones en el Pin analógico 1 - Tutorial de Arduino

Cómo: varios botones en el Pin analógico 1 - Tutorial de Arduino

La placa de Arduino uno tiene 12 pines de I/O digitales disponible y 6 pines de entrada analógicas, a veces, en proyectos complejos o 'grandes', corremos de pines digitales. En este tutorial usted aprenderá cómo utilizar varios botones en un pin anal
Cómo utilizar los módulos XBee como transmisor y receptor - Tutorial de Arduino

Cómo utilizar los módulos XBee como transmisor y receptor - Tutorial de Arduino

En este tutorial utilizaremos dos módulos xBee (serie 1) con la placa de Arduino uno. Configuraremos a actuar como un transmisor y receptor para controlar el brillo de un LED sin cables mediante un potenciómetro.La pila de xBee - serie 1 - módulos to
Tutorial de Arduino - teclados numéricos

Tutorial de Arduino - teclados numéricos

este es un ejemplo de uno de mis tutoriales de Arduino.Teclados numéricos puede proporcionar una alternativa sencilla para el usuario final para varias interfaces para sus proyectos. O si usted necesita un montón de botones, usted puede ahorrar mucho
Cómo desaparecer un LED - Tutorial de Arduino

Cómo desaparecer un LED - Tutorial de Arduino

En este ejemplo aprenderá a desvanecerse un LED mediante la función analogWrite(). AnalogWrite utiliza modulación de anchura de pulso (PWM), digital pin y apagado muy rápidamente, para crear un efecto de desvanecimiento.Antes de empezar vamos a apren
Tutorial de Arduino Wireless SD Shield

Tutorial de Arduino Wireless SD Shield

como su nombre indica, el escudo de Arduino Wireless SD sirve dos funciones. Ante todo, este escudo permite que fácilmente la interfaz con los módulos de transceptor de Xbee para crear malla de redes y otros dispositivos inalámbricos. En segundo luga
Tutorial de Arduino defusable bomba (cuenta regresiva)

Tutorial de Arduino defusable bomba (cuenta regresiva)

Por qué hice esto.Hay otros tutoriales de hacer relojes de alarma y otras bombas defusable, son realmente buenos. pero se a complicado para mis necesidades. Se trata de una simple bomba de cuenta regresiva y glamur.Así que si usted está buscando un s
Tutorial de Arduino Robot

Tutorial de Arduino Robot

Estaba buscando la base de datos Instructable un tutorial para el Robot oficial de Arduino, pero no he podido encontrar uno! Así que mad este tutorial para ayudar a otros que necesitan poco un poco de ayuda con su nuevo Arduino Robot.Paso 1: Configur
Cómo controlar una tira de LED RGB - Tutorial de Arduino

Cómo controlar una tira de LED RGB - Tutorial de Arduino

En este tutorial vamos a utilizar una tira con 8 LED ' s RGB con la placa de Arduino uno. Usaremos la biblioteca de NeoPixel de Adafruit para cambiar el color de cada led.Vamos a empezar!Paso 1: Lo que se necesitaPara este proyecto necesitarás:Arduin