Per començar | Elements d'entrada | Programació CircuitPython | Recursos CITCEA | |
Elements no electrònics | Elements de sortida | Programació Arduino | ||
Projectes | Elements de control | Dades pràctiques | Inici |
Les sortides es poden fer servir per fer sonar tons en algun tipus d'altaveu; per exemple un brunzidor piezoelèctric. En aquest cas obtindrem un so o un altre en funció de la freqüència dels polsos.
La sortida no cal que sigui PWM.
Atès que només podem indicar valors enters de la freqüència, caldrà fer una aproximació. La taula següent indica els valors de freqüència per obtenir les notes de l'escala central del piano:
Nota | Freqüència teòrica (Hz) | Valor recomanat (Hz) | |||
do3 | C4 | 261,626 | 262 | ||
do#3 | re b3 | C#4 | Db4 | 277,183 | 277 |
re3 | D4 | 293,665 | 294 | ||
re#3 | mi b3 | D#4 | Eb4 | 311,127 | 311 |
mi3 | E4 | 329,628 | 330 | ||
fa3 | F4 | 349,228 | 349 | ||
fa#3 | sol b3 | F#4 | Gb4 | 369,994 | 370 |
sol3 | G4 | 391,995 | 392 | ||
sol#3 | la b3 | G#4 | Ab4 | 415,305 | 415 |
la3 | A4 | 440,000 | 440 | ||
la#3 | si b3 | A#4 | Bb4 | 466,164 | 466 |
si3 | B4 | 493,883 | 494 | ||
do4 | C5 | 523,251 | 523 |
La instrucció tone és la que ens permet fer sonar una nota. Cal indicar la pota per on volem que surti la nota (primer paràmetre) i la freqüència (segon paràmentre). Podem indicar la durada de la nota (en mil·lisegons) afegint un tercer paràmetre. La funció notone permet aturar el so en la pota indicada.
En el següent programa fem sonar primer un La durant mig segon i després un Do durant un altre mig segon i després aturem el so durant dos segons. Després es tornarà a repetir. El brunzidor està connectat a D12.
void setup() { pinMode(12, OUTPUT); }
void loop() { tone(12, 440, 250); // La durant 0,25 s delay(500); // Espera mig segon tone(12, 262); // Do delay(250); // Durada 0,25 s noTone(12); // Silenci delay(2000); // Espera dos segons }
Si volem fer melodies més elaborades, encara que la qualitat del so no és molt bona, podem fer servir la següent definició de freqüències per a les notes i llavors al programa indiquem la nota que volem.
#define N_Do0 33 #define N_ReB0 35 #define N_Re0 37 #define N_MiB0 39 #define N_Mi0 41 #define N_Fa0 44 #define N_SolB0 46 #define N_Sol0 49 #define N_LaB0 52 #define N_La0 55 #define N_SiB0 58 #define N_Si0 62 #define N_Do1 65 #define N_ReB1 69 #define N_Re1 73 #define N_MiB1 78 #define N_Mi1 82 #define N_Fa1 87 #define N_SolB1 93 #define N_Sol1 98 #define N_LaB1 104 #define N_La1 110 #define N_SiB1 117 #define N_Si1 123 #define N_Do2 131 #define N_ReB2 139 #define N_Re2 147 #define N_MiB2 156 #define N_Mi2 165 #define N_Fa2 175 #define N_SolB2 185 #define N_Sol2 196 #define N_LaB2 208 #define N_La2 220 #define N_SiB2 233 #define N_Si2 247 #define N_Do3 262 #define N_ReB3 277 #define N_Re3 294 #define N_MiB3 311 #define N_Mi3 330 #define N_Fa3 349 #define N_SolB3 370 #define N_Sol3 392 #define N_LaB3 415 #define N_La3 440 #define N_SiB3 466 #define N_Si3 494 #define N_Do4 523 #define N_ReB4 554 #define N_Re4 587 #define N_MiB4 622 #define N_Mi4 659 #define N_Fa4 698 #define N_SolB4 740 #define N_Sol4 784 #define N_LaB4 831 #define N_La4 880 #define N_SiB4 932 #define N_Si4 988 #define N_Do5 1047 #define N_ReB5 1109 #define N_Re5 1175 #define N_MiB5 1245 #define N_Mi5 1319 #define N_Fa5 1397 #define N_SolB5 1480 #define N_Sol5 1568 #define N_LaB5 1661 #define N_La5 1760 #define N_SiB5 1865 #define N_Si5 1976 #define N_Do6 2093 #define N_ReB6 2217 #define N_Re6 2349 #define N_MiB6 2489 #define N_Mi6 2637 #define N_Fa6 2794 #define N_SolB6 2960 #define N_Sol6 3136 #define N_LaB6 3322 #define N_La6 3520 #define N_SiB6 3729 #define N_Si6 3951 #define N_Do7 4186
void setup() { pinMode(12, OUTPUT); }
void loop() { tone(12, N_La4, 250); // La durant 0,25 s delay(500); // Espera mig segon tone(12, N_Do4); // Do delay(250); // Durada 0,25 s noTone(12); // Silenci delay(500); // Espera mig segon }
En aquest web, les fotografies marcades amb [AF] són del web d'Adafruit, les marcades amb [SF] del web d'Sparkfun i les marcades amb [AU] del web d'Arduino.
Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.