Vídeo: Arduino - Piano Piezo de três botões: 4 etapas
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
O piano de três botões é um projeto para iniciantes com alguma experiência no uso do Arduino.
Eu fui levado inadvertidamente a tentar criar isto enquanto brincava com a campainha piezoeléctrica pela primeira vez. Foi TÃO alto! Ao tentar descobrir vários métodos para tornar a campainha mais silenciosa e experimentar diferentes frequências usando as funções tone () e noTone (), percebi que seria divertido tentar misturar a campainha piezoelétrica com meus outros componentes favoritos do meu Arduino kit: botões e potenciômetro.
Os materiais necessários incluem:
- 1 Arduino
- 1 breadboard
- 1 cabo USB
- Jumper Wires (várias cores)
- 1 Resistor de 330 Kilo-ohm
- 1 Piezo Buzzer
- 3 botões de pressão
- 1 potenciômetro
Etapa 1: Piezo Buzzer
Para começar, configure o piezo na placa de ensaio do Arduino. Um lado dele (o lado da perna mais curta) precisa correr para o chão. O outro lado (o lado mais longo da perna) precisa se conectar a um pino de entrada digital. Optei por conectá-lo a 8.
Etapa 2: botões de pressão
Em seguida, é hora de configurar os botões de pressão. Como o piezo, os botões precisam ser conectados ao aterramento e a um pino de entrada digital.
Etapa 3: Potenciômetro
A etapa final na construção física é o potenciômetro. Os potenciômetros vêm em algumas formas diferentes. Usaremos o potenciômetro como um divisor de voltagem, portanto, todas as três pernas precisam ser conectadas.
Perna Direita: Barra Negativa (Terra)
Perna do meio: Pino analógico 0
Perna Esquerda: Barra Positiva
Etapa 4: Código
Ao escrever o código para este projeto, fiz referência a informações sobre alguns tipos específicos de funções:
tom()
noTone () (Acabei não usando este. Defini a frequência para "0" em vez disso.)
mapa()
Outra referência maravilhosa para usuários iniciantes dos Piezo Buzzers pode ser encontrada aqui. Embora a ideia de alterar o som da campainha piezoelétrica pareça simples, pode ser um pouco opressor no início!
A função tone () pode ser dividida em três partes:
- Pino (o pino ao qual a campainha piezoelétrica está conectada)
- Frequência (a frequência do som em hertz)
- Duração (a duração do som dada em milissegundos)
Basicamente, é assim: tom (pino, frequência, duração). O terceiro componente (duração) é opcional, enquanto os outros dois são necessários para o funcionamento da campainha. O componente de "frequência" da função de tom é o que pode ser considerado "o som" que está sendo produzido pela campainha.
Você também notará que o código apresenta dois outros bits de código. Existem algumas instruções if / else configuradas para dizer ao Arduino o que fazer se botões diferentes forem pressionados, bem como configurá-lo com "frequência = 0" em situações em que nenhum dos botões está sendo pressionado. Dentro das instruções if / else, as funções map () são usadas para mapear a escala do potenciômetro em um conjunto de frequências. Isso pode ser alterado! Brinque com diferentes valores de frequência para ver quais sons diferentes você consegue obter do piezo.
Verifique o código que usei para criar o piano de três botões aqui ou abaixo.
piezoPin int = 8; // Configure o pino conectado ao Piezo.
int sensorPin = 0; // Configure o pino conectado ao sensor (o potenciômetro). int sensorValue = 0;
botão interno 1 = 5; // Configure os pinos de entrada conectados aos botões.
botão interno 2 = 4; botão interno 3 = 3;
frequência interna = 0;
const int delayTime = 500; // Configure uma constante para a variável de tempo de atraso na função tone ().
void setup () {
pinMode (button1, INPUT_PULLUP); pinMode (button2, INPUT_PULLUP); pinMode (button3, INPUT_PULLUP); }
void loop () {
sensorValue = analogRead (sensorPin); // Leia o sensor. // Mapeie os diferentes valores do potenciômetro para um conjunto de frequências para cada um dos três botões. if (digitalRead (button1) == LOW) {freqüência = map (sensorValue, 0, 1023, 400, 499); } else if (digitalRead (button2) == LOW) {frequência = map (sensorValue, 0, 1023, 500, 599); } else if (digitalRead (button3) == LOW) {frequência = map (sensorValue, 0, 1023, 600, 699); } mais {frequência = 0; } tom (piezoPin, frequência, delayTime); // Configure as funções tone () com variáveis. }