Comunicando com luz e som através da programação.
Prepare-se para uma viagem no tempo da comunicação! Nesta atividade, vamos construir um transmissor de Código Morse, um dos sistemas de comunicação mais importantes da história. Usando um botão, um LED e um buzzer, cada equipe criará um dispositivo capaz de enviar mensagens secretas através de pulsos de luz e som. Este projeto é uma forma prática de aprender sobre circuitos,
Roteiro para Professores (Foco no Aprofundamento Técnico)
- Objetivo da Atividade: Implementar uma interface homem-máquina (botão) para controlar atuadores audiovisuais (LED e buzzer), criando um dispositivo de comunicação que traduz a duração de um input digital em sinais de saída correspondentes.
- Conceitos Tecnológicos Fundamentais:
- Input Digital: Leitura do estado de um botão (
digitalRead()), compreendendo os estadosHIGH(pressionado) eLOW(não pressionado). - Output Digital: Controle de um LED (
digitalWrite()). - Geração de Tom (Frequência): Uso da função
tone()para fazer um buzzer ou piezo emitir um som em uma frequência específica em Hertz. A funçãonoTone()é usada para silenciá-lo. - Circuito com Pull-down: Entender a necessidade de um resistor de pull-down para garantir que o pino de entrada leia
LOWde forma estável quando o botão não está pressionado.
- Input Digital: Leitura do estado de um botão (
- Princípio Lógico: O código opera em um ciclo contínuo (
loop) que verifica o estado do pino de entrada do botão. Uma estrutura condicionalif/elsedetermina a ação: se a leitura forHIGH, as funçõesdigitalWrite()etone()são chamadas para ativar os atuadores. Se a leitura forLOW, as funçõesdigitalWrite()enoTone()são chamadas para desativá-los. A duração do sinal é controlada unicamente pelo tempo que o usuário mantém o botão pressionado. - Guia de Solução de Problemas (Troubleshooting):
- LED não acende: Verifique a polaridade do LED (perna mais longa no positivo) e se o resistor limitador de corrente está no circuito.
- Buzzer não toca ou som muito baixo: Verifique as conexões. Piezo buzzers passivos têm polaridade. Aumente a frequência no código se necessário.
- Sinal fica “travado” (ligado o tempo todo): O pino de entrada do botão pode estar “flutuando”. Garanta que um resistor de pull-down (10k Ohm) esteja conectado do pino de entrada ao GND.
- Desafio Extra (Nível Avançado):
- Programe o dispositivo para decodificar o Morse. O desafio é medir a duração dos pulsos (tempo que o botão fica pressionado) para diferenciar “pontos” de “traços” e a duração das pausas para identificar o fim de uma letra ou palavra.
- Materiais Necessários:
- Hardware: SmartMotor com Servo Motor (Placa B) OU (Kit Arduino, Protoboard, Resistores, Buzzer, LED de alto brilho, Botão); materiais para a estrutura.
- Software: Arduino IDE e/ou conta na plataforma TinkerCAD.
- Possibilidades de Aplicação e Expansão:
- Interface de Feedback: Usar o princípio de feedback audiovisual para indicar o status de um sistema (ex: um som e uma luz quando um processo termina).
- Alarme Simples: Adaptar o circuito para que o som e a luz sejam acionados por outro tipo de sensor (movimento, luz, etc.).
- Comunicação via Fibra Ótica: Usar o LED para transmitir os sinais de Morse através de um cabo de fibra ótica para um sensor LDR na outra ponta.
Segue uma referência do Código Morse internacional:

Programação Sugerida
// Define os pinos para cada componente
const int pinoBotao = 7; // Botão conectado ao pino 7 (entrada)
const int pinoLed = 8; // LED conectado ao pino 8 (saída)
const int pinoBuzzer = 6; // Buzzer conectado ao pino 6 (saída)
// Frequência do tom em Hertz (C5 = 523 Hz)
const int frequenciaTom = 523;
// Variável para armazenar o estado do botão
int estadoBotao = 0;
void setup() {
// Configura os pinos
pinMode(pinoBotao, INPUT); // Pino do botão é uma ENTRADA
pinMode(pinoLed, OUTPUT); // Pino do LED é uma SAÍDA
pinMode(pinoBuzzer, OUTPUT); // Pino do buzzer é uma SAÍDA
}
void loop() {
// Lê o estado do botão (HIGH se pressionado, LOW se não)
estadoBotao = digitalRead(pinoBotao);
// Verifica se o botão está pressionado
if (estadoBotao == HIGH) {
// Ação: Liga o LED e o buzzer
digitalWrite(pinoLed, HIGH);
tone(pinoBuzzer, frequenciaTom);
} else {
// Ação: Desliga o LED e o buzzer
digitalWrite(pinoLed, LOW);
noTone(pinoBuzzer);
}
}
Programação Sugerida
Em Blocos

Esquemático Eletrônico

