Teach Lições com laboratórios remotos

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.

  • Arduino Board (code)
  • 40 min
  • Ensino Fundamental II / primeiras aulas de programação física
  • Português (Brasil)
  • Sistemas embarcados

Entre com uma conta de professor para preparar uma sessão. Os estudantes entram com um código da turma.

Arduino Board (code)
Arduino Board (code) · Detalhes do laboratório

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.

1

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.

2

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);
}
  1. Abra o laboratório Arduino.

  2. Envie o programa-base e observe o servomotor.

  3. Gire lentamente o potenciômetro 1.

  4. Troque angle > 90 por angle > 120 e envie novamente.

  5. Salve antes de capturar o código.

  6. 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.

3

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.