Lição do Teach
Arduino básico 4/4: construa um minicontrolador
Combine potenciômetro, servomotor, decisão e LED em um pequeno controlador executado em um Arduino Uno real.
Entre com uma conta de professor para preparar uma sessão. Os estudantes entram com um código da turma.
Ainda não tem uma conta na LabsLand? Criar sua conta de professor
Objetivos de aprendizagem
Combinar entrada analógica, condicionais e duas saídas.
Usar a biblioteca Servo em um programa simples.
Explicar o comportamento de um sistema programado.
Visualização da atividade do estudante
Conteúdo da atividade
Apenas visualização. Em uma sessão de aula, os estudantes podem preencher respostas e entregar o trabalho ao professor.
Planeje antes de mexer no código
8 min
Você tem três componentes: o potenciômetro 1, um servomotor e o LED 1. Neste projeto, o potenciômetro controlará a posição do servomotor, e o LED funcionará como aviso quando o servomotor ultrapassar determinado ângulo.
O ângulo do servomotor varia de 0 a 180 graus. Um limite baixo, como 60 graus, acenderia o LED cedo, perto do primeiro terço do movimento. Um limite de 90 graus o acenderia na metade do movimento. Um limite mais alto, como 120 graus, só o acenderia quando o servomotor já estivesse no terço final do movimento. Antes de programar, escolha um limite que torne o LED útil para o tipo de aviso que você deseja.
O conversor analógico-digital padrão do Arduino Uno usa uma escala de 0 a 1023 para tensões de 0 a 5 V. O potenciômetro deste laboratório chega a 3,3 V, o que corresponde a uma leitura aproximada de 675. O programa calibra esse máximo prático para toda a faixa de 0 a 180 graus do servomotor.
Em qual ângulo você acenderia o LED: 60, 90, 120 graus ou outro valor? Explique por que esse limite seria útil.
Programe o controlador
22 min
Agora compare sua ideia com esta solução: o potenciômetro controla o ângulo do servomotor de 0 a 180 graus, e o LED 1 acende quando o ângulo ultrapassa 90 graus. Envie o programa. Depois, altere a condição para que o LED acenda somente acima de 120 graus. A linha principal está no if: não altere o pino do LED nem o pino do servomotor, a menos que saiba o motivo.
#include <Servo.h>
const int pot1 = A0;
const int servoPin = 3;
const int led1 = 8;
const int potMaxReading = 675;
Servo servo;
void setup() {
pinMode(led1, OUTPUT);
servo.attach(servoPin);
}
void loop() {
int reading = analogRead(pot1);
int calibratedReading = constrain(reading, 0, potMaxReading);
int angle = map(calibratedReading, 0, potMaxReading, 0, 180);
servo.write(angle);
if (angle > 90) {
digitalWrite(led1, HIGH);
} else {
digitalWrite(led1, LOW);
}
delay(20);
}Abra o laboratório Arduino.
Envie o programa-base e observe o servomotor.
Gire lentamente o potenciômetro 1.
Troque
angle > 90porangle > 120e envie novamente.Salve antes de capturar o código.
Agora ajuste a condição ao limite de aviso que você escolheu. Mantenha a comparação estrita
>: o LED fica apagado no limite e aceso acima dele. Teste posições abaixo e acima; acompanhe no código o caso de igualdade. Salve este programa final.
Envie seu código
Depois de testar 120 graus como exemplo comum, envie o código final salvo com o limite escolhido. Informe o limite e os estados observados do LED abaixo e acima dele. Explique o que a comparação estrita > faz no caso de igualdade. Salve main.ino antes de anexar a captura do código.
Conclua o projeto
10 min
Explique o sistema usando estas três palavras: entrada, decisão e saída. Você também pode indicar o que melhoraria se tivesse mais tempo.
Transforme esta visualização em uma sessão de aula
Continue para o LabsLand Teach para usar esta lição com seus estudantes e conferir o acesso disponível para sua conta.
Ainda não tem uma conta na LabsLand? Criar sua conta de professor