0% acharam este documento útil (0 voto)
14 visualizações6 páginas

04 - Push Button Switch

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
14 visualizações6 páginas

04 - Push Button Switch

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 6

4 Pushbutton Switches

4.1 Introdução teórica


Agora que você já é capaz de acionar cargas simples através do seu Arduino (Leds),
vamos aprender a trabalhar com o nosso primeiro sensor, o botão.

O botão é um dos dispositivos mais populares quando se fala de interface humano-


máquina. Seja no seu smartphone, nos elevadores ou até mesmo o próprio interruptor da luz da
sua sala, os botões são responsáveis por disparar ações em diversos sistemas eletrônicos
presentes no nosso dia-a-dia. Com um simples apertar você pode ligar uma lâmpada, travar a
tela do seu celular ou interagir com um jogo eletrônico.

Vamos então entender mais sobre esse recurso simples e barato, que é extremamente
versátil.

4.1.1 Entradas digitais


No capítulo anterior você viu como os pinos do Arduino funcionam como saída digital,
onde a energia flui por eles até a carga. Entretanto, eles também podem ser configurados para
fazer o contrário, deixando com que a energia flua de fora para dentro, podendo então ser
mensurada. Assim fica fácil detectar quando a tensão no pino é 5 V e quando é 0 V.

Então quando queremos usar um botão com nossa placa, basta conectá-lo
corretamente a um pino que esteja configurado como entrada e poderemos detectar se o botão
está pressionado ou solto.

Pinos configurados como entrada (INPUT) com pinMode() são ditos estarem em um
estado de alta-impedância. Se você configurar um pino como INPUT, e ler o estado de um botão
conectado a 5V, por exemplo, quando o botão estiver em
estado aberto, a entrada estará "flutuando", resultando em
leituras imprevisíveis. Isso acontece porque quando o botão
está aberto, o pino não está conectado a nenhuma tensão. Para
assegurar uma leitura correta quando o botão está aberto, um
resistor de pull-up ou pull-down deve ser usado.

O propósito desse resistor é colocar o pino em um estado conhecido quando o botão


estiver aberto. Um resistor de 10KΩ ohm é usado geralmente, pois possui valor baixo o
suficiente para prevenir confiavelmente o estado flutuante, ao mesmo tempo que é grande o
suficiente para não usar muita corrente quando o botão estiver fechado.

Se um resistor de pull-down é usado, o pino de entrada estará em LOW quando o botão


estiver aberto e HIGH quando o botão estiver pressionado. Em contraparte se um resistor de
pull-up é usado, o pino de entrada estará em HIGH quando o botão estiver aberto e LOW quando
o botão estiver pressionado.

Além disso temos mais uma opção. O microcontrolador ATmega na maioria das placas
Arduino possui resistores pull-up internos (resistores conectados a alimentação internamente)
que você pode acessar. Se você preferir usar estes em vez de resistores de pull-up externos,
você pode usar o argumento INPUT_PULLUP na função pinMode().
Cuidado! Pinos configurados como entradas com ambos INPUT ou INPUT_PULLUP
podem ser danificados ou destruídos se são conectados a tensões abaixo de zero (tensões
negativas) ou acima da tensão de alimentação (5V ou 3V).

4.1.2 Resistor de pull-down


Se você simplesmente conectar um dos pares de terminais ao VCC e o outro ao pino do
Arduino, quando você pressionar o botão o pino terá 5 V. Mas qual sinal chegará ao pino do
Arduino quando o botão não estiver pressionado? Nada? Na verdade, a melhor resposta seria
"qualquer coisa", pois como não tem nenhum sinal válido (5 V ou 0 V) conectado a ele, o
caminho fica livre para os ruídos existentes no circuito, chamamos isso de estado de flutuação.
O pino do Arduino então poderá assumir um valor lógico verdadeiro ou falso a qualquer
momento.

Para retirar essas flutuações que prejudicam a interpretação dos sinais, nós utilizamos
normalmente um resistor de pull-down. Ele atua garantindo que o sinal de GND chegue até o
pino enquanto o botão não for pressionado, e protege o circuito contra um curto circuito
quando você aperta o botão. Veja um exemplo de ligação na imagem abaixo.

4.1.3 Pushbutton
O botão é um componente que conecta dois
pontos do circuito quando está pressionado. Um
botão, ou pulsador, é utilizado para ativar alguma
função. Os botões são em geral ativados ao serem
pulsados. Um botão em um dispositivo eletrônico
funciona geralmente como um interruptor elétrico. No
seu interior há dois contatos, e se é um dispositivo
normalmente fechado ou normalmente aberto, ao
pulsar o botão, se ativará a função inversa à que se
está realizando no momento.
4.2 Lendo um botão
4.2.1 Lista de materiais
Você precisará dos seguintes materiais:

