LED-Farben einstellen
Was dieses Beispiel zeigt
Ansteuerung der drei RGB-LEDs, einzeln und alle zusammen. LEDs.ino lässt jede LED nacheinander Rot, Grün und Blau anzeigen und zeigt dann dieselben Farben auf allen drei gleichzeitig.
Der Beispielcode
/**
**************************************************
*
* @file LEDs.ino
* @brief LED test for Soldered Button, LED & Buzzer Board
* Host: ESP32 WROVER-E
*
* Cycles each LED through red, green, blue individually,
* then cycles all LEDs together.
*
* @authors Fran Fodor @ soldered.com
***************************************************/
#include "ButtonLedBuzzerBoard-SOLDERED.h"
ButtonLedBuzzerBoard_Soldered board;
void setup()
{
Wire.begin(); // if not using Qwiic, specify I2C pins: Wire.begin(21, 22)
board.begin();
delay(2000);
board.setAllLEDs(0, 0, 0);
}
void loop()
{
// Test each LED individually
for (uint8_t i = 0; i < 3; i++)
{
board.setAllLEDs(0, 0, 0);
board.setLED(i, 255, 0, 0); delay(400); // red
board.setLED(i, 0, 255, 0); delay(400); // green
board.setLED(i, 0, 0, 255); delay(400); // blue
}
// All LEDs together
board.setAllLEDs(255, 0, 0); delay(500); // red
board.setAllLEDs( 0, 255, 0); delay(500); // green
board.setAllLEDs( 0, 0, 255); delay(500); // blue
board.setAllLEDs(255, 255, 255); delay(500); // white
board.setAllLEDs( 0, 0, 0); delay(500); // off
}
Dieses Beispiel verwendet außerdem Wire. Es gehört nicht zur Bibliothek Soldered-Button-LED-Buzzer-Board, sondern ist Teil des Board-Pakets Ihres Arduino. Wire.begin() tritt dem I2C-Bus als Controller bei. Ohne Qwiic zeigt der Kommentar im Sketch, 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 des Sketches zeigt zuerst LED 0, dann LED 1, dann LED 2 jeweils 0,4 s lang Rot, Grün und Blau, während die anderen beiden aus bleiben. Danach zeigen alle drei LEDs jeweils 0,5 s lang Rot, Grün, Blau und Weiß und schalten sich für 0,5 s aus. Der gesamte Zyklus dauert etwa 6 s und wiederholt sich.
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, wie mit dem Adressschalter eingestellt. Standardwert ist BLB_DEFAULT_ADDRESS (0x30). |
begin()returns voidStartet den I2C-Bus durch Aufruf von Wire.begin(). Rufen Sie die Funktion 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. |
setLED(uint8_t index, uint8_t r, uint8_t g, uint8_t b)returns voidSetzt die Farbe einer LED. Die Bibliothek speichert die Farben aller drei LEDs und sendet jedes Mal alle an das Board, sodass die anderen beiden LEDs ihre Farben behalten. Ein index von 3 oder mehr wird ignoriert.
ReturnsNichts.
Parameter
| Typ | Name | Beschreibung |
|---|---|---|
uint8_t | index | Welche LED, 0 bis 2. |
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. |
Zusammenfassung
Jede Farbe besteht aus drei Zahlen von 0 bis 255, je eine für Rot, Grün und Blau. setLED(i, 255, 0, 0) ergibt also volles Rot und setAllLEDs(255, 255, 255) Weiß. Der Sketch ruft vor dem Durchgang jeder LED setAllLEDs(0, 0, 0) auf, sodass immer nur eine LED leuchtet. setLED() allein lässt die anderen beiden LEDs unverändert.
Die Bibliothek enthält außerdem setLEDs(), das neun Werte entgegennimmt und alle drei LEDs in einem Aufruf auf unterschiedliche Farben setzt. Dieses Beispiel verwendet es nicht.