Ficha 01 · Arduino e I/O
- Compreender µC
- Estruturar sketch
- Programar I/O
- Ler ADC e usar PWM
- Elaborar fluxogramas
- Manipular registos
Parte I · Conceitos
Exercício 1 · µC vs µP (8 pts)
Indica 3 diferenças entre um microcontrolador e um microprocessador.
Exercício 2 · Plataforma (7 pts)
Indica a plataforma mais adequada:
a) Projeto IoT que envia dados por Wi-Fi para a nuvem. ___
b) Aprender o básico, ecossistema enorme de tutoriais. ___
c) Programar em MicroPython, hardware moderno. ___
Parte II · Estrutura
Exercício 3 · setup/loop (8 pts)
a) O que corre em setup() e o que corre em loop()? (4 pts)
b) Como se vê o valor de uma variável durante a execução (não há ecrã)? (4 pts)
Exercício 4 · Sinalizador (10 pts)
Escreve o sketch completo de um sinalizador: um LED no pino 10 fica aceso 2 s e apagado 1 s, em repetição.
Parte III · Entradas
Exercício 5 · Botão (12 pts)
a) Para que serve INPUT_PULLUP? (4 pts)
b) Escreve um sketch que acende o LED (pino 4) enquanto um botão (pino 7, ligado a GND) está premido. (8 pts)
Exercício 6 · Debounce (8 pts)
Porque é necessário "debounce" num botão? Como se faz por software (ideia)?
Parte IV · Analógico/PWM
Exercício 7 · ADC e PWM (12 pts)
a) analogRead(A0) devolve que gama de valores e a que correspondem? (4 pts)
b) Uma luz de presença: um LDR num divisor de tensão com 10 kΩ (LDR ligado a Vcc, resistência a GND) dá a tensão em A0; quanto mais escuro, mais brilho deve ter um LED no pino 5 (PWM). Escreve o sketch. (8 pts)
Parte V · Fluxogramas e registos
Exercício 8 · Fluxograma (15 pts)
Um reservatório tem um sensor de nível analógico (A1, 0 a 100 %) e uma bomba de enchimento de baixa tensão comandada por um módulo de relé. A bomba liga quando o nível desce abaixo de 20 % e só desliga quando passa de 80 %. Desenha o fluxograma do programa, com os símbolos corretos, e diz qual a vantagem de usar dois limiares.
Exercício 9 · Registos (20 pts)
a) Para que servem os registos DDRx, PORTx e PINx? (6 pts)
b) Um registo REG de 8 bits vale 0b1001 0110. Indica o valor em binário depois de cada instrução, executadas em sequência: (8 pts)
REG |= (1 << 0) | (1 << 3);
REG &= ~(1 << 7);
REG ^= (1 << 4);
Nota: usa-se aqui um registo genérico, e não o PORTC, porque no ATmega328P o PORTC só tem os bits 0 a 6 implementados.
c) O pino 12 do UNO é o bit 4 da porta B (PB4). Escreve, com registos, o equivalente a pinMode(12, OUTPUT); digitalWrite(12, HIGH); sem alterar os outros bits. (6 pts)