ESP32: Копче пали LED
Првиот дигитален влез. Притискаш копче → LED свети. Учиш што е pull-up отпорник и зошто пинот чита „1“ кога ништо не е притиснато.
Отвори го интерактивно во 3D →Што учиш
Потребно
- ESP32 DevKit V1 — микроконтролер со WiFi и Bluetooth
- Breadboard (протоплоча) — поврзување без лемење
- Jumper жици — M–M, M–F, F–F
- LED диода — светлечка диода 5 mm
- Отпорник — 220 Ω, 1 kΩ, 10 kΩ…
- Тастер (push button) — тактилен прекинувач 6×6 mm
Како работи
Копчето на breadboard-от стои преку жлебот. Внатре, двете нозе на иста страна се трајно споени; притискањето ги спојува и двете страни. Кога поврзуваме дијагонално спротивни нозе (25 горе, 27 долу), сигурно минуваме низ прекинувачкиот контакт.
Проблемот со влез: ако пинот не е поврзан на ништо, тој „лебди“ и чита случајно 0 или 1. Pull-up отпорник (вграден во ESP32, ~45 kΩ) нежно го влече пинот на 3.3 V → стабилно HIGH. Копчето го спојува на GND и го „победува“ отпорникот → LOW. Затоа логиката е обратна: if (digitalRead(BTN) == LOW) = притиснато.
Поврзување
| Од | До | Зошто |
|---|---|---|
| ESP32 · D4 (GPIO 4) | Копче, нога во колона 25 (горе) | Пинот е влез со вклучен внатрешен pull-up: без притискање чита HIGH (1). |
| Копче, дијагонална нога (колона 27, долу) | − шина | Кога притиснеш, копчето го спојува GPIO 4 директно на GND → пинот чита LOW (0). |
| ESP32 · D2 | LED → 220 Ω → − шина | Исто како во проект 1 — излезот што го контролираме. |
| ESP32 · GND (двата пина) | − шини горе и долу | Горната и долната шина не се споени — затоа користиме двата GND пина. |
Чекор по чекор
- LED (анода 19c, катода 20c) и отпорник 20a → − шина, како во проект 1.
- Копчето: постави го да ги зафати редовите e и f (преку жлебот), нозе во колони 25 и 27.
- Жица D4 → 25a (горна половина).
- Кратка жица 27j → − шина долу.
- GND → − шина горе, GND (вториот пин) → − шина долу.
- Качи го кодот. LED-та свети додека држиш копче. Отвори Serial Monitor (115200) и гледај ги вредностите.
Код (Arduino IDE)
// Проект 2: Копче пали LED (со внатрешен pull-up)
const int LED_PIN = 2;
const int BTN_PIN = 4;
void setup() {
pinMode(LED_PIN, OUTPUT);
pinMode(BTN_PIN, INPUT_PULLUP); // внатрешен отпорник кон 3.3 V
Serial.begin(115200);
}
void loop() {
int state = digitalRead(BTN_PIN); // 1 = пуштено, 0 = притиснато
if (state == LOW) {
digitalWrite(LED_PIN, HIGH);
Serial.println("Притиснато!");
} else {
digitalWrite(LED_PIN, LOW);
}
delay(20); // мало „смирување“ (debounce)
}Типични проблеми
Отвори го интерактивно во 3D →
Повеќе проекти (уште 7) со бесплатна најава во курсот. Проекти →