Vollständige Demo
Was dieses Beispiel zeigt
Alle drei Teile des Boards in einem Sketch: die Zustände der Taster werden im Serial Monitor ausgegeben, alle LEDs wechseln alle zwei Sekunden die Farbe, und bei jedem Wechsel ertönt ein kurzer Piepton.
Der Beispielcode
/**
**************************************************
*
* @file FullDemo.ino
* @brief Full demo for Soldered Button, LED & Buzzer Board
* Host: ESP32 WROVER-E
*
* - Prints button states to Serial (115200 baud)
* - Cycles all LEDs through colors every 2 seconds
* - Short beep on each color change
*
* @authors Fran Fodor @ soldered.com
***************************************************/
#include "ButtonLedBuzzerBoard-SOLDERED.h"
ButtonLedBuzzerBoard_Soldered board;
const uint8_t colors[][3] = {
{255, 0, 0}, // red
{ 0, 255, 0}, // green
{ 0, 0, 255}, // blue
{255, 255, 0}, // yellow
{ 0, 255, 255}, // cyan
{255, 0, 255}, // magenta
{255, 255, 255}, // white
{ 0, 0, 0}, // off
};
const uint8_t numColors = sizeof(colors) / sizeof(colors[0]);
uint8_t colorIdx = 0;
unsigned long lastColorChange = 0;
void setup()
{
Serial.begin(115200);
Wire.begin(); // if not using Qwiic, specify I2C pins: Wire.begin(21, 22)
board.begin();
delay(2000);
Serial.println("Button, LED & Buzzer Board - Full Demo");
board.setAllLEDs(0, 0, 0);
}
void loop()
{
Serial.print("BTN1:");
Serial.print(board.isButton1Pressed() ? "ON " : "off");
Serial.print(" BTN2:");
Serial.print(board.isButton2Pressed() ? "ON " : "off");
Serial.print(" BTN3:");
Serial.println(board.isButton3Pressed() ? "ON " : "off");
if (millis() - lastColorChange > 2000)
{
uint8_t r = colors[colorIdx][0];
uint8_t g = colors[colorIdx][1];
uint8_t b = colors[colorIdx][2];
board.setAllLEDs(r, g, b);
board.setBuzzer(2000);
delay(100);
board.setBuzzer(0);
colorIdx = (colorIdx + 1) % numColors;
lastColorChange = millis();
}
delay(100);
}
Dieses Beispiel verwendet außerdem Wire. Es gehört nicht zur Bibliothek Soldered-Button-LED-Buzzer-Board, sondern ist im Board-Package Ihres Arduino-Boards enthalten. Wire.begin() tritt dem I2C-Bus als Controller bei. Ohne Qwiic zeigt der Kommentar im Sketch, wie Sie eigene I2C-Pins übergeben, zum Beispiel Wire.begin(21, 22) auf dem ESP32-Host, für den das Beispiel geschrieben wurde.
Erwartetes Ergebnis:
Öffnen Sie den Serial Monitor mit 115200 Baud. Nach der Kopfzeile erscheint etwa alle 0,1 s eine Statuszeile. Ein gedrückter Taster zeigt ON statt off; in der letzten Zeile unten ist zum Beispiel BTN1 gedrückt.
Button, LED & Buzzer Board - Full Demo
BTN1:off BTN2:off BTN3:off
BTN1:off BTN2:off BTN3:off
BTN1:ON BTN2:off BTN3:off
Gleichzeitig wechseln alle 2 s alle drei LEDs gemeinsam durch Rot, Grün, Blau, Gelb, Cyan, Magenta, Weiß und Aus, und der Buzzer piept bei jedem Wechsel 0,1 s lang mit 2000 Hz.
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 Bibliothek 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, je nach Stellung der Adressschalter. 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.
setAllLEDs(uint8_t r, uint8_t g, uint8_t b)returns voidSetzt alle drei LEDs auf dieselbe Farbe und sendet sie an das Board. setAllLEDs(0, 0, 0) schaltet jede LED aus.
ReturnsNichts.
Parameter
| Typ | Name | Beschreibung |
|---|---|---|
uint8_t | r | Helligkeit von Rot, 0 (aus) bis 255 (volle Helligkeit). |
uint8_t | g | Helligkeit von Grün, 0 bis 255. |
uint8_t | b | Helligkeit von Blau, 0 bis 255. |
isButton1Pressed()returns boolLiest die Taster und meldet, ob BTN1 gedrückt ist. Jeder Aufruf liest das Board.
Returnstrue, solange BTN1 gedrückt ist, sonst false.
isButton2Pressed()returns boolLiest die Taster und meldet, ob BTN2 gedrückt ist. Jeder Aufruf liest das Board.
Returnstrue, solange BTN2 gedrückt ist, sonst false.
isButton3Pressed()returns boolLiest die Taster und meldet, ob BTN3 gedrückt ist. Jeder Aufruf liest das Board.
Returnstrue, solange BTN3 gedrückt ist, sonst false.
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. |
Alles zusammen
Der Sketch prüft die Zeit mit millis(), anstatt zu warten, sodass die Tasterzeilen weiter ausgegeben werden, während die Farben wechseln. Die Farben stehen in der Tabelle colors[] als Rot-, Grün- und Blauwerte, und colorIdx schaltet darin weiter. isButton1Pressed(), isButton2Pressed() und isButton3Pressed() lesen jeweils separat das Board, weil jede Funktion readButtons() aufruft und ein Bit übernimmt. Wenn Sie alle drei Taster auf einmal benötigen, liefert ein einzelner Aufruf von readButtons(), wie auf den anderen Seiten, alle drei Taster in einem Byte.