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
/**
**************************************************
*
* @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 NoneErstellt 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
| Typ | Name | Beschreibung |
|---|---|---|
uint8_t | address | Die I2C-Adresse des Boards, 0x30 bis 0x37, wie sie über den Adressschalter eingestellt wird. Standardwert ist BLB_DEFAULT_ADDRESS (0x30). |
begin()returns voidStartet 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 voidSendet eine Tonfrequenz in Hz an den passiven Buzzer. Die Beispiele übergeben 0, um den Ton zu beenden.
ReturnsNichts.
Parameter
| Typ | Name | Beschreibung |
|---|---|---|
uint16_t | freq | Tonfrequenz 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.