Buzzer
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>