Skip to Content

Dispositivos de entrada para Arduino y otros MCUs – Una visión completa

Dispositivos de entrada para Arduino y otros MCUs – Una visión completa

Los dispositivos de entrada permiten que el Arduino y otros microprocesadores interactúen con el mundo. Sin ellos, un Arduino simplemente ejecutaría su programa sin poder responder al entorno externo o a comandos del usuario.

Aquí ofrecemos una visión general de todos los diferentes tipos de dispositivos de entrada que se pueden conectar a un Arduino o microprocesadores similares. Hablamos de sus principios funcionales y de qué aspectos tener en cuenta.

Los términos Entradas y Sensores se solapan en cierta medida. Aquí usaremos Entradas para referirnos a las entradas que provienen de la interacción humana o mecánica con el sistema. Por ejemplo, mediante botones, interruptores, pantallas táctiles o potenciómetros. Los sensores, en cambio, se usan para detectar o medir parámetros ambientales, como temperatura, luz, distancia o campos magnéticos.

Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.

Dispositivos de entrada

A continuación, analizamos todos los diferentes tipos de entradas, iniciadas por la interacción humana, que un Arduino o microprocesador similar puede recibir. La mayoría suelen ser botones e interruptores, pero hay otros.

Botones

Los botones vienen en todo tipo de formas, tamaños y colores. A continuación, una imagen de un botón pulsador típico que cierra la conexión eléctrica entre sus dos polos cuando se presiona y está abierto en caso contrario.

Push button input device

Interruptor pulsador momentáneo, 1A 250VAC SPST Mini interruptores pulsadores normalmente abiertos ( NO ). 

Al seleccionar un botón como dispositivo de entrada, hay varios aspectos a considerar. Primero, obviamente, el tamaño y relacionado con eso está el Voltaje y Corriente nominal del botón. Para controlar la entrada digital de una placa Arduino, botones pequeños que puedan conmutar hasta 12 Voltios y 0,1 Amperios son suficientes. Son muy baratos y es útil tener una selección de varios tipos para diferentes aplicaciones. Me gusta el siguiente set.

Different push button types

TWTADE 260pcs Micro interruptores táctiles momentáneos, 26 valores, 4 pines/3 pines/2 pines, kit surtido QC-26V.

Modo de operación ON-OFF
Corriente nominal 0,1 Amperios
Voltaje de operación 12 Voltios

Si quieres conmutar cargas típicas, como pequeños motores eléctricos o la alimentación por batería de tu Arduino, un interruptor con una clasificación de 12V y 1 a 3A estará bien. Ten en cuenta que conmutar aparatos conectados a la red eléctrica (110V – 220V) es peligroso. Debes seleccionar un interruptor clasificado para 110V o 220V (según tu país) y 5A o más (según la carga).

Normalmente abierto o cerrado

La mayoría de los botones están normalmente abiertos cuando no se presionan (marcados como NO). Esto significa que la corriente eléctrica no fluye cuando el botón no está presionado. Este es el tipo que usamos comúnmente. Pero también existen botones que están normalmente cerrados (NC) cuando no se presionan.

Botones momentáneos vs mantenidos

Además, la mayoría de los botones son momentáneos, es decir, vuelven a su posición por defecto al soltarlos. Un botón mantenido, en cambio, permanece en su posición cuando se presiona y necesita ser presionado de nuevo para volver a la normalidad. Usamos botones mantenidos principalmente para encender o apagar la alimentación eléctrica. Ten en cuenta que algunos botones incluso tienen tres estados como ON – NONE – OFF o similares.

Número de polos

Finalmente, la mayoría de los botones tienen dos contactos (también llamados dos polos) que se usan para hacer la conexión eléctrica. Sin embargo, hay botones con más polos y diferentes configuraciones de conmutación. Más sobre esto en la sección de Interruptores más abajo.

Algunos botones incluso están iluminados y tienen contactos adicionales para alimentar la luz integrada. ¡No los confundas!

