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.
New to LabsLand? Create your teacher account
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.
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 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);
}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.
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.
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.