Zum Hauptinhalt springen

Töne auf dem Buzzer abspielen

Was dieses Beispiel zeigt​

Töne mit frei gewählten Frequenzen auf dem passiven Buzzer abspielen. Buzzer.ino spielt eine aufsteigende Folge von fünf Tönen und wiederholt sie dann.

Der Beispielcode​

Select Board
Buzzer.ino
/**
**************************************************
*
* @file Buzzer.ino
* @brief Buzzer test for Soldered Button, LED & Buzzer Board
* Host: ESP32 WROVER-E
*
* Plays a sweep of frequencies to test the buzzer.
*
* @authors Fran Fodor @ soldered.com
***************************************************/

#include "ButtonLedBuzzerBoard-SOLDERED.h"

ButtonLedBuzzerBoard_Soldered board;

const uint16_t frequencies[] = {500, 1000, 2000, 3000, 4000};
const uint8_t numFreqs = sizeof(frequencies) / sizeof(frequencies[0]);

void setup()
{
Wire.begin(); // if not using Qwiic, specify I2C pins: Wire.begin(21, 22)
board.begin();
delay(2000);
}

void loop()
{
for (uint8_t i = 0; i < numFreqs; i++)
{
board.setBuzzer(frequencies[i]);
delay(400);
board.setBuzzer(0);
delay(200);
}

delay(1000);
}

Dieses Beispiel verwendet außerdem Wire, das nicht Teil der Soldered-Button-LED-Buzzer-Board-Library ist: Es gehört zum Board-Package Ihres Arduino-Boards. Wire.begin() tritt dem I2C-Bus als Controller bei. Ohne Qwiic zeigt der Kommentar in der Skizze, wie Sie Ihre eigenen I2C-Pins übergeben, zum Beispiel Wire.begin(21, 22) auf dem ESP32-Host, für den das Beispiel geschrieben wurde.

Erwartetes Ergebnis:

Es gibt keine serielle Ausgabe. Etwa zwei Sekunden nach dem Start der Skizze spielt der Buzzer 500, 1000, 2000, 3000 und 4000 Hz für jeweils 0,4 s, mit 0,2 s Stille zwischen den Tönen. Danach bleibt er 1 s lang still und beginnt von vorn.

Verwendete Funktionen​

ButtonLedBuzzerBoard_Soldered(uint8_t address = BLB_DEFAULT_ADDRESS)returns None

Erstellt das Board-Objekt und merkt sich dessen I2C-Adresse. Alle drei LEDs sind im Farbpuffer der Library zunächst aus. Das Beispiel verwendet die Standardadresse 0x30, die das Board hat, wenn alle drei Adressschalter auf OFF stehen.

ReturnsKonstruktor; kein Rückgabewert.

Parameter

TypNameBeschreibung
uint8_taddressDie I2C-Adresse des Boards, 0x30 bis 0x37, wie sie über den Adressschalter eingestellt wird. Standardwert ist BLB_DEFAULT_ADDRESS (0x30).
begin()returns void

Startet den I2C-Bus durch Aufruf von Wire.begin(). Rufen Sie sie einmal in setup() auf, vor allen anderen Funktionen.

ReturnsNichts.

setBuzzer(uint16_t freq)returns void

Sendet eine Tonfrequenz in Hz an den passiven Buzzer. Die Beispiele übergeben 0, um den Ton zu beenden.

ReturnsNichts.

Parameter

TypNameBeschreibung
uint16_tfreqTonfrequenz in Hz. Die Beispiele übergeben 0, um den Ton zu beenden.

Zusammenfassung​

Das Beispiel geht davon aus, dass ein Ton bis zum nächsten Aufruf von setBuzzer() weiterklingt: Es wartet mit delay(), solange der Ton erklingt, und ruft dann setBuzzer(0) auf, um ihn zu beenden. Um eine andere Folge abzuspielen, ändern Sie die Werte in frequencies[]; numFreqs richtet sich von selbst nach der Größe des Arrays.