Skip to main content

Postavljanje boja LED dioda

Što ovaj primjer prikazuje​

Dva načina paljenja rešetke, jedan za drugim, u petlji:

  1. Lemnu površinu po lemnu površinu, red po red, svaka LED dioda prikazuje crvenu, zelenu i plavu boju po 80 ms, a zatim se gasi.
  2. Svih 16 LED dioda zajedno prikazuje crvenu, zelenu, plavu i bijelu boju po 400 ms, a zatim se gase na 300 ms.

Komentar u zaglavlju skice navodi i treći korak, rotaciju boja pomoću bitmaske, ali kod u ovom commitu ga ne sadrži.

Kod primjera​

Ovo je examples/SetLEDs/SetLEDs.ino iz fiksirane biblioteke, nepromijenjen.

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);

}

Tijekom rada nema ispisa na serijskom sučelju: rezultat je gore opisani slijed LED dioda. Samo kada pločica ne odgovori, skica ispisuje Inputronic GRID not found. Check wiring. brzinom 115200 baud i zaustavlja se.

Korištene funkcije​

InputronicGrid(uint8_t address = INPUTRONIC_GRID_DEFAULT_ADDR)returns InputronicGrid

Stvara upravljački objekt za jedan GRID. Primjer ga deklarira kao InputronicGrid grid; bez adrese, pa koristi zadanu 0x30.

ReturnsUpravljački objekt.

Parametri

TipNazivOpis
uint8_taddressI2C adresa pločice. Neobavezno, prema zadanim postavkama 0x30 (INPUTRONIC_GRID_DEFAULT_ADDR).
grid.begin(TwoWire &wire = Wire)returns bool

Pokreće I2C sabirnicu pomoću wire.begin() i provjerava odgovara li pločica na svojoj adresi.

Returnstrue kada je pločica potvrdila prijem na sabirnici, false kada nije pronađena.

Parametri

TipNazivOpis
TwoWire &wireI2C sabirnica koja se koristi. Neobavezno, prema zadanim postavkama Wire.
grid.clearLEDs()returns void

Gasi svih 16 LED dioda. Isto je kao setAllLEDs(0, 0, 0).

ReturnsNišta.

grid.setLED(uint8_t row, uint8_t col, uint8_t r, uint8_t g, uint8_t b, uint8_t intensity)returns void

Postavlja boju LED diode ispod jedne lemne površine, prema njezinu mjestu u rešetki. Svaka se vrijednost boje prije slanja skalira s intensity / 255.

ReturnsNišta.

Parametri

TipNazivOpis
uint8_trowRed, od 0 do 3.
uint8_tcolStupac, od 0 do 3.
uint8_trCrvena, od 0 do 255.
uint8_tgZelena, od 0 do 255.
uint8_tbPlava, od 0 do 255.
uint8_tintensitySvjetlina, od 0 (isključeno) do 255 (puna). U ovom je obliku obavezna.
grid.setAllLEDs(uint8_t r, uint8_t g, uint8_t b)returns void

Postavlja svih 16 LED dioda na istu boju jednom I2C naredbom. Vrijednosti se šalju onakve kakve jesu, bez skaliranja intenziteta.

ReturnsNišta.

Parametri

TipNazivOpis
uint8_trCrvena, od 0 do 255.
uint8_tgZelena, od 0 do 255.
uint8_tbPlava, od 0 do 255.

Uvijek proslijedite svih šest argumenata obliku funkcije setLED() s redom i stupcem. S pet argumenata poziva se setLED(index, r, g, b, intensity = 128), a prvi se broj čita kao indeks LED diode.

Sve zajedno​

Korak 1 poziva setLED() s punim intenzitetom (255) za svaki red i stupac, pa vrijednosti boja stižu do LED diode nepromijenjene. Korak 2 koristi setAllLEDs(), jednu naredbu za cijelu rešetku, a clearLEDs() završava ciklus s ugašenim svim LED diodama.

Za paljenje bilo kojeg skupa LED dioda jednom bojom jednom naredbom biblioteka ima i setLEDMask(mask, r, g, b): bit i 16-bitne maske pali LED diodu i u redoslijedu podatkovne linije (numeracija setLED() s pet argumenata, a ne red po red), a svaka LED dioda čiji je bit obrisan gasi se. Nijedan primjer ga ne koristi u ovom commitu.