Disciplina · ISPS

Informática Aplicada

Introdução à programação de computadores e microcontroladores — da lógica de algoritmos ao controlo de hardware com Arduino.

EE114 / EER114 / EET114 1.º Ano · 1.º Semestre 6 Créditos 48 h contacto

Ficha da disciplina

Informação Geral

Cursos

  • Engenharia Eléctrica
  • Engenharia de Energias Renováveis
  • Engenharia Electrónica e Telecomunicações

Docente

  • Isac Daniel

Objectivos

Compreender os fundamentos da plataforma Arduino através do simulador Tinkercad, integrando a montagem de circuitos virtuais à lógica de programação em framework Wiring.

Avaliação

3 testes (2 escritos + 1 prático) · 2 trabalhos individuais.
Mf = ⅗ Mt + ⅖ Tr
NF = ⅗ Mf + ⅖ NE

Índice

Módulos da Disciplina

  1. Lógica de Programação e Algoritmos
  2. Noções de Microcontroladores
  3. Linguagem Arduino
  4. Variáveis, Tipos e Operadores
  5. Comandos e Funções Reservadas
  6. Estruturas de Selecção e Repetição

Módulo 01

Lógica de Programação e Algoritmos

Objectivos

  • Compreender o conceito de lógica de programação
  • Identificar os pilares fundamentais dos algoritmos
  • Aplicar estruturas de controlo em problemas reais
  • Reconhecer tipos de dados e variáveis
  • Desenvolver algoritmos em pseudocódigo e fluxogramas

Conceitos-chave

A lógica de programação é a técnica de organizar pensamentos de forma estruturada para que um computador execute uma tarefa específica. Não é uma linguagem — é a capacidade universal de resolver problemas computacionalmente.

Instrução + Sequência Lógica = Algoritmo

Os 3 Pilares

1. Algoritmo

Sequência finita de passos lógicos, com clareza, finitude e ordenação.

2. Estruturas de Controlo

Sequência, condicional (SE/SENÃO) e repetição (ENQUANTO).

3. Variáveis e Tipos

Inteiro, real, string e booleano — espaços na memória para armazenar dados.

Formas de Representação

Fluxogramas (representação gráfica com símbolos geométricos) e Pseudocódigo / Portugol (estrutura próxima de uma linguagem real, sem rigor sintáctico).

Exemplo em Pseudocódigo

Algoritmo Soma
    Var
        a, b, resultado : inteiro
    Início
        Escreva("Introduz o primeiro número: ")
        Leia(a)
        Escreva("Introduz o segundo número: ")
        Leia(b)
        resultado ← a + b
        Escreva("Soma = ", resultado)
    Fim

Módulo 02

Noções de Microcontroladores

Um microcontrolador é um computador completo num único chip: CPU, memória (RAM/ROM) e periféricos de entrada/saída. É o cérebro de qualquer sistema embebido — desde electrodomésticos a sistemas industriais.

Aplicações típicas

  • Automação industrial e residencial
  • Sistemas de monitorização e controlo
  • Robótica e IoT (Internet das Coisas)
  • Instrumentação e aquisição de dados

Arquitectura Básica

CPU

Unidade Central de Processamento — executa as instruções do programa.

Memória

RAM (dados temporários) + Flash/ROM (programa armazenado).

Periféricos I/O

Pinos digitais, analógicos, UART, SPI, I²C para comunicação externa.

💡 Nota: o Arduino UNO R3 usa o microcontrolador Atmel ATmega328P — 8 bits, 32 KB de memória flash, 2 KB de SRAM.

Módulo 03

Linguagem Arduino

Origem

O Arduino é uma plataforma de prototipagem electrónica open-source, baseada em hardware e software flexíveis. Foi concebido para baixo custo e curva de aprendizagem reduzida, permitindo criar sistemas físicos que "sentem" e "respondem" ao ambiente.

Ciclo de Vida de um Projecto

1. Problema → 2. Algoritmo → 3. Código → 4. Compilação → 5. Execução

Partes da Placa UNO R3

  • Microcontrolador: ATmega328P (o "cérebro")
  • Pinos Digitais (0–13): entrada/saída HIGH/LOW · os marcados com ~ suportam PWM
  • Pinos Analógicos (A0–A5): leitura de variação de tensão (sensores)
  • Conector USB: programação e comunicação serial
  • Entrada de Alimentação: 7 V a 12 V (recomendado)
  • Botão de Reset: reinicia a execução do programa

