LED-Farben einstellen
Was dieses Beispiel zeigt
Zwei Arten, das Raster zu beleuchten, nacheinander in einer Schleife:
- Pad für Pad, Reihe für Reihe, zeigt jede LED jeweils 80 ms lang Rot, Grün und Blau und schaltet sich dann aus.
- Alle 16 LEDs zeigen gemeinsam jeweils 400 ms lang Rot, Grün, Blau und Weiß, dann schalten sie sich für 300 ms aus.
Der Kopfkommentar des Sketches nennt außerdem einen dritten Schritt, eine Farbrotation mit einer Bitmaske, doch der Code in diesem Commit enthält ihn nicht.
Der Beispielcode
Dies ist examples/SetLEDs/SetLEDs.ino aus der angepinnten Library, unverändert.
/**
**************************************************
*
* @file SetLEDs.ino
* @brief Example showing LED control on the Inputronic Grid.
*
* Demonstrates three LED control methods in sequence:
* 1. Sweep each LED individually through red, green, and blue.
* 2. Fill all 16 LEDs with a single color (solid fills).
* 3. Animate a color rotation across all 16 LEDs using a bitmask.
*
* Hardware wiring:
* - Connect Inputronic Grid to host via Qwiic / I2C
* (SDA, SCL, 3V3, GND).
*
* @authors Josip Šimun Kuči @ soldered.com
***************************************************/
#include <InputronicGrid.h>
InputronicGrid grid;
void setup()
{
Serial.begin(115200);
if (!grid.begin())
{
Serial.println("Inputronic GRID not found. Check wiring.");
while (1)
;
}
grid.clearLEDs();
}
void loop()
{
// ── 1. Sweep individual LEDs ─────────────────────────────────────────
for (uint8_t row = 0; row < 4; row++)
{
for (uint8_t col = 0; col < 4; col++)
{
grid.setLED(row, col, 255, 0, 0, 255); // red
delay(80);
grid.setLED(row, col, 0, 255, 0, 255); // green
delay(80);
grid.setLED(row, col, 0, 0, 255, 255); // blue
delay(80);
grid.setLED(row, col, 0, 0, 0, 255); // off
}
}
// ── 2. Solid fills ───────────────────────────────────────────────────
grid.setAllLEDs(255, 0, 0 ); delay(400); // red
grid.setAllLEDs(0, 255, 0 ); delay(400); // green
grid.setAllLEDs(0, 0, 255); delay(400); // blue
grid.setAllLEDs(255, 255, 255); delay(400); // white
grid.clearLEDs(); delay(300);
}
Während des Ablaufs gibt es keine serielle Ausgabe: Das Ergebnis ist die oben beschriebene LED-Sequenz.
Nur wenn das Board nicht antwortet, gibt der Sketch
Inputronic GRID not found. Check wiring. mit 115200 Baud aus und hält an.
Verwendete Funktionen
InputronicGrid(uint8_t address = INPUTRONIC_GRID_DEFAULT_ADDR)returns InputronicGridErstellt das Driver-Objekt für ein GRID. Das Beispiel deklariert es als InputronicGrid grid; ohne Adresse, daher verwendet es den Standardwert 0x30.
ReturnsDas Driver-Objekt.
Parameter
| Typ | Name | Beschreibung |
|---|---|---|
uint8_t | address | I2C-Adresse des Boards. Optional, standardmäßig 0x30 (INPUTRONIC_GRID_DEFAULT_ADDR). |
grid.begin(TwoWire &wire = Wire)returns boolStartet den I2C-Bus mit wire.begin() und prüft, ob das Board an seiner Adresse antwortet.
Returnstrue, wenn das Board am Bus bestätigt hat, false, wenn es nicht gefunden wurde.
Parameter
| Typ | Name | Beschreibung |
|---|---|---|
TwoWire & | wire | Der zu verwendende I2C-Bus. Optional, standardmäßig Wire. |
grid.clearLEDs()returns voidSchaltet alle 16 LEDs aus. Es entspricht setAllLEDs(0, 0, 0).
ReturnsNichts.
grid.setLED(uint8_t row, uint8_t col, uint8_t r, uint8_t g, uint8_t b, uint8_t intensity)returns voidLegt die Farbe der LED unter einem Pad fest, anhand ihrer Position im Raster. Jeder Farbwert wird vor dem Senden mit intensity / 255 skaliert.
ReturnsNichts.
Parameter
| Typ | Name | Beschreibung |
|---|---|---|
uint8_t | row | Reihe, 0 bis 3. |
uint8_t | col | Spalte, 0 bis 3. |
uint8_t | r | Rot, 0 bis 255. |
uint8_t | g | Grün, 0 bis 255. |
uint8_t | b | Blau, 0 bis 255. |
uint8_t | intensity | Helligkeit, 0 (aus) bis 255 (voll). In dieser Form erforderlich. |
grid.setAllLEDs(uint8_t r, uint8_t g, uint8_t b)returns voidSetzt alle 16 LEDs mit einem einzigen I2C-Befehl auf dieselbe Farbe. Die Werte werden unverändert gesendet, ohne Skalierung der Intensität.
ReturnsNichts.
Parameter
| Typ | Name | Beschreibung |
|---|---|---|
uint8_t | r | Rot, 0 bis 255. |
uint8_t | g | Grün, 0 bis 255. |
uint8_t | b | Blau, 0 bis 255. |
Übergeben Sie bei der Form von setLED() mit Reihe und Spalte immer alle sechs Argumente. Bei
fünf Argumenten wird stattdessen setLED(index, r, g, b, intensity = 128) aufgerufen,
und die erste Zahl wird als LED-Index gelesen.
Zusammenfassung
Schritt 1 ruft setLED() für jede Reihe und Spalte mit voller Intensität (255) auf,
sodass die Farbwerte unverändert an die LED gelangen. Schritt 2 verwendet setAllLEDs(), einen
Befehl für das ganze Raster, und clearLEDs() beendet den Zyklus mit ausgeschalteten LEDs.
Um eine beliebige Gruppe von LEDs mit einem einzigen Befehl in einer Farbe zu beleuchten, hat die Library außerdem
setLEDMask(mask, r, g, b): Bit i der 16-Bit-Maske schaltet LED i ein, und zwar in
der Reihenfolge der Datenleitung (die Nummerierung des setLED() mit fünf Argumenten, nicht
Reihe für Reihe), und jede LED, deren Bit nicht gesetzt ist, wird ausgeschaltet. Kein Beispiel verwendet sie in
diesem Commit.