Skip to main content

Buzzer

Een buzzer is een klein onderdeel dat geluid maakt. Vanuit je code kies je hoe hoog de toon is en hoe hard hij klinkt.

Materiaal​

  • Nano op het shieldArduino Nano RP2040 Connect op het Leaphy Murphy ShieldHet Leaphy Murphy Shield, de groene printplaat waar de Nano in past
  • BuzzerMet twee pinnenEen zwarte buzzer met twee pinnen

De buzzer heeft twee pinnen: een lange (de plus, met een +-teken) en een korte (de min, GND).

Controlevraag

Welke pin van de buzzer gaat naar GND?

Antwoord

De korte pin. De lange pin (met het +-teken) gaat naar een digitale uitgang van de microcontroller.

Aansluiten​

De buzzer met de plus-pin en de min-pin aangewezen

Pinnen van de buzzer​

  • GND (korte pin): de min
  • Digital (+) (lange pin): hier komt het stuursignaal binnen

Aansluiten op het shield​

Aansluitschema: de lange pin van de buzzer aan D6 van het shield, de korte pin aan GND

Op het shield heeft elke pin van de Nano een eigen rijtje van drie pinnen. De binnenste, naast de Nano, is de pin zelf (bijvoorbeeld D7). De middelste is 3V3 en de buitenste is GND. Sluit een onderdeel aan op het rijtje van zijn pin: dan zitten signaal, 3V3 en GND naast elkaar, en past er een stekker van drie pinnen op. In het schema zegt de legenda welke draad op welke pin komt.

Beide op het rijtje van D6:

  • Digital (+) (lange pin) op de binnenste rij, de pin D6
  • GND (korte pin) op de buitenste rij, GND
Controlevraag

Mag je de +-pin van de buzzer rechtstreeks aan 3.3V aansluiten?

Antwoord

Nee. De buzzer moet aan een digitale pin zitten, zodat je hem vanuit je code aan en uit kunt zetten. Aan 3.3V zou hij continu aan staan.

Code​

Een buzzer maakt geluid als je zijn pin heel snel aan en uit zet. Dat doet PWM uit machine: hoe vaak per seconde de pin aan en uit gaat, is de toonhoogte.

Voorbeeld​

from machine import Pin, PWM
from time import sleep

buzzer = PWM(Pin("D6"))
buzzer.freq(440)
buzzer.duty_u16(32768)
sleep(1)
buzzer.duty_u16(0)

Je hoort één seconde een toon van 440 Hz (een A) en daarna is het stil.

Uitleg​

  • PWM(Pin("D6")) maakt van pin D6 een PWM-pin. De naam staat tussen aanhalingstekens, zoals hij op het bord staat.
  • buzzer.freq(440) kiest de toonhoogte in hertz: hoe vaak per seconde de pin aan en uit gaat. Lager getal, lagere toon.
  • buzzer.duty_u16(32768) kiest hoe lang de pin per keer aan staat, tussen 0 en 65535. Met 32768 staat hij de helft van de tijd aan: dan klinkt de buzzer het hardst. Met 0 is hij stil.
Waarom niet set_buzzer?

De bibliotheek leaphymicropython heeft ook set_buzzer, maar die accepteert nu alleen toonhoogtes tot 255 Hz, en dan hoor je vooral gebrom. Daarom gebruik je hier PWM uit machine.

Opdracht: piepje van 1 seconde

Laat de buzzer op pin D6 precies 1 seconde een toon van 1000 Hz spelen en daarna stil zijn.

Tip

Verander alleen het getal bij freq(). Stil maak je de buzzer met duty_u16(0).

Oplossing
from machine import Pin, PWM
from time import sleep

buzzer = PWM(Pin("D6"))
buzzer.freq(1000)
buzzer.duty_u16(32768)
sleep(1)
buzzer.duty_u16(0)