Upalite tipku kad je pritisnete
Što prikazuje ovaj primjer
Svaka tipka upravlja vlastitom LED diodom. Prvi pritisak pali je u boji njezina retka (redak 0 crveno, redak 1 zeleno, redak 2 plavo, redak 3 narančasto), a sljedeći pritisak je gasi. Svaki pritisak ispisuje se u shellu.
Kôd primjera
Ovo je Examples/ButtonLEDControl.py iz fiksiranog modula, bez izmjena. Spremite ga
na svoju pločicu i pokrenite.
# FILE: ButtonLEDControl.py
# AUTHOR: Josip Šimun Kuči @ Soldered
# BRIEF: Example showing button-driven LED toggle on the Inputronic GRID.
# Each button toggles its corresponding LED on or off.
# First press turns the LED on in a row-specific color;
# second press turns it off.
# Demonstrates reading individual pads by row/col coordinate
# and reacting with per-LED color control using the same coordinates.
# WORKS WITH: Inputronic GRID: www.soldered.com
# LAST UPDATED: 2026-05-12
from machine import I2C, Pin
from InputronicGrid import InputronicGrid
import time
# If you aren't using the Qwiic connector, manually enter your I2C pins:
# i2c = I2C(0, scl=Pin(22), sda=Pin(21))
# grid = InputronicGrid(i2c=i2c)
grid = InputronicGrid()
grid.clearLEDs()
print("Press any button to toggle its LED.")
# Toggle state per button, indexed by [row][col]
ledOn = [[False] * 4 for _ in range(4)]
# Colors per row (R, G, B)
rowColor = [
(255, 0, 0), # row 0 — red
( 0, 255, 0), # row 1 — green
( 0, 0, 255), # row 2 — blue
(255, 128, 0), # row 3 — orange
]
# Previous pad state per [row][col] for edge detection
prevState = [[False] * 4 for _ in range(4)]
while True:
for row in range(4):
for col in range(4):
pressed = grid.readPad(row, col)
if pressed and not prevState[row][col]:
ledOn[row][col] = not ledOn[row][col]
if ledOn[row][col]:
r, g, b = rowColor[row]
grid.setLED(row, col, r, g, b, 255)
else:
grid.setLED(row, col, 0, 0, 0, 255)
print("Button (row {}, col {}) → LED {}".format(
row, col, "ON" if ledOn[row][col] else "OFF"))
prevState[row][col] = pressed
time.sleep_ms(20)
🔗Otvorite cijeli primjer
Examples/ButtonLEDControl.py u commitu 36d3def
Očekivani rezultat nakon što dvaput pritisnete tipku u retku 0, stupcu 0:
Press any button to toggle its LED.
Button (row 0, col 0) → LED ON
Button (row 0, col 0) → LED OFF
LED dioda tipke svijetli crveno nakon prvog pritiska, a gasi se nakon drugog. Kada pločica ne odgovara, InputronicGrid() izaziva iznimku s porukom
Inputronic GRID not found. Check wiring.
Korištene funkcije
InputronicGrid(i2c=None, address=INPUTRONIC_GRID_DEFAULT_ADDR)returns InputronicGridStvara objekt upravljačkog programa i provjerava odgovara li pločica. Ako je i2c ostavljen na None, stvara I2C(0, scl=Pin(22), sda=Pin(21)) na portovima koje modul prepoznaje (ESP32, ESP8266 i jedna Soldered pločica), a na portu koji ne prepoznaje izaziva iznimku.
ReturnsObjekt upravljačkog programa. Izaziva iznimku s porukom 'Inputronic GRID not found. Check wiring.' kada pločica ne odgovara.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
I2C | i2c | Gotov objekt machine.I2C. Neobavezno. |
int | address | I2C adresa pločice. Neobavezno, zadano 0x30. |
grid.clearLEDs()returns NoneGasi svih 16 LED dioda. Isto je kao setAllLEDs(0, 0, 0).
ReturnsNišta.
grid.readPad(row, col)returns boolPita pločicu je li jedna tipka trenutačno pritisnuta, prema njezinu mjestu u mreži.
ReturnsTrue dok je tipka pritisnuta. False kada nije pritisnuta ili kada I2C komunikacija ne uspije.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
int | row | Redak, od 0 do 3, odozgo prema dolje. |
int | col | Stupac, od 0 do 3, slijeva nadesno. |
grid.setLED(row, col, r, g, b, intensity=128)returns NonePostavlja boju LED diode ispod jedne tipke, prema njezinu mjestu u mreži. Svaka vrijednost boje množi se s intensity / 255 prije slanja. I2C pogreška se zanemaruje.
ReturnsNišta.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
int | row | Redak, od 0 do 3. |
int | col | Stupac, od 0 do 3. |
int | r | Crvena, od 0 do 255. |
int | g | Zelena, od 0 do 255. |
int | b | Plava, od 0 do 255. |
int | intensity | Svjetlina, od 0 (isključeno) do 255 (puna). Neobavezno, zadano 128. |
Sve zajedno
InputronicGrid() postavlja I2C i provjerava pločicu, a clearLEDs() započinje
sa svim LED diodama ugašenima. Petlja svakih 20 ms čita svih 16 tipki funkcijom readPad() i
uspoređuje svaku s njezinim stanjem iz prethodnog prolaza, pa se tipka koja ostaje pritisnuta
računa kao jedan pritisak. Kod novog pritiska primjer mijenja zapis te tipke u ledOn i
poziva setLED() s istim retkom i stupcem, punim intenzitetom u boji
retka ili s 0, 0, 0 da je ugasi.