Skip to Content

Dispositivos de entrada para Arduino e outros MCUs – Uma visão completa

Dispositivos de entrada para Arduino e outros MCUs – Uma visão completa

Os dispositivos de entrada permitem que o Arduino e outros microprocessadores interajam com o mundo. Sem eles, um Arduino simplesmente executaria o seu programa sem qualquer forma de responder ao ambiente externo ou a comandos do utilizador.

Aqui fornecemos uma visão geral de todos os diferentes tipos de dispositivos de entrada que podem ser ligados a um Arduino ou microprocessadores semelhantes. Discutimos os seus princípios funcionais e o que deve ter em atenção.

Os termos Entradas e Sensores têm alguma sobreposição. Aqui usaremos Entradas para nos referirmos a entradas originadas pela interação humana ou mecânica com o sistema. Por exemplo, através de botões, interruptores, ecrãs táteis ou potenciômetros. Sensores, por outro lado, são usados para detetar ou medir parâmetros ambientais, como temperatura, luz, distância ou 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 seguir, vamos analisar todos os diferentes tipos de entradas, iniciadas pela interação humana, que um Arduino ou microprocessador semelhante pode receber. Na maioria das vezes, serão botões e interruptores, mas existem outros.

Botões

Os botões existem em todos os tipos de formas, tamanhos e cores. Abaixo está a imagem de um botão típico que fecha a ligação elétrica entre os seus dois polos quando pressionado e está aberto caso contrário.

Push button input device

Interruptor de botão momentâneo, 1A 250VAC SPST Mini Pushbutton Switches Normalmente Aberto ( NA ). 

Ao selecionar um botão como dispositivo de entrada, há vários aspetos a considerar. Em primeiro lugar, obviamente, o tamanho e relacionado com isso está o Tensão e Corrente nominal do botão. Para controlar a entrada digital de uma placa Arduino, botões pequenos que podem comutar até 12 Volts e 0,1 Ampere são suficientes. São muito baratos e é útil ter uma seleção de vários tipos para diferentes aplicações. Gosto do conjunto abaixo.

Different push button types

TWTADE 260pcs Micro Momentary Tact Switch Tactile Push Button Switch 26 Values 4 pin/3 pin/2 pin Assortment Kit QC-26V.

Modo de operação LIGA-DESLIGA
Corrente nominal 0,1 Amperes
Tensão de operação 12 Volts

Se quiser comutar cargas típicas, como pequenos eletromotores ou a alimentação da bateria para o seu Arduino, um interruptor com classificação para 12V e 1 a 3A será adequado. Note que comutar aparelhos ligados à rede elétrica (110V – 220V) é perigoso! Deve selecionar um interruptor classificado para 110V ou 220V (dependendo do seu país) e 5A ou mais (dependendo da carga).

Normalmente aberto ou fechado

A maioria dos botões está normalmente aberta quando não pressionada (marcada como NA). Isso significa que a corrente elétrica não flui quando o botão não está pressionado. Este é o tipo que usamos habitualmente. Mas também existem botões que estão normalmente fechados (NF) quando não pressionados.

Botões momentâneos vs mantidos

A maioria dos botões são momentâneos, ou seja, voltam à sua posição padrão quando soltos. Um botão mantido, por outro lado, mantém-se na sua posição quando pressionado e precisa ser pressionado novamente para voltar ao normal. Usamos botões mantidos principalmente para ligar ou desligar a alimentação elétrica. Note que alguns botões têm até três estados, como LIGA – NENHUM – DESLIGA ou semelhante.

Número de polos

Finalmente, a maioria dos botões tem dois contactos (também chamados de dois polos) usados para fazer a ligação elétrica. No entanto, existem botões com mais polos e diferentes configurações de comutação. Mais sobre isso na secção de Interruptores abaixo.

Alguns botões são até iluminados e têm contactos adicionais para fornecer energia à luz integrada. Não os confunda!

Considerações chave

Classificação

O fator mais importante ao selecionar um botão é a classificação correta. O botão deve ser capaz de suportar a tensão e corrente do circuito que controla. Também certifique-se de usar a tensão e polaridade corretas para botões iluminados.

Debouncing

Os contactos dentro do botão são feitos de metal, que tem certa elasticidade. Isso causa que os contactos bounce por um curto período (alguns milissegundos) quando o botão é pressionado, em vez de fazer contacto estável imediatamente. Não temos uma transição de aberto para fechado em forma de padrão limpo, mas uma transição instável. Veja o efeito de bouncing abaixo:

Ao ler o estado do botão com um microcontrolador, isso pode resultar na leitura de múltiplos pressionamentos em vez de um único. Normalmente, será necessário escrever um code for debouncing específico para o botão ou adicionar um debouncing circuit, usando um resistor e um condensador. Temos um exemplo em how to connect a push button to an Arduino.

