#02 Začetnik ⏱ 20 min
ESP32: Tipka prižge LED
Prvi digitalni vhod. Pritisneš tipko → LED sveti. Naučiš se, kaj je pull-up upor in zakaj pin bere »1«, ko ni nič pritisnjeno.
Odpri interaktivno v 3D →Kaj se naučiš
INPUT_PULLUP in zakaj je potrebendigitalRead in obrnjena logikaPostavitev tipke čez utorDve letvi GND
Potrebuješ
- ESP32 DevKit V1 — mikrokrmilnik z WiFi in Bluetooth
- Breadboard (preizkusna plošča) — povezovanje brez spajkanja
- Jumper žice — M–M, M–F, F–F
- LED dioda — svetleča dioda 5 mm
- Upor — 220 Ω, 1 kΩ, 10 kΩ …
- Tipka (push button) — taktilno stikalo 6×6 mm
Kako deluje
Tipka na breadboardu stoji čez utor. Znotraj sta nožici na isti strani trajno spojeni; pritisk spoji še obe strani. Ko povežemo diagonalno nasprotni nožici (25 zgoraj, 27 spodaj), zagotovo gremo skozi stikalni kontakt.
Težava pri vhodu: če pin ni povezan na nič, »lebdi« in bere naključno 0 ali 1. Pull-up upor (vgrajen v ESP32, ~45 kΩ) pin nežno vleče na 3,3 V → stabilen HIGH. Tipka ga spoji na GND in »premaga« upor → LOW. Zato je logika obrnjena: if (digitalRead(BTN) == LOW) = pritisnjeno.
Vezava
| Od | Do | Zakaj |
|---|---|---|
| ESP32 · D4 (GPIO 4) | Tipka, nožica v stolpcu 25 (zgoraj) | Pin je vhod z vklopljenim notranjim pull-upom: brez pritiska bere HIGH (1). |
| Tipka, diagonalna nožica (stolpec 27, spodaj) | letev − | Ko pritisneš, tipka spoji GPIO 4 neposredno na GND → pin bere LOW (0). |
| ESP32 · D2 | LED → 220 Ω → letev − | Enako kot v projektu 1 — izhod, ki ga krmilimo. |
| ESP32 · GND (oba pina) | letvi − zgoraj in spodaj | Zgornja in spodnja letev nista spojeni — zato uporabimo oba GND pina. |
Korak za korakom
- LED (anoda 19c, katoda 20c) in upor 20a → letev −, kot v projektu 1.
- Tipka: postavi jo tako, da zajame vrstici e in f (čez utor), nožici v stolpcih 25 in 27.
- Žica D4 → 25a (zgornja polovica).
- Kratka žica 27j → spodnja letev −.
- GND → zgornja letev −, GND (drugi pin) → spodnja letev −.
- Naloži kodo. LED sveti, dokler držiš tipko. Odpri Serial Monitor (115200) in opazuj vrednosti.
Koda (Arduino IDE)
// Projekt 2: Tipka prižge LED (z notranjim pull-upom)
const int LED_PIN = 2;
const int BTN_PIN = 4;
void setup() {
pinMode(LED_PIN, OUTPUT);
pinMode(BTN_PIN, INPUT_PULLUP); // notranji upor proti 3,3 V
Serial.begin(115200);
}
void loop() {
int state = digitalRead(BTN_PIN); // 1 = spuščena, 0 = pritisnjena
if (state == LOW) {
digitalWrite(LED_PIN, HIGH);
Serial.println("Pritisnjeno!");
} else {
digitalWrite(LED_PIN, LOW);
}
delay(20); // malo »umiritve« (debounce)
}Tipične težave
Tipka »deluje« tudi brez pritiska? Nožici sta na istem paru — premakni eno nožico v drug stolpec.
Trepetanje v Serial Monitorju ob pritisku = bouncing. Rešitev: delay(20–50) ali preverjanje z millis().
GPIO 34–39 za to ne bodo delovali — na njih ni pull-upa.
Več projektov (še 7) z brezplačno prijavo v tečaju. Projekti →