Aula 4 — Computação Física I¶
Data¶
16 de outubro de 2026 (6ª feira)
Sumário¶
- Introdução à computação física: do digital ao tangível
- O que é um microcontrolador? Entradas e saídas
- Instalação do Arduino IDE
- Primeiro programa: Blink — o "Hello World" do Arduino
- Exercício: comunicação em Morse com LED
- Desafio: escrever uma palavra em Morse legível pelo decoder digital
Notas da Aula¶
O que é Computação Física?¶

How a Computer sees you por Tom Igoe
ArduinoComic.pdf — introdução ilustrada ao Arduino
Ferramentas¶
- Arduino IDE — arduino.cc/software
- Arduino Reference — arduino.cc/reference
Referências de artistas¶
- Neil Mendoza — esculturas cinéticas e interativas
1. Blink — "Hello World"¶

#define led 13
void setup() {
pinMode(led, OUTPUT);
digitalWrite(led, LOW);
}
void loop() {
digitalWrite(led, HIGH);
delay(500);
digitalWrite(led, LOW);
delay(500);
}
2. Morse Blink¶
Creative Coding Classes — projetos de referência
Decoder e Encoder digitais de Morse¶

MORSE DECODER: https://steam228.github.io/CreativeCodingClasses2025/morseBlink/p5js/decoder/index.html
.png)
MORSE ENCODER: https://steam228.github.io/CreativeCodingClasses2025/morseBlink/p5js/encoder/index.html
SOS — Exemplo simples¶
#define batatas 13
void setup() {
pinMode(batatas, OUTPUT);
digitalWrite(batatas, LOW);
}
void loop() {
// S (...)
digitalWrite(batatas, HIGH); delay(200);
digitalWrite(batatas, LOW); delay(200);
digitalWrite(batatas, HIGH); delay(200);
digitalWrite(batatas, LOW); delay(200);
digitalWrite(batatas, HIGH); delay(200);
digitalWrite(batatas, LOW); delay(400);
// O (---)
digitalWrite(batatas, HIGH); delay(800);
digitalWrite(batatas, LOW); delay(300);
digitalWrite(batatas, HIGH); delay(800);
digitalWrite(batatas, LOW); delay(300);
digitalWrite(batatas, HIGH); delay(800);
digitalWrite(batatas, LOW); delay(400);
// S (...)
digitalWrite(batatas, HIGH); delay(200);
digitalWrite(batatas, LOW); delay(200);
digitalWrite(batatas, HIGH); delay(200);
digitalWrite(batatas, LOW); delay(200);
digitalWrite(batatas, HIGH); delay(200);
digitalWrite(batatas, LOW); delay(1000);
}
SOS — Versão com variáveis e ciclos¶
#define coisa 13
int longTime = 800;
int shortTime = 200;
int intervalTime = 200;
int interval = 0;
int counter = 1;
void setup() {
Serial.begin(9600);
pinMode(coisa, OUTPUT);
digitalWrite(coisa, LOW);
}
void loop() {
if (counter == 1 || counter == 3) {
interval = shortTime;
for (int j = 0; j < 3; j++) {
digitalWrite(coisa, HIGH);
delay(interval);
digitalWrite(coisa, LOW);
delay(intervalTime);
}
counter++;
}
else if (counter == 2) {
interval = longTime;
for (int i = 0; i < 3; i++) {
digitalWrite(coisa, HIGH);
delay(interval);
digitalWrite(coisa, LOW);
delay(intervalTime);
}
counter++;
}
else {
delay(2000);
counter = 1;
}
Serial.println(counter);
}
Temporização Morse — referência¶
DOT_DURATION = 200ms
DASH_DURATION = 800ms
SYMBOL_GAP_DOT = 200ms // intervalo após ponto
SYMBOL_GAP_DASH = 300ms // intervalo após traço
LETTER_GAP = 400ms // intervalo entre letras
WORD_GAP = 1000ms // intervalo entre palavras
Desafio¶
Escrevam uma palavra no Arduino que o DECODER digital consiga ler ao apontar a câmara para o LED a piscar.