Cancela Automática com Servo Motor e Sensor
Atuadores + sensores · Lógica condicional · Automação real
- • Integrar entrada (sensor ultrassônico) e saída (servo motor) num mesmo sistema.
- • Programar uma decisão condicional baseada em distância medida.
- • Compreender o conceito de PWM (modulação por largura de pulso) usado pelo servo.
- • Construir um protótipo funcional que simula uma situação real de automação.
• 1× Arduino UNO R3 (com cabo USB) • 1× Protoboard 400 pontos • 1× Sensor ultrassônico HC-SR04 • 1× Servo motor SG90 • 1× Resistor 220Ω (1/4W) • 8× Jumpers macho-macho coloridos • 1× Computador com Arduino IDE instalado
Introdução / Contextualização
Mostre vídeos curtos de cancelas reais em estacionamentos. Pergunte: 'Como ela sabe que o carro chegou?'. Apresente o servo motor pegando ele na mão — explique que ele gira até um ângulo específico (0° a 180°), diferente de um motor comum que só gira. Mostre a biblioteca Servo.h como atalho pra controlá-lo. Apresente o conceito de FUNÇÃO em programação — usando medirDistancia() como exemplo. Explique por que separar em função: deixa o loop limpo, evita repetição. Discuta o if-else: 'Se o objeto está perto, abre. Senão, fecha'. Mostre que isso é a estrutura básica de QUALQUER automação.
Montagem do Circuito / Hardware
1. Sensor HC-SR04: VCC→5V, GND→GND, TRIG→9, ECHO→10 (igual aula anterior). 2. Servo SG90: fio vermelho→5V, marrom→GND, laranja→pino 6. 3. Cole o palito/canudo no eixo do servo — esse é a 'cancela'. 4. Apoie o sensor de modo que aponte na direção do carro vindo. 5. Posicione o servo perpendicular ao 'caminho do carro'. 6. Use fita adesiva pra fixar tudo na mesa.
Programação / Codificação
1. Cole o código no Arduino IDE. 2. Compile (✓) — Arduino IDE precisa da biblioteca Servo (já vem instalada). 3. Envie pra placa. 4. Abra o Monitor Serial pra ver as distâncias. 5. Aproxime a mão (ou um livro) do sensor: a cancela DEVE subir.
Teste, Depuração e Ajustes
1. Distância > 15 cm: cancela fechada (0°). 2. Aproxime até < 15 cm: cancela abre (90°). 3. Afaste: cancela fecha de novo. 4. Variação: troque DIST_LIMITE pra 30 cm e veja o comportamento. 5. Desafio: adicione um LED vermelho que acende quando fechada e verde quando aberta.
Encerramento / Socialização
Cada trio apresenta seu protótipo simulando um carro chegando. Discussão final: 'Onde mais no seu dia-a-dia tem um sistema sensor → decisão → atuador?'. (Porta de shopping, sabonete líquido automático, descarga automática). Registrar a arquitetura SCA: Sensor → Controlador → Atuador.
// Cancela automática — servo abre quando objeto chega perto
#include <Servo.h>
const int TRIG = 9;
const int ECHO = 10;
const int SERVO_PIN = 6;
const int DIST_LIMITE = 15; // cm — abre se objeto mais perto que isso
Servo cancela;
void setup() {
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
cancela.attach(SERVO_PIN);
cancela.write(0); // Começa fechada
Serial.begin(9600);
}
float medirDistancia() {
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
long duracao = pulseIn(ECHO, HIGH);
return duracao * 0.034 / 2;
}
void loop() {
float d = medirDistancia();
Serial.print("Dist: "); Serial.print(d); Serial.println(" cm");
if (d > 0 && d < DIST_LIMITE) {
cancela.write(90); // Abre (90 graus)
Serial.println("ABERTA");
} else {
cancela.write(0); // Fecha (0 grau)
Serial.println("fechada");
}
delay(200);
}
quando @greenFlag for clicado
sempre
medir distância
se <distância menor que 15 cm> então
abrir cancela
senão
fechar cancela
end
endVocê chegou ao fim! 🎉
O que foi mais difícil? O que você faria diferente? Conte pra turma!