Consideraciones clave

Clasificación

El factor más importante al seleccionar un botón es la clasificación correcta. El botón debe poder manejar el voltaje y la corriente del circuito que controla. También asegúrate de usar el voltaje y la polaridad correctos para botones iluminados.

Rebote

Los contactos dentro del botón están hechos de metal, que tiene cierta elasticidad. Esto causa que los contactos bounce durante un breve momento (unos pocos milisegundos) cuando se presiona el botón, en lugar de hacer contacto estable de inmediato. No obtenemos una transición de abierto a cerrado en forma de un patrón limpio, sino una transición inestable. Observa el efecto rebote a continuación:

Al leer el estado del botón con un microcontrolador, esto puede resultar en la lectura de múltiples pulsaciones en lugar de una sola. Normalmente necesitarás escribir un code for debouncing específico para un botón o añadir un debouncing circuit, usando una resistencia y un condensador. Tenemos un ejemplo en how to connect a push button to an Arduino.

Resistencias pull-up

Cuando un botón está abierto (no presionado), el pin al que está conectado puede fluctuar entre estados alto y bajo porque no está conectado a un voltaje definido. Este estado «flotante» puede llevar a lecturas impredecibles, ya que el pin funciona como una antena que capta ondas electromagnéticas del entorno.

Podemos usar pull-up resistors para conectar el pin a la fuente de voltaje (usualmente 5V o 3.3V). Esto asegura que esté en un estado definido (ALTO) cuando el botón no está presionado. Muchas placas Arduino tienen resistencias pull-up internas que se pueden activar por software usando pinMode(pin, INPUT_PULLUP).

Sin embargo, siempre es buena idea ser precavido y añadir una resistencia pull-up externa. Así puedes usar tu circuito con diferentes placas o en diferentes pines (que pueden no tener resistencias pull-up internas).

Resistencias limitadoras de corriente

Aunque no siempre es necesario al usar resistencias pull-up o pull-down, a veces es buena idea incluir una current limiting resistor en serie con un botón, especialmente si se conecta directamente a alimentación y tierra. Esto ayuda a prevenir un flujo excesivo de corriente cuando se presiona el botón.

Niveles lógicos

Finalmente, debemos tener cuidado con el different logic levels del Arduino (que suele ser 5V) y otros MCUs comunes, como el ESP32, que funciona con 3.3V. Por ejemplo, conectar 5V a una entrada de 3.3V en un ESP32 puede dañar el chip. De igual forma, usar más de 5V como entrada en un Arduino puede causar daños. Las resistencias limitadoras de corriente mencionadas pueden ofrecer cierta protección.

Interruptores

Al igual que los botones, los interruptores vienen en todo tipo de formas y tamaños. A continuación, un interruptor pequeño típico que puede usarse para conmutar entradas lógicas o cargas pequeñas:

A simple switch as input device

Chanzon SPDT Mini Micro Slide Switch 2 posiciones.

Nota : Elige los que tengan un paso de pines de 2,54 mm (0,1″) para que sean compatibles con protoboard.

Interruptores momentáneos vs mantenidos/bloqueantes

Los interruptores son esencialmente los mismos dispositivos de entrada que los botones, y a veces los botones se llaman interruptores. Pero mientras que los botones más usados son momentáneos, los interruptores suelen ser del tipo mantenido o bloqueante.

Sin embargo, también encontrarás interruptores momentáneos. Un tipo momentáneo que uso frecuentemente es este microinterruptor que requiere muy poca fuerza para accionarse y es ideal para detectar colisiones (en robots) o la apertura/cierre de puertas:

A micro switch

Cylewet 25Pcs AC 1A 125V 3Pin SPDT Limit Micro Switch con palanca de bisagra larga.

Si miras de cerca, verás las marcas C (Contacto), NO (Normalmente Abierto) y NC (Normalmente Cerrado) en los pines. Este es un interruptor SPST (Polo Simple, Tiro Simple) y hablaremos más sobre esto en la siguiente sección.

