Skip to main content

Čitanje tipki

Što prikazuje ovaj primjer​

Svih 16 tipki čita se svakih 50 ms i ispisuje kao karta 4x4 u Serial Monitoru pri 115200 baud: X za pritisnutu tipku, . za otpuštenu. LED diode ostaju ugašene.

Kôd primjera​

Ovo je examples/ReadButtons/ReadButtons.ino iz fiksirane biblioteke, bez izmjena.

Select Board
ReadButtons.ino
/**
**************************************************
*
* @file ReadButtons.ino
* @brief Example showing how to read all 16 buttons on the Inputronic Grid.
*
* Reads all 16 button states every 50 ms and prints a 4×4 grid
* map to the Serial monitor. Pressed buttons show 'X'; released
* buttons show '.'.
*
* 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);
while (!Serial)
;

if (!grid.begin())
{
Serial.println("Inputronic GRID not found. Check wiring.");
while (1)
;
}

Serial.println("Inputronic GRID ready.\n");
grid.clearLEDs();
}

void loop()
{
Serial.println("+---------+");
for (uint8_t row = 0; row < 4; row++)
{
Serial.print("| ");
for (uint8_t col = 0; col < 4; col++)
{
Serial.print(grid.readPad(row, col) ? 'X' : '.');
Serial.print(' ');
}
Serial.println("|");
}
Serial.println("+---------+\n");

delay(50);
}

Očekivani rezultat kada ništa nije pritisnuto:

Serial MonitorAutoscrollShow timestampNewline115200 baud
Message (Enter to send message to the board)
Inputronic GRID ready.

+---------+
| . . . . |
| . . . . |
| . . . . |
| . . . . |
+---------+

Nova karta slijedi svakih 50 ms. Dok držite tipku, X zauzima mjesto njezine .: gornji redak karte je redak 0, a prvi znak u retku je stupac 0. Kada pločica ne odgovara, skica ispisuje Inputronic GRID not found. Check wiring. i zaustavlja se.

Korištene funkcije​

InputronicGrid(uint8_t address = INPUTRONIC_GRID_DEFAULT_ADDR)returns InputronicGrid

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

ReturnsObjekt upravljačkog programa.

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.readPad(uint8_t row, uint8_t col)returns bool

Pita pločicu je li jedna tipka trenutačno pritisnuta, prema njezinu mjestu u mreži. Svaki poziv šalje pločici kratki I2C zahtjev i čita njezin jednobajtni odgovor.

Returnstrue dok je tipka pritisnuta, false kada nije.

Parametri

TipNazivOpis
uint8_trowRedak, od 0 do 3, odozgo prema dolje.
uint8_tcolStupac, od 0 do 3, slijeva nadesno.

Sastavljanje cjeline​

setup() čeka Serial Monitor, provjerava pločicu pomoću begin() i gasi LED diode. Svaki prolaz loop() jednom poziva readPad() za svaki redak i stupac i ispisuje rezultat kao jedan redak po retku.

Za čitanje svih 16 tipki jednim zahtjevom i odgovorom umjesto šesnaest, biblioteka ima i readAllPads(), koja vraća 16-bitnu masku s postavljenim bitom row * 4 + col za svaku pritisnutu tipku. Nijedan primjer je ne koristi u ovoj reviziji.