• 1x Placa Arduino com Cabo USB;


• 1x LED 5mm;
• 1x Resistor 300Ω;
• 1x Chave Momentânea (PushButton);
• 1x Resistor 10kΩ;
• 1x Protoboard;
• Jumpers.

4.2.2 Diagrama de montagem


Colocando um resistor para limitar a corrente do LED e um resistor de pull-down no
botão, podemos então montar o circuito para esse exemplo conforme a imagem abaixo:

4.2.3 Código Fonte


Ao carregar o código abaixo em seu Arduino, você poderá ver o LED acender quando
pressionar o botão e apagar quando soltar.

Você já tinha aprendido anteriormente a configuração do pino do LED como saída e o


seu acionamento. Para configurar o pino do botão como entrada, também utilizamos a função
pinMode, só que dessa vez usamos INPUT no lugar de OUTPUT.
E para realizar a "escrita digital" no pino do LED usamos digitalWrite, enquanto que para
realizar a leitura digital se usa digitalRead. Ao contrário da função de escrita, que não retorna
nenhum valor, a função de leitura nos retorna o valor atual do pino entre parêntesis (nesse caso,
o 9). Isso significa que se o botão estiver pressionado, o valor da tensão no pino é de 5 V e a
função retornará HIGH. Enquanto o botão estiver solto, o valor é de 0 V, retornando então LOW.

Até o momento só tínhamos construídos códigos sequenciais, que sempre executavam


uma linha atrás da outra. Agora nós precisamos realizar algum tipo de desvio, pois acender ou
apagar o LED depende de uma condição: o botão estar ou não pressionado.

É para isso que entra a estrutura condicional if...else. Ela realiza um teste lógico para
decidir entre dois trechos de código. Ela executa o primeiro se a condição for verdadeira e o
segundo se a condição for falsa. Observe o fluxograma que explica graficamente o que acontece
durante a execução do código:

Ai entra outra questão interessante. Quando começamos a realizar testes lógicos, é


natural que precisemos comparar as coisas. Seja dois valores, resultados de funções, variáveis
ou quaisquer outras grandezas, podemos utilizar os operadores de comparação para definir qual
é a relação entre eles. Veja na tabela abaixo quais são os operadores de comparação aceitos
pela linguagem do Arduino e alguns exemplos.

Em nosso código utilizamos o operador == para verificar se o resultado da função


digitalRead(9) é igual a HIGH. Somente quando essa comparação é verdadeira é que o LED
acende.

4.3 Segurança no trabalho em primeiro lugar!


Para evitar acidentes no ambiente de trabalho, uma regra de segurança em vários
equipamentos industriais é obrigar que um usuário aperte dois botões, um com cada mão, para
acionar uma máquina. É o caso da máquina de corte usada em fábricas de papel. Com a seguinte
montagem podemos simular esta situação. O LED somente acende se os dois botões do circuito
estiverem pressionados.
4.3.1 Lista de materiais
Você precisará dos seguintes materiais:

• 1x Placa Arduino com Cabo USB;


• 1x LED 5mm;
• 1x Resistor 300Ω;
• 2x Chave Momentânea (PushButton);
• 2x Resistor 10kΩ;
• 1x Protoboard;
• Jumpers.

4.3.2 Diagrama de montagem


Monte o circuito para esse exemplo conforme a imagem abaixo:

4.3.3 Código Fonte


Ao carregar o código abaixo em seu Arduino, você poderá ver o LED acender quando
pressionar os dois botões simultaneamente.
Para a montagem desse exercício utilizamos os operadores booleanos. Alem do “E”
lógico que utilizamos nesse exemplo ainda possuímos o operador “OU” lógico e a negação
conforme pode ser observado abaixo:

• && (“E” lógico) Verdadeiro apenas se os dois operandos forem verdadeiros, ou seja, a
primeira condição e a segunda forem verdadeiras;
• || (“OU” lógico) Verdadeiro se algum dos operandos for verdadeiro, ou seja, se a
primeira ou a segunda condição for verdadeira;
• ! (negação) Verdadeiro apenas se o operando for falso.

4.4 Indo além


4.4.1 Exercício 1
Botões e LEDs existem em praticamente todos os projetos de eletrônica, portanto, você
já deu um passo importante na sua jornada com o Arduino. Um bom exercício é adicionar mais
um botão, mais um LED e replicar o código para que esse segundo LED apague quando o botão
for pressionado. Lembre-se que quando o botão está solto, o valor lido é igual a LOW.

4.4.2 Exercício 2
Faça mais uma modificação no código fonte do exemplo 4.3 para que você possa
acender o LED do pino 13 pressionando ou o botão 1 ou o botão 2. Ao deixar de pressionar, o
LED se apaga.

Você também pode gostar