Ficha 02 · Projectar uma instalação interactiva
- Projecto de circuito
- Código completo
- Lógica interactiva
Parte I · Verdadeiro ou Falso (20 pts)
Indica V ou F e justifica.
- Para controlar uma fita LED de 12 V com o Arduino, basta ligá-la directamente a um pino digital. (5 pts)
- O padrão de uma instalação interactiva é "entrada (sensor) → processamento → saída (resposta)". (5 pts)
- A porta Serial pode ser usada para enviar dados a software multimédia como o Processing. (5 pts)
- Um sensor PIR é adequado para detectar a presença/movimento de pessoas. (5 pts)
- F — Um pino não fornece corrente/tensão para uma fita de 12 V. É preciso um transístor/MOSFET (ou relé) e uma fonte de 12 V, com GND comum.
- V — É o padrão fundamental de qualquer instalação interactiva.
- V — A Serial envia números/dados que o Processing (ou TouchDesigner/Unity) lê para controlar visuais ou som.
- V — O PIR detecta variações de calor (infravermelho) típicas de pessoas em movimento, ideal para presença.
Parte II · Projectar o circuito (40 pts)
Cenário: pretende-se uma instalação "Som da Distância" para uma exposição. Quando um visitante aproxima a mão de um sensor de distância, a instalação produz um som cuja altura (frequência) varia com a distância, e acende um LED com brilho proporcional à proximidade.
Componentes disponíveis: Arduino Uno, sensor de distância ultrassónico (HC-SR04), buzzer, LED, resistências, breadboard, cabos.
Descreve as ligações do circuito (que pino a quê) e justifica. Inclui as resistências e o GND comum. (40 pts)
Esquema de ligações (referência)
Sensor HC-SR04 (4 pinos): - VCC → 5 V do Arduino. - GND → GND do Arduino. - TRIG → pino digital 9 (saída — dispara o pulso). - ECHO → pino digital 10 (entrada — recebe o eco).
Buzzer:
- Terminal + → pino digital 8 (usa tone()).
- Terminal − → GND.
LED:
- Ânodo (+) → pino 11 (PWM, com analogWrite) através de uma resistência de 220-330 Ω.
- Cátodo (−) → GND.
Geral: - Todos os GND ligados em comum (sensor, buzzer, LED, Arduino). - Alimentação por USB (5 V) suficiente para esta carga.
Justificações:
- TRIG/ECHO são digitais porque o HC-SR04 mede tempo de eco (pulsos), não tensão.
- O LED vai num pino PWM (11) para permitir variar o brilho com analogWrite.
- A resistência limita a corrente no LED, protegendo-o e ao pino.
- O buzzer usa tone() para gerar frequências variáveis.
- GND comum é obrigatório para um referencial eléctrico único.
(Avaliar: pinos coerentes, PWM para o LED, resistência presente, GND comum, justificação.)
Parte III · Escrever o código (40 pts)
Escreve o sketch completo para a instalação "Som da Distância" da Parte II: - Medir a distância com o HC-SR04. - Se a distância for inferior a 30 cm: produzir som cuja frequência aumenta quanto mais perto, e acender o LED com brilho proporcional à proximidade. - Caso contrário: silêncio e LED apagado. - Imprimir a distância pela Serial.
const int TRIG = 9;
const int ECHO = 10;
const int BUZZER = 8;
const int LED = 11; // PWM
void setup() {
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(LED, OUTPUT);
Serial.begin(9600);
}
long medirDistanciaCm() {
// dispara um pulso de 10 us
digitalWrite(TRIG, LOW); delayMicroseconds(2);
digitalWrite(TRIG, HIGH); delayMicroseconds(10);
digitalWrite(TRIG, LOW);
long duracao = pulseIn(ECHO, HIGH); // tempo do eco (us)
long cm = duracao / 58; // converter para cm
return cm;
}
void loop() {
long dist = medirDistanciaCm();
Serial.print("Distancia: ");
Serial.print(dist);
Serial.println(" cm");
if (dist > 0 && dist < 30) {
// mais perto -> frequência mais alta e mais brilho
int freq = map(dist, 0, 30, 1500, 200); // 200..1500 Hz
int brilho = map(dist, 0, 30, 255, 0); // 0..255
brilho = constrain(brilho, 0, 255);
tone(BUZZER, freq);
analogWrite(LED, brilho);
} else {
noTone(BUZZER);
analogWrite(LED, 0);
}
delay(60);
}
Pontos avaliados:
- Disparo correcto do TRIG e leitura com pulseIn.
- Conversão para cm.
- Condição < 30 cm com mapeamento de frequência e brilho (mais perto = mais agudo/brilhante).
- noTone + LED apagado fora do intervalo.
- Serial a imprimir a distância.
- Estrutura organizada (função auxiliar de medição é bónus).