En aquest post anem a programar la melodia Marxa Imperial de Star Wars amb Arduino i un brunzidor.
Per això:
- Repassarem què és un brunzidor i tipus de bunzidors.
- Aprendrem a calcular la resistència que acompanya el brunzidor.
- Veurem el muntatge o esquema del circuit.
- Estudiarem la PROGRAMACIÓ de la melodia de STAR WARS línia per línia de codi.
Aleshores, què és un brunzidor?
Es tracta d’un transductor piezoelèctric que transforma l’electricitat en so fent vibrar una membrana metàl·lica.
Té dos terminals o potes i no té polaritat, és a dir que aquest parell de terminals es poden connectar a positiu o negatiu indiferentment.
Però realment, com funciona el brunzidor?
Tenim dos elèctrodes (positiu i negatiu) que estan tocant una làmina de material piezoelèctric per ambdues cares. El material piezoelèctric té la propietat de que varia el seu volum quan passa a través d’ell el corrent elèctric.
Llavors quan aquest material piezoelèctric vibra, fa vibrar una plaqueta o membrana de metall que és la que realment produeix el so.
Brunzidors actius i passius:
Aquests dos tipus de brunzidors es diferencien en que:
- Els actius només necessiten ser alimentats per corrent continu (5V) per emetre un so per causa de que disposen d’un oscil·lador intern.
- Els passius necessiten que el pin de la placa proporcioni un senyal oscil·latori a una determinada freqüència mitjançant la instrucció tone.
L’avantatge dels passius és que podem variar el to variant la freqüència i així produir melodies. És per això que utilitzarem un brunzidor passiu.
Connectarem el brunzidor al pin que triem de la placa Arduino per fer sonar així la nota corresponent. El pin destinat per a això pot ser PWM o no, és indiferent.
Mitjançant el programa l’activarem com a pin de sortida amb la instrucció:
pinMode (altaveu, OUTPUT);
En funció de la nota que vulguem reproduir s’aplicarà la freqüència corresponent:
La instrucció que utilitzarem per a això serà:
tone (pin, freqüència, durada);
Paràmetres:
- pin on aquesta connectat el brunzidor.
- freqüència de la nota en Hz (herz).
- durada de la nota.
Resistència limitadora de intensidad:
Arribats a aquest punt hi hauria la possibilitat de plantejar-nos si al brunzidor passiu caldria connectar-li una resistència en sèrie per limitar la intensitat que el travessa.
El pin de la placa compatible amb Arduino ens marca la limitació de la intensitat. Si demanem més intensitat podríem arribar a malmetre la placa.
El corrent màxim que pot donar un pin digital de la placa no ha de sobrepassar els 40 mA. El valor recomanat ronda els 20 mA.
Anem a comprovar quin corrent consumeix el brunzidor i en funció d’això veurem si hem de posar una resistència per limitar aquesta intensitat.
Mitjançant la llei d’Ohm aplicada al brunzidor:
Resistència del brunzidor = 16 Ω (dades de fabricant)
Al ser 321,5 mA molt més gran que la limitació de 40 mA optem per posar en sèrie una resistència de 220 Ω.
Comprovem amb la llei d’Ohm:
Amb la qual cosa tenim un consum adequat proper als 20 mA recomanats.
Muntatge del circuit:
Programació melodia STAR WARS:
A mesura que anem millorant les nostres habilitats musicals intentarem pujar més cançons 🙂
Us deixem amb la programació i explicació de la Marxa Imperial de Star Wars:
Pots copiar-la i enganxar-la al teu IDE d’Arduino.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 |
/* Star Wars - Marxa Imperial*/ int BrunzidorPin = 11; // definim el pin al qual connectarem el brunzidor. /*definim cadascuna de les freqüències de les notes musicals. c, d, e ... són les notes en notació anglesa. Quan van acompanyades de la lletra S significa que aquesta nota és sostingut. Quan van acompanyades de la lletra H significa que aquesta nota està en una octava superior (High). */ int c=261; int d=294; int e=329; int f=349; int g=391; int gS=415; int a=440; int aS=455; int b=466; int cH=523; int cSH=554; int dH=587; int dSH=622; int eH=659; int fH=698; int fSH=740; int gH=783; int gSH=830; int aH=880; void setup() { pinMode(BrunzidorPin, OUTPUT); // definim la variable BrunzidorPin com una sortida. } void loop() { /* Comença la melodia, per a això utilitzem la funció tone amb els paràmetres: - el pin de sortida, en el nostre cas l'11. - la nota que ja hem definit les seves freqüències. - la durada de la nota en ms. Després de la funció tone utilitzem la funció delay per a crear un silenci de la valor igual a la nota i així separar les notes unes d'altres (si no, no es marca bé la nota). Afegim els 50 ms simplement perquè ens sembla que aquest petit augment del silenci fa que s'escolti millor la melodia però es pot treure sense problemes. */ tone(BrunzidorPin, a, 500); delay(500+50); tone(BrunzidorPin, a, 500); delay(500+50); tone(BrunzidorPin, a, 500); delay(500+50); tone(BrunzidorPin, f, 350); delay(350+50); tone(BrunzidorPin, cH, 150); delay(150+50); tone(BrunzidorPin, a, 500); delay(500+50); tone(BrunzidorPin, f, 350); delay(350+50); tone(BrunzidorPin, cH, 150); delay(150+50); tone(BrunzidorPin, a, 1000); delay(1000+50); tone(BrunzidorPin, eH, 500); delay(500+50); tone(BrunzidorPin, eH, 500); delay(500+50); tone(BrunzidorPin, eH, 500); delay(500+50); tone(BrunzidorPin, fH, 350); delay(350+50); tone(BrunzidorPin, cH, 150); delay(150+50); tone(BrunzidorPin, gS, 500); delay(500+50); tone(BrunzidorPin, f, 350); delay(350+50); tone(BrunzidorPin, cH, 150); delay(150+50); tone(BrunzidorPin, a, 1000); delay(1000+50); tone(BrunzidorPin, aH, 500); delay(500+50); tone(BrunzidorPin, a, 350); delay(350+50); tone(BrunzidorPin, a, 150); delay(150+50); tone(BrunzidorPin, aH, 500); delay(500+50); tone(BrunzidorPin, gSH, 250); delay(250+50); tone(BrunzidorPin, gH, 250); delay(250+50); tone(BrunzidorPin, fSH, 125); delay(125+50); tone(BrunzidorPin, fH, 125); delay(125+50); tone(BrunzidorPin, fSH, 250); delay(250+50); delay(250); tone(BrunzidorPin, aS, 250); delay(250+50); tone(BrunzidorPin, dSH, 500); delay(500+50); tone(BrunzidorPin, dH, 250); delay(250+50); tone(BrunzidorPin, cSH, 250); delay(250+50); // virtuosisme :))) tone(BrunzidorPin, cH, 125); delay(125+50); tone(BrunzidorPin, b, 125); delay(125+50); tone(BrunzidorPin, cH, 250); delay(250+50); delay(250); tone(BrunzidorPin, f, 125); delay(125+50); tone(BrunzidorPin, gS, 500); delay(500+50); tone(BrunzidorPin, f, 375); delay(375+50); tone(BrunzidorPin, a, 125); delay(125+50); tone(BrunzidorPin, cH, 500); delay(500+50); tone(BrunzidorPin, a, 375); delay(375+50); tone(BrunzidorPin, cH, 125); delay(125+50); tone(BrunzidorPin, eH, 1000); delay(1000+50); tone(BrunzidorPin, aH, 500); delay(500+50); tone(BrunzidorPin, a, 350); delay(350+50); tone(BrunzidorPin, a, 150); delay(150+50); tone(BrunzidorPin, aH, 500); delay(500+50); tone(BrunzidorPin, gSH, 250); delay(250+50); tone(BrunzidorPin, gH, 250); delay(250+50); tone(BrunzidorPin, fSH, 125); delay(125+50); tone(BrunzidorPin, fH, 125); delay(125+50); tone(BrunzidorPin, fSH, 250); delay(250+50); delay(250); tone(BrunzidorPin, aS, 250); delay(250+50); tone(BrunzidorPin, dSH, 500); delay(500+50); tone(BrunzidorPin, dH, 250); delay(250+50); tone(BrunzidorPin, cSH, 250); delay(250+50); tone(BrunzidorPin, cH, 125); delay(125+50); tone(BrunzidorPin, b, 125); delay(125+50); tone(BrunzidorPin, cH, 250); delay(250+50); delay(250); tone(BrunzidorPin, f, 250); delay(250+50); tone(BrunzidorPin, gS, 500); delay(500+50); tone(BrunzidorPin, f, 375); delay(375+50); tone(BrunzidorPin, cH, 125); delay(125+50); tone(BrunzidorPin, a, 500); delay(500+50); tone(BrunzidorPin, f, 375); delay(375+50); tone(BrunzidorPin, c, 125); delay(125+50); tone(BrunzidorPin, a, 1000); delay(1000+50); delay(2000); // dos segons per tornar a començar. } |
A la nostra pàgina trobareu el projecte del “CAIXA DE MÚSICA” amb el qual podràs ampliar els teus coneixements sobre melodies amb Arduino.
Hi trobaràs les cançons “Feliç aniversari” i la nadala “Jingle Bells” lliures de drets d’autor. ¡Fes una ullada!
També pots programar en ella la cançó d’aquest post o qualsevol altra!
IMPORTANT: OFERIM GRANS DESCOMPTES PER A CENTRES EDUCATIUS! SI ERES UN CENTRE EDUCATIU DEMANA PRESSUPOST PERSONALITZAT AL SEGÜENT ENLLAÇ
[product_page id=”26″]
Comparteix si t’ha agradat 🙂
Salutacions de l’equip d’InputMakers i Segueix sempre aprenent!