Criando música com circuitos e programação.
Vamos transformar código em música! Nesta atividade, o desafio é projetar e construir um pequeno piano eletrônico funcional. Usando botões como teclas e um buzzer como alto-falante, cada equipe criará um instrumento capaz de tocar diferentes notas musicais.
Este projeto é uma exploração fascinante da física do som, mostrando como as ondas sonoras e as frequências que formam as notas musicais podem ser controladas por um circuito eletrônico e um programa de computador.
Roteiro para Professores (Foco no Aprofundamento Técnico)
- Objetivo da Atividade: Construir um instrumento musical eletrônico utilizando múltiplos inputs digitais (botões) para controlar a frequência de um output sonoro (buzzer), aplicando estruturas de programação condicional (
if/else if) e a funçãotone(). - Conceitos Tecnológicos Fundamentais:
- Geração de Som: Utilização da função
tone(pino, frequencia)para gerar uma onda quadrada em um pino digital na frequência (em Hertz) especificada. Uso da funçãonoTone(pino)para interromper o som. - Input Digital: Leitura de múltiplos botões em pinos digitais, utilizando resistores de pull-down para garantir leituras estáveis.
- Estrutura
if / else if / else: Forma eficiente de checar múltiplas condições (qual botão está pressionado) em sequência, garantindo que apenas uma ação seja executada por ciclo. - Frequência (Hz): Entender a relação direta entre o valor da frequência passada para a função
tone()e a altura da nota musical produzida.
- Geração de Som: Utilização da função
- Princípio Lógico: O programa executa um loop único que verifica o estado de cada botão, um após o outro. Uma cadeia
if / else ifé usada para que, ao encontrar o primeiro botão pressionado, o programa toque a nota correspondente e ignore a verificação dos demais botões naquele ciclo. Um blocoelsefinal garante que, se nenhum botão estiver pressionado, a funçãonoTone()seja chamada, silenciando o buzzer. Este método assegura que apenas uma nota seja tocada por vez (monofônico). - Guia de Solução de Problemas (Troubleshooting):
- Som muito baixo ou inexistente: Verifique as conexões do buzzer. Se for um buzzer passivo, ele tem polaridade. Verifique se o resistor usado no circuito do botão não é de um valor muito alto.
- Notas não param de tocar: A lógica
if / else if / elseestá incorreta ou o blocoelsecomnoTone()está faltando. Verifique também se os botões não estão travados ou com mau contato. - Toca a nota errada: Confirme se o botão conectado ao pino X no hardware corresponde à condição
digitalRead(X)no software.
- Desafio Extra (Nível Avançado):
- Criar uma função para tocar uma música pré-programada. Crie dois arrays: um para as notas (frequências) e outro para a duração de cada nota. Faça um loop
forque percorra os arrays e toque a melodia automaticamente com o apertar de um “botão play”.
- Criar uma função para tocar uma música pré-programada. Crie dois arrays: um para as notas (frequências) e outro para a duração de cada nota. Faça um loop
- Materiais Necessários:
- Hardware: SmartMotor com Servo Motor (Placa B) OU (Kit Arduino, Protoboard, Resistores 10k Ohm para pull-down, Buzzer/alto-falante, Botões).
- Software: Arduino IDE e/ou conta na plataforma TinkerCAD.
- Possibilidades de Aplicação e Expansão:
- Sintetizador Simples: Adicionar potenciômetros para controlar o volume (amplitude) ou o timbre (alterando a forma da onda, um conceito mais avançado).
- Theremin Simplificado: Trocar os botões por um sensor de distância ultrassônico para que a nota mude conforme a distância da mão ao sensor.
- Feedback Sonoro: Utilizar a geração de tons para criar sons de feedback em outros projetos (som de “sucesso”, “erro”, “alerta”).
Segue uma referência de cada nota musical por frequência em Hertz.

Programação Sugerida
// — Notas Musicais (4ª Oitava) e suas Frequências em Hertz —
// C (Dó) = 262 Hz
// D (Ré) = 294 Hz
// E (Mi) = 330 Hz
// F (Fá) = 349 Hz
// G (Sol) = 392 Hz
// A (Lá) = 440 Hz
// B (Si) = 494 Hz
// Pinos dos componentes
const int pinoBuzzer = 8;
const int pinoBotaoC = 2;
const int pinoBotaoD = 3;
const int pinoBotaoE = 4;
// … adicione mais pinos para mais notas
void setup() {
// Configura o pino do buzzer como saída
pinMode(pinoBuzzer, OUTPUT);
// Configura os pinos dos botões como entrada
pinMode(pinoBotaoC, INPUT);
pinMode(pinoBotaoD, INPUT);
pinMode(pinoBotaoE, INPUT);
// … configure os demais pinos
}
void loop() {
// Verifica cada botão em sequência
if (digitalRead(pinoBotaoC) == HIGH) {
tone(pinoBuzzer, 262); // Toca a nota Dó (C)
}
else if (digitalRead(pinoBotaoD) == HIGH) {
tone(pinoBuzzer, 294); // Toca a nota Ré (D)
}
else if (digitalRead(pinoBotaoE) == HIGH) {
tone(pinoBuzzer, 330); // Toca a nota Mi (E)
}
// … adicione ‘else if’ para os outros botões
else {
// Se nenhum botão estiver pressionado, desliga o som.
noTone(pinoBuzzer);
}
}
Esquemático Eletrônico

Este projeto propõem um instrumento funcional, dependendo da estrutura criada e potencia do alto-falante é possível tocar músicas reais. Se for possível, peça para alguém que saiba tocar piano experimentar o resultado da atividade.

