Buzzer

De Wiket
La revisió el 16:49, 17 maig 2016 per Duhow (discussió | contribucions) (Es crea la pàgina amb «El buzzer, també anomenat '''zumbador''' / '''brunzidor''' o '''altaveu piezoelèctric''', produeix un só o un brunzit en el moment en el que se li aplica corrent el...».)
(dif.) ← Versió més antiga | Versió actual (dif.) | Versió més nova → (dif.)
Salta a la navegació Salta a la cerca

El buzzer, també anomenat zumbador / brunzidor o altaveu piezoelèctric, produeix un só o un brunzit en el moment en el que se li aplica corrent elèctric.

Hi ha dos tipus de buzzer, el actiu i el passiu. El buzzer actiu només genera un únic só en el moment en que se li aplica electricitat. En canvi, amb el buzzer passiu, es poden generar distints sons, no segons la intensitat que li arriba (entrada analògica), si no segons el temps que se li aplica l'electricitat.

Passiu

Per poder generar els tons, s'ha d'enviar escritura digital, i controlar-la amb retards, però no en mil·lisegons, si no en microsegons. Per fer això, s'utilitza la funció delayMicroseconds.

digitalWrite(6, HIGH);
delayMicroseconds(800);
digitalWrite(6, LOW);
delayMicroseconds(800);

Degut a que els distints sons es fan segons el temps que s'ha d'esperar, si volem implementar una funció per fer sonar a una determinada freqüència durant un segon, les vegades que hem d'executar aquestes funcions en bucle no seràn iguals entre dos freqüències diferents.

Així doncs, partint de que 1 segon = 1.000.000 microsegons, es deriva la següent fòrmula per saber quantes vegades s'ha d'executar el bucle: <math>r =\frac{1000000}{FREQ*2}</math>

El problema és que Arduino només pot treballar amb int de 2 bytes (16 bits), per tant deixa a valors no superiors a 32768. Adaptant la fòrmula, el càlcul es realitza d'aquesta forma: <math>r = \frac{31250}{FREQ * 2} * 32</math>