Terminología de contactos

Otra diferencia entre interruptores y botones es que los interruptores suelen venir con muchas más variaciones en la configuración de polos y tiros.

Los polos se refieren al número de circuitos separados que el interruptor puede controlar. Es esencialmente el número de entradas independientes que tiene un interruptor. Los tiros, en cambio, se refieren al número de caminos disponibles para cada polo. Describe a cuántas conexiones de salida puede conectarse o «lanzarse» cada polo.

La configuración más común, un interruptor simple, tiene configuración SPST (Polo Simple, Tiro Simple).

Un interruptor con dos polos y un tiro se llama DPST (Doble Polo, Tiro Simple).

Un interruptor DPST que he usado en muchos de mis proyectos es el siguiente. Aunque es pequeño, puede conmutar cargas considerables y es definitivamente suficiente para conmutar la alimentación por batería, por ejemplo. Ten en cuenta que este no puede insertarse en una protoboard.

A DPDT switch as input device

RuoFeng DPDT Toggle Switch AC 125V 6A ON/ON 6 terminales 2 posiciones

Configuraciones comunes

A continuación encontrarás una lista de configuraciones comunes de polos y tiros para interruptores. Según la aplicación, debes elegir el adecuado, pero los más usados probablemente sean los interruptores SPST y DPST.

Abreviatura Nombre Descripción
SPST Polo Simple, Tiro Simple Un interruptor simple de encendido-apagado
SPDT Polo Simple, Doble Tiro Un interruptor que puede desviar la corriente de un camino a otro
DPST Doble Polo, Tiro Simple Dos interruptores de encendido/apagado controlados por un solo mecanismo
DPDT Doble Polo, Doble Tiro Controla dos circuitos y tiene dos caminos para cada uno
3PST Triple Polo, Tiro Simple Tres interruptores de encendido/apagado controlados por un solo mecanismo
3PDT Triple Polo, Doble Tiro Controla tres circuitos, cada uno con dos caminos
4PST Cuádruple Polo, Tiro Simple Cuatro interruptores de encendido/apagado controlados por un solo mecanismo
4PDT Cuádruple Polo, Doble Tiro Controla cuatro circuitos, cada uno con dos caminos

Consideraciones clave

Las consideraciones clave para interruptores son las mismas que para botones. Asegúrate de que el interruptor tenga la clasificación adecuada para la carga conectada. Si el interruptor se usa para conmutar entradas lógicas, se recomiendan rebote, resistencias pull-up y posiblemente resistencias limitadoras de corriente. También presta atención a los niveles lógicos correctos (3.3V vs 5V) para las entradas.

Botones táctiles

Los botones táctiles son dispositivos de entrada diseñados para detectar el toque humano. El tipo más común mide la capacitancia, que cambia cuando el elemento sensor es tocado por un dedo (o un objeto metálico). El ESP32 has touch sensor pins y no requiere circuitería adicional para detectar el toque. Para Arduino y otros MCUs que no tienen soporte directo para sensores táctiles, hay módulos de sensores táctiles disponibles. A continuación un ejemplo de un módulo común:

A touch sensor as input device

BAEASU TTP223 TTP223B Módulo de sensor táctil capacitivo, módulo de botón con auto-bloqueo

Los son easy to connect and to use. En comparación con botones e interruptores mecánicos, tienen la ventaja de que pueden encapsularse dentro de una carcasa, quedando completamente protegidos contra polvo o agua. La mayoría también permite configurar un comportamiento de bloqueo o momentáneo, es decir, que la señal de salida permanezca alta tras un toque o no.

Consideraciones clave

Al usar módulos de sensores táctiles, hay algunos aspectos a considerar. Primero, son menos adecuados para aplicaciones de bajo consumo, ya que consumen energía. También son más vulnerables a interferencias electromagnéticas y a activaciones accidentales. Finalmente, no ofrecen retroalimentación táctil, pero la mayoría de los módulos incluyen un LED integrado que indica el estado del interruptor.

