Cancela Automática com Servo Motor e Sensor
Atuadores + sensores · Lógica condicional · Automação real
O que vamos conseguir fazer
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.
Peças e materiais
Placa Arduino (Uno / Nano / Mega)
Protoboard
Jumpers (M/M e M/F)
Sensor Ultrassônico (HC-SR04)
Servo Motor (SG90 / MG90S)
Computador / Laptop
O mapa do nosso robô
cada fio colorido é uma ligação de verdade — o diagrama completo está na página da aula
Introduçã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 / Hardware
Sensor HC-SR04: VCC→5V, GND→GND, TRIG→9, ECHO→10 (igual aula anterior).
Servo SG90: fio vermelho→5V, marrom→GND, laranja→pino 6.
Cole o palito/canudo no eixo do servo — esse é a 'cancela'.
Apoie o sensor de modo que aponte na direção do carro vindo.
Montagem / Hardware
Posicione o servo perpendicular ao 'caminho do carro'.
Use fita adesiva pra fixar tudo na mesa.
Programação
Cole o código no Arduino IDE.
Compile (✓) — Arduino IDE precisa da biblioteca Servo (já vem instalada).
Envie pra placa.
Abra o Monitor Serial pra ver as distâncias.
Programação
Aproxime a mão (ou um livro) do sensor: a cancela DEVE subir.
Teste e ajustes
Distância > 15 cm: cancela fechada (0°).
Aproxime até < 15 cm: cancela abre (90°).
Afaste: cancela fecha de novo.
Variação: troque DIST_LIMITE pra 30 cm e veja o comportamento.
Teste e ajustes
Desafio: adicione um LED vermelho que acende quando fechada e verde quando aberta.
Encerramento
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.
Como ele decide o que fazer
O código da aula
// 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);
}
role dentro da caixa · o código completo está na página da aula
🥊
Bora construir!
dúvidas? a página completa da aula tem tudo: montagem, código e materiais.