← Sair
Cancela Automática com Servo Motor e Sensor
RoboFeed · aula plugada

Cancela Automática com Servo Motor e Sensor

Atuadores + sensores · Lógica condicional · Automação real

1h 50min 🎓 8º ano · 9º ano 🧭 EF89CO02🧭 EF89CO03
Capa da aula
🎯 Nossa missão hoje

O que vamos conseguir fazer

1

Integrar entrada (sensor ultrassônico) e saída (servo motor) num mesmo sistema.

2

Programar uma decisão condicional baseada em distância medida.

3

Compreender o conceito de PWM (modulação por largura de pulso) usado pelo servo.

4

Construir um protótipo funcional que simula uma situação real de automação.

🧰 O que temos na bancada

Peças e materiais

Placa Arduino (Uno / Nano / Mega) Placa Arduino (Uno / Nano / Mega)
Protoboard Protoboard
Jumpers (M/M e M/F) Jumpers (M/M e M/F)
Sensor Ultrassônico (HC-SR04) Sensor Ultrassônico (HC-SR04)
Servo Motor (SG90 / MG90S) Servo Motor (SG90 / MG90S)
Computador / Laptop Computador / Laptop
🔌 Como as peças se ligam

O mapa do nosso robô

⬇ baixar SVG
🔧 Montagem do robôPlaca: Arduino Uno · 2 componentes · 3 ligações detectadas do códigoLEGENDAAnalógico (leitura)PWM (velocidade)DigitalSaída de motor5VGND ON L TX RX   DIGITAL (PWM ~) AREF GND 13 12 ~11 ~10 ~9 8 7 ~6 ~5 4 ~3 2 TX→1 RX←0   POWER ANALOG IN IOREF RESET 3.3V 5V GND GND Vin A0 A1 A2 A3 A4 A5 ARDUINO UNO ++151015202530afbgchdiej HC-SR04 VCC TRIG ECHO GND Protoboard 400 pontosSensor Ultrassônico (HC-SR04)Servo Motor
🧰 Montagem do robôArduino Nanoplaca controladora HC-SR04 VCC TRIG ECHO GND Sensor Ultrassônico…D9 (TRIG), D10 (ECHO) Servo MotorD6

cada fio colorido é uma ligação de verdade — o diagrama completo está na página da aula

Momento 1 de 5

Introdução

Servo Motor (SG90 / MG90S)

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.

Momento 2 de 5 · parte 1/2

Montagem / Hardware

1

Sensor HC-SR04: VCC→5V, GND→GND, TRIG→9, ECHO→10 (igual aula anterior).

Sensor Ultrassônico (HC-SR04)
2

Servo SG90: fio vermelho→5V, marrom→GND, laranja→pino 6.

Servo Motor (SG90 / MG90S)
3

Cole o palito/canudo no eixo do servo — esse é a 'cancela'.

Servo Motor (SG90 / MG90S)
4

Apoie o sensor de modo que aponte na direção do carro vindo.

Momento 2 de 5 · parte 2/2

Montagem / Hardware

5

Posicione o servo perpendicular ao 'caminho do carro'.

Servo Motor (SG90 / MG90S)
6

Use fita adesiva pra fixar tudo na mesa.

Momento 3 de 5 · parte 1/2

Programação

1

Cole o código no Arduino IDE.

Placa Arduino (Uno / Nano / Mega)
2

Compile (✓) — Arduino IDE precisa da biblioteca Servo (já vem instalada).

Servo Motor (SG90 / MG90S)
3

Envie pra placa.

4

Abra o Monitor Serial pra ver as distâncias.

Momento 3 de 5 · parte 2/2

Programação

5

Aproxime a mão (ou um livro) do sensor: a cancela DEVE subir.

Momento 4 de 5 · parte 1/2

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

Momento 4 de 5 · parte 2/2

Teste e ajustes

5

Desafio: adicione um LED vermelho que acende quando fechada e verde quando aberta.

Momento 5 de 5

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.

🔀 O plano do robô

Como ele decide o que fazer

flowchart TD A(["Início"]) --> B["Medir distância com sensor"] B --> C{"Distância menor que limite?"} C -->|Sim| D["Abrir cancela"] C -->|Não| E["Fechar cancela"] D --> B E --> B
💻 O cérebro do robô

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.