Teach lesson
Programação visual com Arduino real (3/4): entradas e decisões
Os estudantes leem uma entrada real, conferem se ela muda e usam uma condição com limiar para controlar o LED integrado.
Learning Outcomes
Ler uma entrada e confirmar que ela muda antes de decidir uma saída.
Usar uma condição
se / senãocom uma comparação e um limiar.Diferenciar entrada digital e entrada analógica com um exemplo real.
Student activity preview
Activity Content
Preview only. In a class session, students can fill in responses and submit their work to the teacher.
Entrada, limiar e decisão
10 min
Uma entrada é informação que a placa lê do exterior. Há dois tipos:
- Entrada digital: só tem dois estados, como um botão pressionado / não pressionado
(ou HIGH / LOW).
- Entrada analógica: tem muitos valores possíveis. Em uma placa Arduino Uno,
uma leitura analógica dá um número de 0 a 1023 (por exemplo, a posição de
um potenciômetro, que é uma peça com um botão giratório).
Um sensor é um componente que produz uma dessas leituras. Um limiar é o
valor de corte que você usa para transformar uma leitura analógica (muitos
números) em uma decisão de sim/não. Exemplo: "se a leitura for maior ou igual a
500, acenda o LED; senão, apague-o". 500 é o limiar.
Lembre-se da estrutura do editor: Arduino configuração / Arduino run first
executa uma vez ao iniciar; Arduino loop infinito / Arduino loop forever
se repete sem parar. A leitura da entrada e a decisão ficam no loop infinito
para que a placa confira o valor muitas vezes.
O que significa usar um limiar de 500 em uma leitura analógica que vai de 0 a 1023?
Escreva uma diferença entre uma entrada digital e uma entrada analógica.
Ler e conferir a entrada
16 min
Antes de decidir, confira se você consegue ler a entrada e se ela muda. Essa
verificação é essencial: se a entrada não muda, nenhuma decisão vai funcionar.
Abra
arduino-visual-board.Caminho principal (analógico): em Entrada/Saída (
Input/Output, se a interface estiver em inglês;Entrada/Salida, se estiver em espanhol), use Ler pino analógico (read analog pin#) e comece pelo pino A0.Para *ver* a leitura, você pode usar opcionalmente Comunicações (
Comms): adicione Configurar serial 9600 bps e um bloco Escrever/imprimir com a leitura. Se o laboratório não mostrar a saída serial, não tem problema: no passo seguinte você usará o LED como sinal.Clique em Verificar / compilar e Enviar ao dispositivo (
Upload into deviceouEnviar al dispositivo).Mude a entrada nos controles do laboratório (gire o potenciômetro / mova o controle de entrada) e confira se a leitura muda.
Se a leitura não mudar ao mover a entrada, teste outro pino analógico (A0 a A5) até ela mudar. Assim você confirma qual pino lê sua entrada.
Preencha a tabela com uma linha para cada posição de entrada que você testar.
Use pelo menos três linhas: mínimo, meio e máximo; deixe as demais vazias. Em
cada linha, anote a posição da entrada, o pino usado, a leitura ou efeito
visível, e se mudou ao mover a entrada.
| Posição / estado da entrada | Pino usado | Leitura ou efeito observado | Mudou ao mover a entrada? |
|---|---|---|---|
Tomar uma decisão
22 min
Agora adicione uma condição se / senão (categoria *Lógica*; em inglês
*Logic*) que use sua leitura e um limiar para acender ou apagar o LED integrado.
Adicione um bloco se / senão.
Na condição, compare sua leitura analógica confirmada com um limiar: por exemplo,
Ler pino analógico A0≥500. Se você confirmou outro pino analógico, use esse pino no lugar deA0.Dentro de fazer (se a condição for verdadeira), coloque
Definir LED integradoem HIGH.Dentro de senão, coloque
Definir LED integradoem LOW.Adicione
Esperar 100 milissegundosno final para que a leitura se repita de forma estável.Clique em Verificar / compilar, Enviar ao dispositivo e teste movendo a entrada.
Calibre: se o LED não mudar onde você quer, ajuste o limiar (aumente ou diminua o 500) e repita até que o LED acenda e apague onde você espera.
Seu programa deve ficar parecido com isto:
Diagrama de referência da decisão. A leitura de A0 é comparada com o limiar, e o LED muda de acordo com a ramificação fazer ou senão.
Arduino loop infinito:
se [Ler pino analógico [A0]] [≥] [500]
fazer:
[Definir LED integrado] [HIGH]
senão:
[Definir LED integrado] [LOW]
[Esperar] 100 milissegundos
Esta referência usa A0 porque é o ponto de partida mais comum. Se sua
verificação mostrou outro pino analógico, mantenha a mesma forma do programa,
mas troque A0 pelo pino confirmado.
Explique sua condição completa: qual entrada você lê, com qual limiar (ou estado) você a compara e qual saída muda.
Descreva dois testes: um em que o LED acende e outro em que ele apaga. Inclua a posição/estado da entrada e, se você calibrou, o limiar final.
Se não mudar, depure
7 min
Se o LED não mudar mesmo quando você move a entrada, escreva três verificações ordenadas que faria antes de pedir ajuda (pense em: pino de leitura, valor do limiar e se você enviou o programa).