Resistores pull-up

Quando um botão está aberto (não pressionado), o pino a que está ligado pode flutuar entre estados alto e baixo porque não está ligado a uma tensão definida. Este estado “flutuante” pode levar a leituras imprevisíveis, já que o pino funciona essencialmente como uma antena que capta ondas eletromagnéticas do ambiente.

Podemos usar pull-up resistors para ligar o pino à fonte de tensão (normalmente 5V ou 3,3V). Isso garante que ele esteja num estado definido (ALTO), quando o botão não está pressionado. Muitas placas Arduino têm resistores pull-up internos que podem ser ativados por software usando pinMode(pin, INPUT_PULLUP).

No entanto, é sempre uma boa ideia estar do lado seguro e adicionar um resistor pull-up. Assim, pode usar o seu circuito com diferentes placas ou em diferentes pinos (que podem não ter resistores pull-up internos).

Resistores limitadores de corrente

Embora nem sempre sejam necessários ao usar resistores pull-up ou pull-down, por vezes é boa ideia incluir um current limiting resistor em série com um botão, especialmente se estiver a ligar diretamente à alimentação e ao terra. Isso ajuda a evitar fluxo excessivo de corrente quando o botão é pressionado.

Níveis lógicos

Finalmente, devemos ter atenção ao different logic levels do Arduino (que normalmente é 5V) e de outros MCUs comuns, como o ESP32, que opera com 3,3V. Por exemplo, ligar 5V a uma entrada de 3,3V num ESP32 pode danificar o chip. Da mesma forma, usar mais de 5V como entrada num Arduino pode causar danos. Os resistores limitadores de corrente mencionados podem oferecer alguma proteção.

Interruptores

Semelhante aos botões, os interruptores vêm em todos os tipos de formas e tamanhos. Abaixo um interruptor pequeno típico que pode ser usado para comutar entradas lógicas ou pequenas cargas:

A simple switch as input device

Chanzon SPDT Mini Micro Slide Switch 2 Posições.

Nota : Escolha os que têm um espaçamento de pinos de 2,54 mm (0,1″) para serem compatíveis com breadboards.

Interruptores momentâneos vs mantidos/travados

Os interruptores são essencialmente os mesmos dispositivos de entrada que os botões – e às vezes os botões são chamados de interruptores. Mas enquanto os botões mais usados são momentâneos, os interruptores são tipicamente do tipo mantido ou travado.

No entanto, também encontrará interruptores momentâneos. Um tipo momentâneo que uso frequentemente é este microinterruptor que requer pouca força para atuar e é ótimo para detetar colisões (para robôs) ou a abertura/fecho de portas:

A micro switch

Cylewet 25Pcs AC 1A 125V 3Pin SPDT Limit Micro Switch Long Hinge Lever.

Se olhar de perto, verá as marcações C (Contacto), NA (Normalmente Aberto) e NF (Normalmente Fechado) para os pinos. Este é um interruptor do tipo SPST (Polo Único, Uma Via) e falamos mais sobre isso na próxima secção.

Terminologia dos contactos

Outra diferença entre interruptores e botões é que os interruptores tendem a ter muitas mais variações na configuração de Polo e Via.

Polo refere-se ao número de circuitos separados que o interruptor pode controlar. Essencialmente, é o número de entradas independentes que um interruptor tem. Via, por outro lado, refere-se ao número de caminhos disponíveis para cada polo. Descreve quantas ligações de saída cada polo pode ser conectado ou “comutado”.

A configuração mais comum, um interruptor simples, tem configuração SPST (Polo Único, Uma Via).

Um interruptor com dois Polos e uma Via é chamado DPST (Duplo Polo, Uma Via).

Um interruptor DPST que tenho usado em muitos dos meus projetos é o seguinte. Embora seja pequeno, pode comutar cargas consideráveis e é definitivamente suficiente para comutar a alimentação da bateria, por exemplo. Note que este não pode ser inserido numa breadboard.

A DPDT switch as input device

RuoFeng DPDT Toggle Switch AC 125V 6A Amps ON/ON 6 Terminais 2 Posições

Configurações comuns

Abaixo encontrará uma lista das configurações comuns de Polo e Via para interruptores. Dependendo da aplicação, deve escolher a correta, mas as mais usadas são provavelmente os interruptores SPST e DPST.

Abreviação Nome Descrição
SPST Polo Único, Uma Via Um simples interruptor liga-desliga
SPDT Polo Único, Duas Vias Um interruptor que pode desviar a corrente de um caminho para outro
DPST Duplo Polo, Uma Via Dois interruptores liga-desliga controlados por um único mecanismo
DPDT Duplo Polo, Duas Vias Controla dois circuitos e tem dois caminhos para cada um
3PST Triplo Polo, Uma Via Três interruptores liga-desliga controlados por um único mecanismo
3PDT Triplo Polo, Duas Vias Controla três circuitos, cada um com dois caminhos
4PST Quádruplo Polo, Uma Via Quatro interruptores liga-desliga controlados por um único mecanismo
4PDT Quádruplo Polo, Duas Vias Controla quatro circuitos, cada um com dois caminhos

