2.1 Brojač pritisaka tipke
Do sada je pločica samo govorila. U ovom primjeru počinje slušati: čitat ćeš tipku pomoću Soldered NULA MINI pločice i brojati koliko je puta pritisnuta, ispisujući tekući ukupan broj u Serial Monitor.
U ovoj dokumentaciji naučit ćeš:
- Kako spojiti tipku bez dodatnih komponenti, koristeći otpornik ugrađen u čip
- Kako konfigurirati pin kao ulaz pomoću
pinMode()iINPUT_PULLUP - Kako pročitati taj pin pomoću
digitalRead() - Zašto pritisnuta tipka daje LOW, a ne HIGH
Potreban hardver:
- 1x Soldered NULA MINI pločica
- 1x Breadboard
- 1x Tipka
- 2x Jumper žice
- 1x USB-C kabel
Spajanje komponenti
Prati pet koraka ispod. Svaka fotografija snimljena je s istog položaja, pa je možeš usporediti s prethodnom i vidjeti točno što se promijenilo.
1. Umetni NULA MINI pločicu na breadboard
Utisni pločicu u jedan kraj breadboarda tako da njezina dva reda pinova sjednu s obje strane središnjeg kanala, s čipom okrenutim prema dolje. Pritisni je ravnomjerno dok svi pinovi ne sjednu.

Odvoji trenutak da nađeš dva pina koja ovaj primjer koristi. Imena pinova ispisana su duž oba ruba pločice, a svaki pin sjedi u svom numeriranom redu. Na fotografiji iznad pločica zauzima redove 25 do 30, što stavlja IO19 u red 27 i GND u red 30.
2. Postavi tipku
Utisni tipku u sredinu breadboarda tako da premosti središnji kanal, nekoliko redova dalje od pločice. Na fotografiji su njezine nožice u redovima 15 i 17.

3. Spoji GND na tipku
Masa ide u dva skoka, koristeći plavu − vodilicu duž ruba breadboarda kao dijeljenu liniju mase.
- Prva jumper žica: iz reda u kojem je GND (red 30 na fotografiji) do plave − vodilice.
- Druga jumper žica: s te iste plave − vodilice natrag u red 15, na f–j strani tipke.

4. Spoji IO19 na tipku
Sada signalna žica. Povuci jednu jumper žicu iz reda u kojem je IO19 (red 27 na fotografiji) u red 17, na a–e strani tipke.

Primijeti da dvije žice dolaze do tipke s suprotnih strana: red 15 na f–j strani, red 17 na a–e strani. To je dijagonalni par opisan iznad, i to je ono što tipku čini stvarnim prekidačem.
5. Spoji pločicu na računalo
Priključi USB-C kabel u pločicu. LED-ica napajanja se upali čim pločica dobije struju.

Čitanje ulaza
Izlazni pin je onaj koji pločica pobuđuje; ulazni pin je onaj koji mjeri. digitalRead() prijavljuje što nađe, kao HIGH ili LOW.
Pin koji nije spojen ni na što je problem: kaže se da lebdi, i skuplja dovoljno električnog šuma iz okoline da sam od sebe skače između HIGH i LOW. Pločica bi brojala pritiske koji se nikada nisu dogodili. Pinu treba nešto što ga drži na poznatoj vrijednosti kad tipka ništa ne radi.
Za to služi INPUT_PULLUP. On uključuje otpornik unutar čipa koji nježno veže pin na 3.3 V, pa pin čita HIGH dok se ništa drugo ne događa. Jedini posao tipke je spojiti taj pin na GND, što nadglasa slabi unutarnji otpornik i povuče pin na 0 V.
Kod
/*
Ovo je varijabla kojoj predajemo broj pina na koji smo spojili TIPKU.
NULA pločica ima logiku imenovanja pinova ovako: IO19, gdje je 19 broj koji dajemo varijabli.
*/
const int BUTTON_PIN = 19;
/*
Ova varijabla drži vrijednost našeg brojača.
Svaki put kada je tipka pritisnuta, vrijednost brojača povećat će se za jedan.
*/
int counter = 0;
void setup() {
/*
pinMode() je funkcija koja konfigurira zadani pin da se ponaša ili kao ulaz ili kao izlaz.
Budući da naš pin mora otkriti je li tipka pritisnuta, pin ćemo staviti u INPUT_PULLUP mod.
INPUT_PULLUP uključuje mali otpornik unutar čipa koji nježno veže pin na 3.3V. Bez njega bi pin
lebdio, dakle ne bi bio spojen ni na što i skupljao bi slučajni šum, a pločica bi čitala pritiske koji
se nikada nisu dogodili. Budući da otpornik pin drži na visokoj razini, tipka mora samo spojiti pin na GND, pa nikakvi dodatni
dijelovi na breadboardu nisu potrebni.
*/
pinMode(BUTTON_PIN, INPUT_PULLUP);
/*
Serial.begin() inicijalizira serijsku komunikaciju između NULA pločice i računala.
Ovdje ga koristimo da bismo mogli ispisati trenutnu vrijednost brojača u Serial Monitor.
*/
Serial.begin(115200);
/*
Ispiši početnu poruku da znamo da se program uspješno pokrenuo.
*/
Serial.println("Button Counter Example started!");
Serial.println("Press the button to increase the counter...");
}
void loop() {
/*
digitalRead() je funkcija koja čita vrijednost sa zadanog digitalnog pina, ili HIGH ili LOW.
Primijeti da je vrijednost obrnuta od onoga što bi mogao očekivati. Pull-up otpornik drži pin na 3.3V
dok je tipka otpuštena, pa pločica čita HIGH, a pritisak tipke spaja pin na GND pa čita
LOW. Tipka spojena na ovaj način naziva se active low.
*/
bool reading = digitalRead(BUTTON_PIN);
/*
Ako je tipka pritisnuta, povećaj brojač za jedan i ispiši ga u Serial Monitor.
Budući da ova verzija ne uključuje debounce, za jedan pritisak može se pojaviti više brojeva.
*/
if (reading == LOW) {
counter++;
Serial.print("Counter: ");
Serial.println(counter);
/*
Čekaj da se tipka otpusti prije nego dopustimo novo brojanje.
To sprječava brojač da raste previše brzo dok je tipka još pritisnuta.
*/
while (digitalRead(BUTTON_PIN) == LOW) {
// Čekaj dok se tipka ne otpusti
}
}
}
Što bi trebao vidjeti
Prenesi skicu, pa otvori Tools → Serial Monitor i postavi baud rate na 115200. Pojavljuju se dvije početne poruke, a svaki pritisak dodaje liniju.

Cijeli primjer
Pogledaj cijeli kod primjera na linku ispod:
2.1_Button_Counter.ino
Primjer koji broji koliko je puta tipka pritisnuta i ispisuje ukupan broj preko Seriala.