Código Morse (A)

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 estados HIGH (pressionado) e LOW (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ção noTone() é 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 LOW de forma estável quando o botão não está pressionado.
  • 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 condicional if/else determina a ação: se a leitura for HIGH, as funções digitalWrite() e tone() são chamadas para ativar os atuadores. Se a leitura for LOW, as funções digitalWrite() e noTone() 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