UC00670 · Programação de microcontroladores
Aulify · Componente Tecnológica

Efetuar a programação de microcontroladores

Arduino, GPIO, sensores, atuadores, comunicação
UC00670 · 50 horas · 4,5 pontos Nível 4 · TSCR · Ano 3
Aulify · Componente Tecnológica · Cursos Profissionais
UC00670 · Programação de microcontroladores

Resultados de aprendizagem

  1. Compreender a arquitetura de um microcontrolador.
  2. Programar entradas/saídas (GPIO, analógico, PWM).
  3. Ler sensores e comandar atuadores.
  4. Integrar num projeto (IoT / automação).
Liga o software ao mundo físico: ler temperatura, acender luzes, mover motores. A base do IoT e da automação.
Aulify · Componente Tecnológica · Cursos Profissionais
UC00670 · Programação de microcontroladores
Bloco 1 · O microcontrolador

Um computador num chip

Aulify · Componente Tecnológica · Cursos Profissionais
UC00670 · Programação de microcontroladores

µC vs µP

Microcontrolador Microprocessador
CPU + RAM + Flash + I/O num chip só CPU (precisa de tudo à volta)
Tarefa dedicada uso geral (PC)
Baixo consumo, barato potente
Arduino, ESP32, PIC, STM32 Intel/AMD/ARM dos PC
Aulify · Componente Tecnológica · Cursos Profissionais
UC00670 · Programação de microcontroladores

Plataformas

  • Arduino (ATmega328 / UNO) — didático, ecossistema enorme.
  • ESP32 / ESP8266 — Wi-Fi + Bluetooth (IoT).
  • STM32 — profissional, ARM Cortex-M.
  • Raspberry Pi Pico (RP2040) — moderno, MicroPython/C.
  • micro:bit — educação.

Esta UC usa Arduino como referência.

Aulify · Componente Tecnológica · Cursos Profissionais
UC00670 · Programação de microcontroladores
Bloco 2 · Estrutura do programa

setup e loop

Aulify · Componente Tecnológica · Cursos Profissionais
UC00670 · Programação de microcontroladores

Sketch Arduino

const int LED = 13;

void setup() {
  pinMode(LED, OUTPUT);     // corre 1 vez
}

void loop() {
  digitalWrite(LED, HIGH);  // repete para sempre
  delay(1000);
  digitalWrite(LED, LOW);
  delay(1000);
}

setup() — inicialização. loop() — ciclo infinito.

Aulify · Componente Tecnológica · Cursos Profissionais
UC00670 · Programação de microcontroladores

Fluxo de trabalho

  1. Escrever o sketch (Arduino IDE / PlatformIO).
  2. Verificar (compilar).
  3. Carregar (upload via USB).
  4. Observar (LED, Serial Monitor).
  5. Depurar e iterar.
Aulify · Componente Tecnológica · Cursos Profissionais
UC00670 · Programação de microcontroladores
Bloco 3 · Entradas e saídas

GPIO

Aulify · Componente Tecnológica · Cursos Profissionais
UC00670 · Programação de microcontroladores

Digital

pinMode(8, INPUT_PULLUP);
int botao = digitalRead(8);     // HIGH / LOW

pinMode(9, OUTPUT);
digitalWrite(9, HIGH);          // 5 V / 0 V

INPUT_PULLUP evita entradas "a flutuar". Botões precisam de debounce.

Aulify · Componente Tecnológica · Cursos Profissionais
UC00670 · Programação de microcontroladores

Analógico e PWM

int v = analogRead(A0);   // 0..1023 (ADC 10 bits)
float volts = v * 5.0 / 1023.0;

analogWrite(6, 128);      // PWM 0..255 (≈ "meia" potência)
  • ADC — lê tensão de sensores analógicos.
  • PWM — controla brilho de LED, velocidade de motor.
Aulify · Componente Tecnológica · Cursos Profissionais
UC00670 · Programação de microcontroladores

Serial (depuração e comunicação)

void setup() { Serial.begin(9600); }
void loop() {
  Serial.print("Sensor: ");
  Serial.println(analogRead(A0));
  delay(500);
}

Serial Monitor: ver valores, depurar, comunicar com o PC.

Aulify · Componente Tecnológica · Cursos Profissionais
UC00670 · Programação de microcontroladores
Bloco 4 · Sensores e atuadores

Ler e agir no mundo

Aulify · Componente Tecnológica · Cursos Profissionais
UC00670 · Programação de microcontroladores

Sensores comuns

Sensor Mede Interface
LDR luz analógico
NTC / LM35 / DHT22 temperatura analógico / digital
HC-SR04 distância (ultrassons) digital (trig/echo)
PIR movimento digital
Potenciómetro posição analógico
Aulify · Componente Tecnológica · Cursos Profissionais
UC00670 · Programação de microcontroladores

Atuadores

Atuador Função Controlo
LED luz digital / PWM
Buzzer som digital / tone()
Servo ângulo PWM (lib Servo)
Motor DC rotação PWM + driver (L298N)
Relé ligar carga AC digital
Motores/cargas grandes nunca diretamente no pino — usar driver/relé e alimentação própria. Pino do Arduino dá pouca corrente.
Aulify · Componente Tecnológica · Cursos Profissionais
UC00670 · Programação de microcontroladores
Bloco 5 · Protocolos e projeto

Comunicar e integrar

Aulify · Componente Tecnológica · Cursos Profissionais
UC00670 · Programação de microcontroladores

Protocolos

  • Serial (UART) — depuração, módulo a módulo.
  • I²C — vários dispositivos em 2 fios (SDA/SCL): displays, RTC, sensores.
  • SPI — rápido (cartões SD, ecrãs).
  • Wi-Fi/BLE (ESP32) — IoT, enviar dados para a nuvem.
Aulify · Componente Tecnológica · Cursos Profissionais
UC00670 · Programação de microcontroladores

Boas práticas

  • Não bloquear com delay() grandes → usar millis() (multitarefa cooperativa).
  • Debounce de botões.
  • Alimentação adequada (motores à parte).
  • Comentar e modularizar o código (funções).
  • Esquema elétrico documentado (Fritzing).
  • Testar por partes (1 sensor de cada vez).
Aulify · Componente Tecnológica · Cursos Profissionais
UC00670 · Programação de microcontroladores

Exemplo · termóstato simples

void loop() {
  float t = lerTemperatura();
  if (t > 25.0) digitalWrite(RELE, HIGH);  // liga ventoinha
  else          digitalWrite(RELE, LOW);
  Serial.println(t);
  delay(2000);
}

Sensor → decisão → atuador. O padrão de toda a automação.

Aulify · Componente Tecnológica · Cursos Profissionais
UC00670 · Programação de microcontroladores
Aulify · UC00670 · Fim

Software a mexer no mundo real.

📧 geral@aulify.pt
Aulify · Componente Tecnológica · Cursos Profissionais