En aquest projecte anem a construir un entreteniment amb Arduino. Tots tenim aquest costum de tocar Table o Pen per crear música aleatòria. Per descomptat, no es pot considerar com un bon manierisme, però a tots ens agrada fer-ho almenys una vegada. Per tant, vaig pensar a portar-lo al següent nivell utilitzant la capacitat d’Arduino per reproduir tons. Un cop construït aquest projecte, podríeu generar tons tocant els dits sobre qualsevol cosa conductora i crear els vostres propis ritmes, és com tocar el piano al palmell. Sona bé, així que, construïm-lo.
Components necessaris:
Els materials necessaris per a aquest projecte s’enumeren a continuació, no és obligatori adherir-s’hi. Un cop agafat el concepte, podeu utilitzar la vostra pròpia manera de construir-lo.
- Arduini Pro Mini
- Peizo Speaker
- Sensor flexible
- Guants de dit
- Resistències 10K
- BC547 Transistors
- Bateria de 9V
Diagrama del circuit i explicació:
A continuació es mostra el diagrama del circuit per a aquest piano Palm Arduino.

El projecte utilitza un total de quatre sensors, és a dir, dos sensors flex i dos parells Darlington que actuen com a sensor tàctil. També hem utilitzat dues resistències de tirada R1 i R2 de valor 10k cadascuna, que actuaran com a resistència de tracció cap avall per al sensor Flex. Aquí el sensor Flex s’utilitza per generar tres tons diferents mitjançant un dit, en funció de la quantitat que ha doblegat. Per tant, podem produir 6 sons amb dos dits. Obteniu informació sobre el sensor Flex.
Parell Darlington:
Abans de continuar, és important saber què és Darlington i com funciona exactament en el nostre projecte. El parell de Darlington es pot definir com dos transistors bipolars connectats de manera que el corrent amplificat pel primer sigui amplificat pel segon transistor. A la imatge següent es mostra un parell de Darlington:

Com es mostra més amunt, hem utilitzat dos transistors BC547 els col·lectors dels quals estan lligats per reunir-se i l’emissor del primer transistor està connectat amb la base del segon transistor. Aquest circuit actua com un amplificador amb un guany, el que significa que qualsevol petit senyal donat a la base del primer transistor és suficient per polaritzar la base del segon transistor. El nostre cos actua com a terra aquí, de manera que cada vegada que toquem la base del transistor, el segon transistor queda esbiaixat. Utilitzant això al nostre favor, hem creat el sensor tàctil per a aquest projecte.
Els pins número 2 i 3 són els pins d'interrupció de l'Arduino que s'elevaran mitjançant resistències internes de tracció i, a continuació, aquests pins es mantindran a terra sempre que es tanqui l'interruptor de Darlington. D'aquesta manera cada vegada que ens toqui el filferro (des de la base d'1 st transistor) una interrupció es dispara des del Arduino.
L'ús de dos dits només pot produir dos tipus de tons, de manera que també he afegit un sensor de flexió que alterarà el to segons la seva flexió. He programat produir tres tons diferents per dit en funció de la flexió del dit (sensor flex). Podeu augmentar el nombre si voleu tenir més tons a la punta dels dits.
Vaig fer la pissarra completa en una pissarra perfecta perquè s’adapti fàcilment a les meves mans, però també podeu utilitzar una pissarra. Assegureu-vos que el cos toqui el terra del circuit en algun moment. Un cop ho hàgiu soldat tot, hauria de ser semblant a això


He utilitzat dos guants de dit per assegurar els cables del parell Darlington i el sensor de flexió a la posició tal com es mostra a dalt. Podeu arribar a la vostra pròpia idea (millor si és possible) per assegurar-les al seu lloc mentre toqueu els vostres tons.
Programació Arduino:
El programa d’aquest generador de tons Arduino Tap és bastant senzill. Només hem de vigilar les interrupcions dels cables de Darlington i, si se’n troba, hem de reproduir el to que depèn de la quantitat de sensor flex que estigui doblegada. El codi complet es dóna al final d’aquest post, però he explicat alguns trossos importants a continuació.
Nota: Aquest programa funciona amb l'ajut de la biblioteca "pitches.h". Assegureu-vos que heu afegit el fitxer de capçalera al programa abans de compilar-lo. Podeu descarregar el fitxer de capçalera pitches.h des d’aquí.
A la funció de configuració , inicialitzem els pins 2 i 3 com a entrada amb resistències pull-up. També els declarem com a pins d'interrupció i executem el to 1 () quan hi ha una interrupció al pin 2 i la funció tone2 () quan hi ha una interrupció al tercer pin. Aquestes interrupcions es desencadenaran cada vegada que aquestes clavilles es baixen del seu estat de tracció.
void setup () {pinMode (2, INPUT_PULLUP); pinMode (3, INPUT_PULLUP); attachInterrupt (digitalPinToInterrupt (2), tone1, LOW); attachInterrupt (digitalPinToInterrupt (3), tone2, LOW); Serial.begin (9600); }
Dins de la funció de bucle , comprovem constantment quant es dobla el sensor de flexió. El meu FlexSensor 1, per exemple, va donar valors al voltant de 200 quan es va deixar pla i va baixar fins a 130 quan el vaig doblar al màxim, de manera que he assignat el valor de 200 a 130 entre 1 i 3, ja que he de jugar 3 tipus diferents. de tons. Heu de modificar aquestes dues línies en funció dels valors del sensor Flex i del nombre de tons.
bucle buit () {flexSensor1 = map (analogRead (A0), 200,130,1,3); // Mapeu-vos amb els vostres propis valors basats en el sensor flex flexSensor2 = map (analogRead (A1), 170.185,1,3); // Mapeu-vos amb els vostres propis valors segons el vostre sensor de flexió}
Com hem vist anteriorment, la funció tone1 () s'executarà quan es detecti una interrupció al pin 2. El que passa dins de la funció tone1 () es mostra a la part superior. Observem els valors de FlexSensor1 i interpretem un to basat en el valor flexSesnor. Els tons es reproduiran mitjançant la funció Tone d’Arduino. Hem explicat la funció tone () en el nostre projecte anterior.
to buit1 () {if (flexSensor1 == 1) to (8, NOTE_D4,50); else if (flexSensor1 == 2) to (8, NOTE_A3,50); else if (flexSensor1 == 3) to (8, NOTE_G4,50); else ton (8, NOTE_D4,50); }
La línia següent s’utilitza per tocar el to. Podeu reproduir qualsevol to disponible al fitxer de capçalera "pitches.h". La línia anterior, per exemple, reprodueix el NOTE_A3 al pin durant 50 mil segons.
to (8, NOTE_A3,50); // to (PinNum, nom de la nota, durada);
Treball:
Quan el maquinari estigui a punt, pengeu el codi i monteu-lo als dits. Assegureu-vos que el cos toqui el terra del circuit en algun moment. Ara simplement toqueu qualsevol material conductor o el vostre cos i hauríeu de poder sentir el to corresponent. Podeu reproduir la vostra pròpia melodia o música tocant a diferents intervals i posicions diferents.
El vídeo següent mostra el funcionament complet del projecte. Espero que us hagi agradat construir el projecte, qualsevol suggeriment o pregunta es pot publicar a la secció de comentaris a continuació. Consulteu també el nostre projecte Arduino Audio Player i Arduino Tone Generator Project.
