#104Pemula

Kendali LED dengan Tombol Tekan ESP32 (Tekan)

LED menyala ketika tombol ditekan dan mati ketika dilepas. Menunjukkan cara memakai pin input digital ESP32 dan resistor pull-up internalnya. Mode INPUT_PULLUP membuat resistor eksternal tidak diperlukan.

4.6(36)
55 selesai
Kendali LED dengan Tombol Tekan ESP32 (Tekan)
Persis seperti bel pintu: lampu tetap menyala selama kamu menekan dan mati ketika kamu melepasnya. ESP32 terus mendengarkan tombol; selama ditahan LED menyala, dan begitu dilepas LED mati. Kamu melihat dengan cara paling sederhana bagaimana board merasakan sentuhan dari dunia luar.

Video

Skema rangkaian

Kendali LED dengan Tombol Tekan ESP32 (Tekan) - Circuit

Kode sumber

C++ (Arduino IDE)
1// ─────────────────────────────────────────
2//   BlueGrays · bluegrays.com
3//   Kendali LED dengan Tombol Tekan ESP32 (Tekan)
4// ─────────────────────────────────────────
5// LED tetap nyala selama tombol ditahan dan mati ketika dilepas. Pin
6// tombol memakai pull-up internal (INPUT_PULLUP), jadi tidak perlu
7// resistor eksternal.
8//
9// Pin:
10//   GPIO 5 -> LED merah (dengan resistor 220 ohm)
11//   GPIO 4 -> Tombol (kaki lainnya ke GND)
12
13const int LED_PIN = 5;      // Output LED
14const int BUTTON_PIN = 4;   // Input tombol
15
16void setup() {
17  pinMode(LED_PIN, OUTPUT);
18  pinMode(BUTTON_PIN, INPUT_PULLUP);  // Membaca HIGH ketika tidak ditekan
19}
20
21void loop() {
22  // Tombol yang ditekan menarik pin ke GND: LOW = ditekan
23  if (digitalRead(BUTTON_PIN) == LOW) {
24    digitalWrite(LED_PIN, HIGH);
25  } else {
26    digitalWrite(LED_PIN, LOW);
27  }
28}
29

FAQ

Bagaimana cara menyambungkan tombol dengan INPUT_PULLUP?

Satu kaki tombol disambung ke pin GPIO, dan kaki lainnya ke GND. Resistor pull-up internal menahan pin di HIGH; ketika tombol ditekan, pin ditarik ke GND dan terbaca LOW. Tidak perlu resistor eksternal.

Kenapa logikanya terbalik?

Ketika resistor pull-up dipakai, nilainya terbaca HIGH ketika tombol tidak ditekan dan LOW ketika ditekan. Karena itu kondisi 'if (digitalRead(button) == LOW)' di kode menandakan bahwa tombol sedang ditekan.

Pin mana yang tidak punya pull-up internal?

GPIO 34, 35, 36, dan 39 hanya pin input dan tidak punya resistor pull-up atau pull-down internal. Jika kamu ingin memakai tombol di pin-pin ini, kamu harus menambahkan resistor eksternal 10 kΩ.

Bisakah aku mengganti tombol dengan sensor sentuh?

Bisa, ESP32 punya pin sentuh bawaan (mis. GPIO 4, 13, 14, 15, 27). Kamu bisa memakai `touchRead()` untuk mendeteksi sentuhan pada kabel atau pelat logam seolah-olah itu tombol.