Neste projeto vamos construir uma peça de entretenimento usando o Arduino. Todos nós temos o hábito de tocar em Mesa ou Caneta para criar qualquer música aleatória. Claro que pode não ser considerado um bom maneirismo, mas todos gostamos de fazê-lo pelo menos uma vez. Portanto, pensei em levá-lo para o próximo nível usando a capacidade do Arduino de reproduzir tons. Depois de construir este projeto, você seria capaz de gerar tons tocando em qualquer coisa condutiva e criar seus próprios ritmos, é como tocar piano na palma da mão. Parece legal, então vamos construí-lo.
Componentes necessários:
Os materiais necessários para este projeto estão listados abaixo, não sendo obrigatório a adesão dos mesmos. Depois de pegar o conceito, você pode usar sua própria maneira de construí-lo.
- Arduini Pro Mini
- Palestrante Peizo
- Sensor Flex
- Luvas de dedo
- Resistores 10K
- Transistores BC547
- Bateria 9V
Diagrama de circuito e explicação:
O diagrama de circuito para este Arduino Palm Piano é mostrado abaixo.
O projeto usa um total de quatro sensores, ou seja, dois sensores flex e dois pares Darlington atuando como um sensor de toque. Também usamos dois resistores pull down R1 e R2 de valor 10k cada, que atuarão como um resistor pull down para o sensor Flex. Aqui o sensor Flex é usado para gerar três tons diferentes usando um dedo, com base em quanto ele dobrou. Portanto, podemos produzir 6 sons usando dois dedos. Aprenda aqui sobre o Sensor Flex.
Par Darlington:
Antes de prosseguirmos, é importante saber o que é Darlington e como exatamente funciona em nosso projeto. O par Darlington pode ser definido como dois transistores bipolares conectados de tal forma que a corrente amplificada pelo primeiro é posteriormente amplificada pelo segundo transistor. Um par de Darlington é mostrado na imagem abaixo:
Como mostrado acima, usamos dois transistores BC547 cujos coletores estão ligados para reunir e o emissor do primeiro transistor é conectado com a base do segundo transistor. Este circuito atua como um amplificador com ganho, o que significa que qualquer pequeno sinal dado à base do primeiro transistor é suficiente para polarizar a base do segundo transistor. Nosso corpo atua como uma base aqui, então sempre que tocamos a base do transistor, o segundo transistor fica polarizado. Usando isso a nosso favor, construímos o sensor de toque para este projeto.
Os pinos de número 2 e 3 são os pinos de interrupção no Arduino que serão puxados para cima usando resistores pull-up internos e, em seguida, esses pinos serão mantidos no aterramento sempre que o switch Darlington fechar. Dessa forma, cada vez que tocarmos no fio (da base do 1º transistor), uma interrupção será disparada do Arduino.
Usar dois dedos pode produzir apenas dois tipos de tons, portanto, também adicionei um sensor flexível que altera o tom com base em quanto ele é dobrado. Eu programei para produzir três tons diferentes por dedo com base em quanto o dedo (sensor flexível) é dobrado. Você pode aumentar o número se desejar ter mais tons nas pontas dos dedos.
Fiz a placa completa em uma placa de desempenho para que ela caiba facilmente em minhas palmas, mas você também pode usar uma placa de ensaio. Apenas certifique-se de que seu corpo toque o solo do circuito em algum ponto. Depois de soldar tudo, deve ficar parecido com isto
Usei duas luvas de dedo para prender os fios do par Darlington e o sensor flexível na posição mostrada acima. Você pode ter sua própria ideia (melhor se possível) para fixá-los no lugar enquanto toca seus tons.
Programação do Arduino:
O programa para este Arduino Tap Tone Generator é bastante simples. Nós apenas temos que olhar para interrupções nos fios de Darlington e, se encontrarmos alguma, teremos que tocar o tom que depende de quanto o sensor flexível está dobrado. O código completo é fornecido no final deste post, mas eu expliquei alguns pedaços importantes abaixo.
Nota: Este programa funciona com a ajuda da biblioteca “pitches.h”. Portanto, certifique-se de adicionar o arquivo de cabeçalho ao programa antes de compilá-lo. Você pode baixar o arquivo de cabeçalho pitches.h aqui.
Na função de configuração , inicializamos os pinos 2 e 3 como entrada com resistores pull-up. Também os declaramos como pinos de interrupção e executamos o tone1 () quando houver uma interrupção no pino 2 e a função tone2 () quando houver uma interrupção no 3º pino. Essas interrupções serão acionadas sempre que esses pinos ficarem BAIXOS de seu estado puxado.
void setup () {pinMode (2, INPUT_PULLUP); pinMode (3, INPUT_PULLUP); attachInterrupt (digitalPinToInterrupt (2), tone1, LOW); attachInterrupt (digitalPinToInterrupt (3), tone2, LOW); Serial.begin (9600); }
Dentro da função de loop , verificamos constantemente o quanto o sensor flex está dobrado. Meu FlexSensor 1, por exemplo, forneceu valores em torno de 200 quando deixado plano e desceu para 130 quando o dobrei ao máximo, então mapeei o valor de 200 a 130 como 1 a 3, pois tenho que tocar 3 tipos diferentes de tons. Você precisa ajustar essas duas linhas com base nos valores do sensor Flex e no número de tons.
void loop () {flexSensor1 = map (analogRead (A0), 200,130,1,3); // Mapeie com seus próprios valores com base em seu sensor flex flexSensor2 = map (analogRead (A1), 170,185,1,3); // Mapeie com seus próprios valores com base em seu sensor flexível}
Como vimos anteriormente, a função tone1 () será executada quando uma interrupção for detectada no pino 2. O que acontece dentro da função tone1 () é mostrado acima. Observamos os valores do FlexSensor1 e reproduzimos um tom com base no valor do flexSesnor. Os tons serão reproduzidos usando a função Tone do Arduino. Explicamos a função tone () em nosso projeto anterior.
void tone1 () {if (flexSensor1 == 1) tone (8, NOTE_D4,50); else if (flexSensor1 == 2) tone (8, NOTE_A3,50); else if (flexSensor1 == 3) tone (8, NOTE_G4,50); outro tom (8, NOTE_D4,50); }
A linha abaixo é usada para tocar o tom. Você pode tocar qualquer tom que esteja disponível no arquivo de cabeçalho “pitches.h”. A linha acima, por exemplo, reproduz o NOTE_A3 no pino por uma duração de 50 milissegundos.
tom (8, NOTE_A3,50); // tom (PinNum, nome da nota, duração);
Trabalhando:
Assim que seu hardware estiver pronto, carregue o código e monte-o em seus dedos. Certifique-se de que seu corpo esteja tocando o solo do circuito em algum ponto. Agora basta tocar em qualquer material condutor ou em seu corpo e você poderá ouvir o respectivo tom. Você pode tocar sua própria melodia ou música tocando em diferentes intervalos e posições.
O vídeo abaixo mostra o funcionamento completo do projeto. Espero que tenha gostado de construir o projeto, qualquer sugestão ou dúvida pode ser postada na seção de comentários abaixo. Verifique também o nosso projeto de reprodutor de áudio Arduino e gerador de tons do Arduino.