Estrutura de um Programa

void setup() {
  // Executado UMA vez ao ligar
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  // Executado CONTINUAMENTE
  digitalWrite(LED_BUILTIN, HIGH);
  delay(1000);
  digitalWrite(LED_BUILTIN, LOW);
  delay(1000);
}

Sintaxe Básica

  • ; — finaliza cada comando
  • { } — delimita blocos de código
  • // — comentário de uma linha
  • /* ... */ — comentário em bloco

Bibliotecas

Colecções de código prontas que expandem as capacidades do Arduino (displays LCD, servomotores, sensores complexos). O IDE inclui bibliotecas padrão e permite adicionar bibliotecas de terceiros.

💡 Exemplo de biblioteca: #include <LiquidCrystal.h> para controlar displays LCD, ou #include <Servo.h> para servomotores.

Módulo 04

Variáveis, Tipos e Operadores

Tipos de Dados

TipoDescriçãoExemplosUso típico
intInteiro-5, 0, 42Contagem, idade
floatReal com decimais3.14, 99.99Preços, medidas
charCaractere único'A', '7'Letras, símbolos
StringTexto"Olá Mundo"Nomes, mensagens
boolValores lógicostrue, falseFlags, condições

Operadores Aritméticos

  • + adição
  • - subtracção
  • * multiplicação
  • / divisão
  • % resto (módulo)

Operadores Relacionais

  • == igual a
  • != diferente de
  • > maior · < menor
  • >= maior ou igual · <= menor ou igual

Operadores Lógicos

  • E (AND): todas as condições verdadeiras
  • OU (OR): pelo menos uma condição verdadeira
  • NÃO (NOT): inverte o estado lógico

Ordem de Precedência

1. Parênteses ( ) 2. Aritméticos (* / antes de + -) 3. Relacionais 4. Lógicos (NOT → AND → OR)
Exemplo prático: ligar_rega = solo_seco AND NOT(esta_chovendo)

Módulos 05–06

Comandos e Funções Reservadas

Entrada e Saída

void setup() {
  Serial.begin(9600);          // inicia comunicação
  pinMode(13, OUTPUT);          // LED como saída
  pinMode(2, INPUT_PULLUP);     // botão como entrada
}

void loop() {
  int estado = digitalRead(2);  // lê botão
  digitalWrite(13, !estado);    // LED reflecte o botão
  Serial.println(estado);       // envia para o PC
  delay(50);
}

Funções Essenciais

pinMode(pino, modo)

Define se um pino é INPUT, OUTPUT ou INPUT_PULLUP.

digitalRead(pino)

Lê o estado digital do pino (HIGH ou LOW).

digitalWrite(pino, valor)

Escreve HIGH ou LOW no pino digital.

analogRead(pino)

Lê valor analógico (0–1023) de um pino A0–A5.

analogWrite(pino, valor)

Escreve PWM (0–255) em pinos marcados com ~.

Serial.begin(baud)

Inicia comunicação serial (ex.: 9600 bps).

Módulos 07–08

Selecção e Repetição

Estrutura IF / IF-ELSE

if (temperatura > 80) {
  disparar_alarme();
} else if (temperatura > 60) {
  ligar_ventilador();
} else {
  manter_normal();
}

Estrutura Switch/Case

switch (estado) {
  case 1: ligar_motor();    break;
  case 2: desligar_motor(); break;
  case 3: modo_emergencia();break;
  default: erro();
}

Ciclo FOR

for (int i = 0; i < 10; i++) {
  digitalWrite(pinos[i], HIGH);
  delay(200);
  digitalWrite(pinos[i], LOW);
}

Ciclo WHILE

while (sensor_activo()) {
  ler_sensor();
  delay(100);
}

Ciclo DO-WHILE

int valor;
do {
  valor = analogRead(A0);
  Serial.println(valor);
  delay(100);
} while (valor < 512);

Tens dúvidas sobre Informática Aplicada?

Envia-me uma mensagem — respondo a estudantes e colegas.

Contactar