Considerações chave

As considerações chave para interruptores são as mesmas que para botões. Certifique-se de que o interruptor tem a classificação adequada para a carga ligada. Se o interruptor for usado para comutar entradas lógicas, são recomendados debouncing, resistores pull-up e potencialmente resistores limitadores de corrente. Também tenha atenção aos níveis lógicos corretos (3,3V vs 5V) para as entradas.

Botões táteis

Os botões táteis são dispositivos de entrada projetados para detetar o toque humano. O tipo mais comum mede a capacitância, que muda quando o elemento sensor é tocado por um dedo (ou um objeto metálico). O ESP32 has touch sensor pins e não requer circuitos adicionais para detetar o toque. Para o Arduino e outros MCUs que não têm suporte direto para sensores táteis, existem módulos de sensor tátil disponíveis. Abaixo um exemplo de um módulo comum:

A touch sensor as input device

BAEASU TTP223 TTP223B Capacitive Touch Sensor Switch Module, Self-Lock Switch Button Module

São easy to connect and to use. Comparados com botões e interruptores mecânicos, têm a vantagem de poderem ser encapsulados dentro de uma caixa, ficando completamente protegidos contra poeira ou água. A maioria dos tipos também permite configurar um comportamento de travamento ou momentâneo, ou seja, o sinal de saída mantém-se alto após o toque ou não.

Considerações chave

Ao usar módulos de sensor tátil, alguns aspetos valem a pena considerar. Em primeiro lugar, são menos adequados para aplicações de baixo consumo, pois consomem energia. São também mais vulneráveis a interferências eletromagnéticas e geralmente a ativações acidentais. Finalmente, não têm feedback tátil, mas a maioria dos módulos vem com um LED integrado que indica o estado do interruptor.

Teclados matriciais

Teclados matriciais ou teclados são essencialmente arranjos retangulares de múltiplos botões. Normalmente, os botões são do tipo mecânico ou capacitivo. Abaixo uma imagem de um teclado matricial típico 4×4 que usa interruptores de membrana mecânicos:

A  4x4 keypad as input device

DEVMO 2PCS 4 x 4 Matrix Array 16 Key Membrane Switch Keypad Keyboard

Como o número de teclas é frequentemente maior que o número de entradas disponíveis num Arduino, elas não são endereçadas individualmente. Em vez disso, é usado um esquema de endereçamento matricial. Organiza as teclas em colunas (C1…C4) e linhas (R1…R4):

A keypad address matrix

Para um teclado 4×4 com 16 teclas, isso reduz o número de entradas GPIO necessárias de 16 para 8. We have a tutorial on how to connect a keypad to an Arduino.

Considerações chave

Teclados, especialmente os maiores, tendem a usar muitos pinos GPIO valiosos. No entanto, usando I2C communication e um módulo de expansão IO adequado, pode eliminar este problema. Um módulo de expansão, como o abaixo, precisa apenas dos dois pinos do barramento I2C (SCL & SDA) para controlar 8 canais I/O.

An IO expansion board

HiLetgo 2pcs PCF8574 PCF8574T IO Expansion Board I/O Expander I2C Evaluation Develop Module

O I2C Keypad library oferece o software pronto para ligar um teclado 4×4, 5×3, 6×2, 8×1 ou menor a um módulo de expansão PCF8574. Não só o Arduino, mas também o ESP32 e muitos outros MCUs suportam o barramento I2C.

Ecrãs táteis

Uma alternativa a um teclado como dispositivo de entrada é um ecrã tátil. Os ecrãs táteis são geralmente ecrãs TFT, com deteção tátil resistiva ou capacitiva. Os tipos resistivos precisam que se aplique pressão no ecrã para detetar o toque. Um ecrã tátil resistivo comum é o seguinte da ELEGOO:

A touchscreen display as input device

ELEGOO UNO R3 2.8 Inches TFT Touch Screen with SD Card Socket

Controlar um ecrã tátil a partir de um Arduino é obviamente mais complexo do que controlar um teclado simples. No entanto, temos um tutorial sobre how to interface an Arduino with a touchscreen display.

Consideração chave

Para além da complexidade aumentada, os ecrãs táteis são geralmente muito menos robustos que os teclados e riscam-se facilmente. Também consomem energia ativamente, enquanto os teclados são dispositivos passivos. Finalmente, a carga computacional para operar um ecrã tátil é muito maior do que a de um teclado. Isso também significa que um ecrã tátil geralmente não é tão responsivo como um teclado.

Codificadores rotativos