Teclados matriciales

Los teclados matriciales o keypads son esencialmente arreglos rectangulares de múltiples botones. Comúnmente, los botones son de tipo mecánico o capacitivo. A continuación una imagen de un keypad típico 4×4 que usa interruptores de membrana mecánicos:

A  4x4 keypad as input device

DEVMO 2PCS 4 x 4 Matriz de 16 teclas, teclado con interruptores de membrana

Como el número de teclas suele ser mayor que el número de entradas disponibles en un Arduino, no se direccionan individualmente. En su lugar, se usa un esquema de direccionamiento matricial. Organiza las teclas en columnas (C1…C4) y filas (R1…R4):

A keypad address matrix

Para un keypad 4×4 con 16 teclas, esto reduce el número de entradas GPIO necesarias de 16 a 8. We have a tutorial on how to connect a keypad to an Arduino.

Consideraciones clave

Los keypads, especialmente los grandes, suelen usar muchos pines GPIO valiosos. Sin embargo, usando I2C communication y un módulo de expansión IO adecuado, se puede eliminar este problema. Un módulo de expansión, como el siguiente, necesita solo los dos pines del bus I2C (SCL y SDA) para controlar 8 canales I/O.

An IO expansion board

HiLetgo 2pcs PCF8574 PCF8574T Placa de expansión IO, expansor I/O, módulo de evaluación y desarrollo I2C

El I2C Keypad library ofrece el software listo para conectar un keypad 4×4, 5×3, 6×2, 8×1 o más pequeño a un módulo de expansión basado en PCF8574. No solo Arduino, sino también el ESP32 y muchos otros MCUs soportan el bus I2C.

Pantallas táctiles

Una alternativa a un keypad como dispositivo de entrada es una pantalla táctil. Las pantallas táctiles suelen ser pantallas TFT, con detección táctil resistiva o capacitiva. Los tipos resistivos necesitan que se aplique presión sobre la pantalla para detectar el toque. Una pantalla táctil resistiva común es la siguiente de ELEGOO:

A touchscreen display as input device

ELEGOO UNO R3 Pantalla táctil TFT de 2,8 pulgadas con ranura para tarjeta SD

Controlar una pantalla táctil desde un Arduino es obviamente más complejo que controlar un keypad simple. Sin embargo, tenemos un tutorial sobre how to interface an Arduino with a touchscreen display.

Consideración clave

Aparte de la mayor complejidad, las pantallas táctiles son generalmente mucho menos robustas que los keypads y se rayan fácilmente. También consumen energía activamente, mientras que los keypads son dispositivos pasivos. Finalmente, la carga computacional para manejar una pantalla táctil es mucho mayor que la de un keypad. Esto también significa que una pantalla táctil generalmente no es tan rápida en respuesta como un keypad.

Encoders rotatorios

Los encoders rotatorios son dispositivos de entrada que convierten una rotación en códigos digitales. Normalmente emiten dos señales digitales o pulsos, a menudo llamados ‘DT’ y ‘CLK’ (o ‘A’ y ‘B’). Estos pulsos suelen estar desfasados 90°. Al monitorizar estas dos señales, podemos determinar la cantidad y dirección de la rotación.

A continuación un módulo común de encoder rotatorio adecuado para Arduino con 20 pulsos por rotación completa y un botón pulsador adicional.

A rotary encoder as input device

HiLetgo 5pcs Módulo de encoder rotatorio de 360 grados

Los casos de uso comunes para encoders rotatorios son control digital de volumen, selección de funciones (menús) y monitorización de velocidad, posición y dirección de motores. Son fáciles de usar y tenemos un tutorial sobre cómo how to interface a rotary encoder with an Arduino.

Consideración clave

