Zum Hauptinhalt springen

LED-Farben einstellen

Was dieses Beispiel zeigt​

Zwei Arten, das Raster zu beleuchten, nacheinander in einer Schleife:

  1. 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.
  2. 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.

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

Erstellt 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

TypNameBeschreibung
uint8_taddressI2C-Adresse des Boards. Optional, standardmäßig 0x30 (INPUTRONIC_GRID_DEFAULT_ADDR).
grid.begin(TwoWire &wire = Wire)returns bool

Startet 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

TypNameBeschreibung
TwoWire &wireDer zu verwendende I2C-Bus. Optional, standardmäßig Wire.
grid.clearLEDs()returns void

Schaltet 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 void

Legt 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

TypNameBeschreibung
uint8_trowReihe, 0 bis 3.
uint8_tcolSpalte, 0 bis 3.
uint8_trRot, 0 bis 255.
uint8_tgGrün, 0 bis 255.
uint8_tbBlau, 0 bis 255.
uint8_tintensityHelligkeit, 0 (aus) bis 255 (voll). In dieser Form erforderlich.
grid.setAllLEDs(uint8_t r, uint8_t g, uint8_t b)returns void

Setzt alle 16 LEDs mit einem einzigen I2C-Befehl auf dieselbe Farbe. Die Werte werden unverändert gesendet, ohne Skalierung der Intensität.

ReturnsNichts.

Parameter

TypNameBeschreibung
uint8_trRot, 0 bis 255.
uint8_tgGrün, 0 bis 255.
uint8_tbBlau, 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.