Teach Remote lab lessons

Teach lesson

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)
  • Embedded systems
Arduino Board (code)
Arduino Board (code) · Lab details

Learning Outcomes

  • Combinar entrada analógica, condicionais e duas saídas.

  • Usar a biblioteca Servo em um programa simples.

  • Explicar o comportamento de um sistema programado.

Student activity preview

Activity Content

Preview only. In a class session, students can fill in responses and submit their work to the teacher.

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 a partir 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.

Envie seu código

Capture o código final com o limite de 120 graus. Antes de anexá-lo, salve main.ino no ambiente do laboratório. A captura deve mostrar o programa que você realmente quer que o professor analise.

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.