27/11/2017 Leer un pulsador con Arduino
LUIS LLAMAS
Ingeniería, informática y diseño
TUTORIALES ARDUINO TUTORIALES ARDUINO BASICOS
LEER UN PULSADOR CON ARDUINO
2 SEPTIEMBRE, 2014
En el tutorial entradas digitales en Arduino vimos como leer un sensor
que proporcione una señal digital con dos niveles de tensión LOW y HIGH.
Nos quedó pendiente aprovechar las entradas digitales para leer el estado
de un interruptor o pulsador con Arduino.
Para ello necesitaremos realizar correctamente un montaje especí co
y la ayuda de dos nuevas amigas las resistencias de Pull Down y Pull Up.
Aunque ambos casos son muy similares, el montaje y el tipo de resistencia
https://www.luisllamas.es/leer-un-pulsador-con-arduino/ 1/11
27/11/2017 Leer un pulsador con Arduino
a usar dependerá de si queremos que al accionar el pulsador o interruptor
leamos un valor LOW o HIGH.
Para entender el funcionamiento de ambos montajes vamos a
presentar el razonamiento lógico por el cuál se llega al mismo, para lo
cuál utilizaremos dos montajes incorrectos que nos ayudarán a entender el
papel de cada elemento en el montaje de nitivo.
Por tanto, empezamos con el primer intento de realizar una lectura del
estado del pulsador.
Otra forma más avanzada de leer un pulsador es emplear
interrupciones y aplicar un debounce para ltrar la entrada, como
vemos en esta entrada
PRIMER INTENTO, CONEXIÓN DIRECTA
Nuestra primera idea para leer un pulsador podría ser conectar
directamente un PIN digital de Arduino a un valor de tensión de
referencia, ya sea este 0V o 5V. Al cerrar el pulsador la tensión en el PIN
sería el valor de referencia (0V o 5V depende del montaje) y podríamos
realizar la lectura como en cualquier entrada digital.
https://www.luisllamas.es/leer-un-pulsador-con-arduino/ 2/11
27/11/2017 Leer un pulsador con Arduino
¿Cuál es el problema? Bueno, esto funcionará cuando el interruptor
está cerrado. Pero, ¿Qué pasa cuando el interruptor está abierto? En
este caso estamos dejando el PIN totalmente desconectado de cualquier
tensión, algo que denominaremos estado de alta impedancia.
¿Qué valor registra un autómata si realizamos la medición en estado
de alta impedancia? Pues depende de varios factores, como la
construcción interna del autómata o el último estado al que haya estado
conectado. Pero, en resumen, la entrada está en un estado
indeterminado, es decir, que puede asumir cualquier valor. Por tanto es
necesario evitar esta situación en nuestros diseños.
¿Cómo podemos resolver este estado de indeterminación? Bueno,
esto nos lleva directamente a nuestro segundo intento.
MEJORANDO NUESTRA SOLUCIÓN, DOBLE
CONEXIÓN
Lo siguiente que podríamos pensar es conectar el PIN a dos
referencias de tensión, alternadas en función del estado del interruptor:
Para medir un valor LOW al accionar el interruptor, podemos conectar el
PIN de forma ja a 5V, y a 0V a través del interruptor. Con el interruptor
abierto leeríamos HIGH, y al cerrar el interruptor se forzaría 0V en el PIN,
por lo que leeríamos LOW.
Para medir un valor HIGH al accionar el interruptor, podemos conectar el
PIN de forma ja a 0V, y a 5V a través del interruptor. Con el interruptor
abierto leeríamos LOW, y al cerrar el interruptor se forzaría 5V en el PIN,
por lo que leeríamos HIGH.
https://www.luisllamas.es/leer-un-pulsador-con-arduino/ 3/11
27/11/2017 Leer un pulsador con Arduino
¿Cuál es el problema de este montaje? Pues que al pulsar el
interruptor estamos conectando directamente los valores de 0V y 5V, lo
que signi ca que estamos causando un cortocircuito. Esto provocaría el
paso de un elevado de corriente y un rápido calentamiento de
componentes y conductores.
¿Cómo evitar este cortocircuito? Bueno, estamos cerca. Esto lo
veremos a continuación en el montaje de nitivo.
Los cortocircuitos son fallos peligrosos. Además de dañar algún
componente podéis llegar a provocar un incendio. Ser cuidadosos.
El montaje tampoco funcionaría porque estaríamos conectando el
PIN simultáneamente a 0V y 5V, por lo que tendríamos nuevamente
una indeterminación, y la medición real dependería de la resistencia
de los conductores a ambos niveles de tensión.
MONTAJE CORRECTO, RESISTENCIAS DE
PULL-DOWN O PULL-UP
Como habíamos adelantado, para resolver el montaje correctamente
necesitaremos la presencia de dos nuevas amigas, las resistencias de Pull
https://www.luisllamas.es/leer-un-pulsador-con-arduino/ 4/11
27/11/2017 Leer un pulsador con Arduino
Down y Pull Up. Estas dos resistencias son un mecanismo básico, muy
habitual dentro del mundo de la electrónica y automatización.
Las resistencias de Pull-Down y Pull-Up se conectan entre el PIN
digital y una de las tensiones de referencia (0V o 5V) y “fuerzan” (de ahí
su nombre) el valor de la tensión a LOW o HIGH, respectivamente.
La resistencia de Pull-Up fuerza HIGH cuando el pulsador está abierto.
Cuando está cerrado el PIN se pone a LOW, la intensidad que circula se ve
limitada por esta resistencia
La resistencia de Pull-Down fuerza LOW cuando el pulsador está
abierto. Cuando está cerrado el PIN se pone a HIGH, y la intensidad que
circula se ve limitada por esta resistencia
Así es como quedaría el montaje nal en vista esquemática (la
conexión de puede realizar en empleando cualquiera de los PIN digital).
https://www.luisllamas.es/leer-un-pulsador-con-arduino/ 5/11
27/11/2017 Leer un pulsador con Arduino
Y así el cableado en una placa de prototipos.
Por último, la lectura del estado del PIN se realiza normalmente, tal y
como vimos en el tutorial entradas digitales en Arduino.
1 const int inputPin = 2;
2
3 int value = 0;
4
5 void setup() {
https://www.luisllamas.es/leer-un-pulsador-con-arduino/ 6/11
27/11/2017 Leer un pulsador con Arduino
6 Serial.begin(9600);
7 pinMode(inputPin, INPUT);
8 }
9
10 void loop(){
11 value = digitalRead(inputPin); //lectura digital de pin
12
13 //mandar mensaje a puerto serie en función del valor leido
14 if (value == HIGH) {
15 Serial.println("Encendido");
16 }
17 else {
18 Serial.println("Apagado");
19 }
20 delay(1000);
21 }
Arduino dispone de resistencias de Pull Up internas de 30k pero no
suelen ser usadas por dos motivos.
Tienen poca autoridad (valor de resistencia demasiado alto)
Si la con guramos incorrectamente desde el programa, podemos
generar un cortocircuto, por lo que es preferible conectara
físicamente para veri car que no nos la hemos dejado.
¿QUÉ VALOR DE RESISTENCIA ELEGIR?
El valor de la resistencia viene condicionado por la intensidad que
pasa al accionar el interruptor, y por un concepto llamado la “autoridad
del Pull Down/up” que está relacionado con el ruido en la medición.
Una resistencia muy pequeña, tendrá mucha autoridad, pero permitirá el
paso de una mayor corriente, lo que supone mayor consumo y mayor
calentamiento.
Una resistencia muy grande, dejará pasar poca corriente, pero tendrá poca
autoridad, por lo que será más susceptible a mediciones incorrectas
debidas a ruido.
Si te ha gustado esta entrada y quieres leer más sobre Arduino
puedes consultar la sección Tutoriales de Arduino
https://www.luisllamas.es/leer-un-pulsador-con-arduino/ 7/11
27/11/2017 Leer un pulsador con Arduino
Arduino,Arduino basico,Controles,Digitales,Entradas,I/O
PREVIOUS
REINAUGURACIÓN DE GUARDERÍA ANGELITOS EN EL ACTUR
ZARAGOZA
NEXT
¡CUMPLIMOS TRES AÑOS!
TAMBIÉN TE PUEDE GUSTAR
LIBRERÍA ARDUINO ASYNCSTEPPER
https://www.luisllamas.es/leer-un-pulsador-con-arduino/ 8/11
27/11/2017 Leer un pulsador con Arduino
TORRETA SERVO CONTROLADA POR ARDUINO: PROGRAMACIÓN
LIBRERÍA ARDUINO SIMPLESTEPPER
https://www.luisllamas.es/leer-un-pulsador-con-arduino/ 9/11
27/11/2017 Leer un pulsador con Arduino
TORRETA SERVO CONTROLADA POR ARDUINO: MONTAJE Y CONEXIÓN
LIBRERÍA ARDUINO ASYNCSERVO
TORRETA SERVO CONTROLADA POR ARDUINO: PRESUPUESTO
https://www.luisllamas.es/leer-un-pulsador-con-arduino/ 10/11
27/11/2017 Leer un pulsador con Arduino
¡DEJA UN COMENTARIO!...
Join the discussion
Sort by: newest|oldest|most voted
Victor Aguilar
Por n alguien que explica correctamente porqué se debe
Guest conectar un interruptor a + y -, el motivo, su función y porqué
colocar una resistencia. Llevo días en otros blogs buscando la
respuesta. Un diez amigo. Un abrazo de un principiante.
0 REPLY 1 year 10 months ago
luisllamas
Me alegro de que te haya servido, gracias a ti por tu
Guest comentario!
0 REPLY 1 year 10 months ago
Cristian Veloso
Muy bueno Luis, lo voy a tomar como base para un estudio que
Guest estoy realizando. un abrazo desde argentina!
0 REPLY 1 year 7 months ago
jorge
Estimado Luis, gracias por compartir estas librerias….. el tiempo
Guest que nos ahorras.
0 REPLY 5 months 29 days ago
https://www.luisllamas.es/leer-un-pulsador-con-arduino/ 11/11