La mayoría de los encoders rotatorios son mecánicamente similares a interruptores. Por lo tanto, debemos considerar los mismos posibles problemas que con los interruptores, como rebote, resistencias pull-up y nivel lógico (3.3V vs 5V). Además, si usamos sondeo para monitorizar los pulsos, el Arduino/código debe ser lo suficientemente rápido para no perder pulsos. Finalmente, los encoders rotatorios varían en su resolución (es decir, pulsos por rotación). Debemos seleccionar un encoder con resolución suficiente para nuestra aplicación.

Potenciómetros

Hasta ahora, todos los dispositivos de entrada presentados eran digitales. Generan señales digitales (ALTO, BAJO) y se conectan a los pines GPIO digitales. Los potenciómetros, en cambio, son dispositivos de entrada analógicos. Aquí está nuestro tutorial sobre how to control an LED with a potentiometer.

Internamente, un potenciómetro es una resistencia de tres terminales con un contacto deslizante o giratorio que forma un divisor de voltaje ajustable. Los valores típicos de resistencia para potenciómetros son 10K Ω o 100K Ω . A continuación un ejemplo de un potenciómetro común de 10K:

A Potentiometer as input device

HiLetgo 20pcs Potenciómetro de una sola junta WH148 10K B10K resistencias variables

Consideración clave

Asegúrate de conectar el potenciómetro a un pin GPIO analógico (A0, …) y usar analogRead() para leer el valor de entrada. Como la resistencia del potenciómetro puede cambiar con la temperatura, verás que el valor de entrada varía cuando el potenciómetro se calienta o enfría. También notarás fluctuaciones en el valor de entrada debido al ruido electromagnético captado por los cables. Finalmente, la resolución está limitada por el convertidor analógico-digital (ADC) del microcontrolador.

Joysticks

Un joystick está compuesto por dos potenciómetros dispuestos en ejes perpendiculares (X, Y) que se controlan mediante una palanca o mando central. A continuación un módulo común de joystick usado para Arduino:

Joystick as input device

WWZMDiB 6Pcs Módulo de joystick con botón de doble eje

Un joystick típico proporciona entrada sobre su posición a lo largo de sus ejes, usualmente X (horizontal) e Y (vertical) como valores analógicos. Muchos también tienen un interruptor adicional (botón de disparo), que genera una entrada digital. Consulta nuestro tutorial sobre how to use a joystick with an Arduino.

Consideración clave

Ten en cuenta que existen joysticks simplificados que no usan potenciómetros sino interruptores para indicar dirección. Son digitales por naturaleza. Por otro lado, también hay joysticks con más de dos ejes, por ejemplo para controlar direcciones X, Y y Z. Al conectar un módulo joystick a tu microprocesador, asegúrate de que los niveles lógicos coincidan (3.3V vs 5V). Las salidas analógicas deben conectarse a entradas analógicas (A0, A1) y leerse mediante analogRead(), mientras que el botón debe conectarse a una entrada digital y leerse mediante digitalRead().

Ratón USB

No puedes conectar directamente un ratón USB a un Arduino y usarlo como dispositivo de entrada. Necesitarías un shield USB, como el siguiente (específico para la placa Arduino que uses):

USB shield

ARCELI USB Host Shield para Arduino UNO MEGA 2560

Aquí tienes un tutorial sobre how to connect a mouse to an Arduino using a USB shield.

Consideración clave

Generalmente, es mejor conectar un joystick a un Arduino en lugar de intentar conectar un ratón USB mediante un shield USB. Puedes construir tu propio ratón usando dos encoders rotatorios o leer directamente los encoders rotatorios dentro de un ratón mecánico (antiguo).

Resumen

Aquí te hemos proporcionado una visión general de todos los diferentes tipos de dispositivos de entrada comúnmente usados con Arduino y microcontroladores similares. Para más detalles sobre cómo conectar estos diversos dispositivos, echa un vistazo a nuestro Articles on inputs and sensors y los enlaces en la publicación. También tenemos un overview article on all the different types of sensors you can connect to an Arduino.