Os codificadores rotativos são dispositivos de entrada que convertem uma rotação em códigos digitais. Normalmente, produzem dois sinais digitais ou pulsos, frequentemente chamados ‘DT’ e ‘CLK’ (ou ‘A’ e ‘B’). Estes pulsos estão geralmente defasados 90°. Monitorizando estes dois sinais, podemos determinar a quantidade e a direção da rotação.

Abaixo está um módulo comum de codificador rotativo adequado para Arduino com 20 pulsos por rotação completa e um botão extra.

A rotary encoder as input device

HiLetgo 5pcs 360 Degrees Rotary Encoder Module

Usos comuns para codificadores rotativos são controlo digital de volume, seleção de funções (menu) e monitorização da velocidade, posição e direção de motores. São fáceis de usar e temos um tutorial sobre como how to interface a rotary encoder with an Arduino.

Consideração chave

A maioria dos codificadores rotativos é mecanicamente semelhante a interruptores. Consequentemente, temos de considerar os mesmos potenciais problemas que com interruptores, como debouncing, resistores pull-up e nível lógico (3,3V vs 5V). Além disso, se usarmos polling para monitorizar os pulsos, o Arduino/código deve ser rápido o suficiente para não perder pulsos. Finalmente, os codificadores rotativos variam na sua resolução (isto é, pulsos por rotação). Precisamos de escolher um codificador com resolução suficiente para a nossa aplicação.

Potenciômetros

Até agora, todos os dispositivos de entrada apresentados eram digitais. Eles geram sinais digitais (ALTO, BAIXO) e são ligados aos pinos digitais GPIO. Os potenciômetros, por outro lado, são dispositivos de entrada analógicos. Aqui está o nosso tutorial sobre how to control an LED with a potentiometer.

Internamente, um potenciômetro é um resistor de três terminais com um contacto deslizante ou rotativo que forma um divisor de tensão ajustável. Valores típicos de resistência para potenciômetros são 10K Ω ou 100K Ω . Veja um exemplo de um potenciômetro comum de 10K abaixo:

A Potentiometer as input device

HiLetgo 20pcs WH148 Single-Joint Potentiometer 10K B10K Variable Resistors

Consideração chave

Certifique-se de ligar o potenciômetro a um pino analógico GPIO (A0, …) e usar analogRead() para ler o valor de entrada. Como a resistência do potenciômetro pode mudar com a temperatura, verá o valor de entrada variar quando o potenciômetro aquece ou arrefece. Também verá flutuações no valor de entrada devido a ruído eletromagnético captado pelos fios. Finalmente, a resolução é limitada pelo conversor analógico-digital (ADC) do microcontrolador.

Joysticks

Um joystick é composto por dois potenciômetros dispostos em eixos perpendiculares (X, Y) controlados por um stick ou botão central. Abaixo está um módulo comum de joystick usado para Arduino:

Joystick as input device

WWZMDiB 6Pcs Dual-Axis Button Joystick Module

Um joystick típico fornece entrada sobre a sua posição ao longo dos seus eixos, normalmente X (horizontal) e Y (vertical) como valores analógicos. Muitos deles também têm um interruptor adicional (botão de disparo), que gera uma entrada digital. Veja o nosso tutorial sobre how to use a joystick with an Arduino.

Consideração chave

Note que existem joysticks simplificados que não usam potenciômetros mas interruptores para indicar direção. São digitais por natureza. Por outro lado, existem joysticks com mais de dois eixos. Por exemplo, para controlar as direções X, Y e Z. Ao ligar um módulo joystick ao seu microprocessador, certifique-se de que os níveis lógicos coincidem (3,3V vs 5V). As saídas analógicas devem ser ligadas a entradas analógicas (A0, A1) e lidas via analogRead(), enquanto o botão deve ser ligado a uma entrada digital e lido via digitalRead().

Rato USB

Não pode ligar diretamente um rato USB a um Arduino e usá-lo como dispositivo de entrada. Precisaria de um escudo USB, como o abaixo (especificamente para a placa Arduino que está a usar):

USB shield

ARCELI USB Host Shield for Arduino UNO MEGA 2560

Aqui está um tutorial sobre how to connect a mouse to an Arduino using a USB shield.

Consideração chave

Geralmente, é melhor ligar um joystick a um Arduino do que tentar ligar um rato USB via escudo USB. Pode construir o seu próprio rato, usando dois codificadores rotativos ou ler diretamente os codificadores rotativos dentro de um rato mecânico (antigo).

Resumo

Aqui fornecemos uma visão geral de todos os diferentes tipos de dispositivos de entrada usados com Arduino e microcontroladores semelhantes. Para mais detalhes sobre como ligar estes vários dispositivos, consulte o nosso Articles on inputs and sensors e os links no post. Também temos um overview article on all the different types of sensors you can connect to an Arduino.