Zum Hauptinhalt springen

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​

Select Board
FullDemo.ino
/**
**************************************************
*
* @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.

Serial MonitorAutoscrollShow timestampNewline115200 baud
Message (Enter to send message to the board)
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 None

Erstellt 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

TypNameBeschreibung
uint8_taddressDie I2C-Adresse des Boards, 0x30 bis 0x37, je nach Stellung der Adressschalter. 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.

setAllLEDs(uint8_t r, uint8_t g, uint8_t b)returns void

Setzt alle drei LEDs auf dieselbe Farbe und sendet sie an das Board. setAllLEDs(0, 0, 0) schaltet jede LED aus.

ReturnsNichts.

Parameter

TypNameBeschreibung
uint8_trHelligkeit von Rot, 0 (aus) bis 255 (volle Helligkeit).
uint8_tgHelligkeit von Grün, 0 bis 255.
uint8_tbHelligkeit von Blau, 0 bis 255.
isButton1Pressed()returns bool

Liest die Taster und meldet, ob BTN1 gedrückt ist. Jeder Aufruf liest das Board.

Returnstrue, solange BTN1 gedrückt ist, sonst false.

isButton2Pressed()returns bool

Liest die Taster und meldet, ob BTN2 gedrückt ist. Jeder Aufruf liest das Board.

Returnstrue, solange BTN2 gedrückt ist, sonst false.

isButton3Pressed()returns bool

Liest 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 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.

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.