Memasukkan dan mengeluarkan sinyal digital: pinMode, digitalWrite, digitalRead, dan tombol.
Dunia digital hanya mengenal dua keadaan:
| Keadaan | Tegangan (Arduino 5V) | Nilai |
|---|---|---|
| HIGH | ± 5 V | 1 |
| LOW | 0 V | 0 |
Komponen digital seperti LED, relay, dan tombol semuanya bekerja dengan logika ini. LED menyala saat pinnya HIGH (dengan resistor pembatas!), mati saat LOW.
pinMode(): Menentukan Arah PinSebelum dipakai, setiap pin harus diatur arahnya:
MCU mengirim tegangan 5V/0V ke dunia luar. Dipakai untuk LED, buzzer, relay.
MCU membaca tegangan dari dunia luar. Pin "melayang" (tidak terhubung apa-apa) → nilai acak/LOW. Butuh resistor eksternal.
Seperti INPUT, tapi ada resistor pull-up internal ke 5V. Pin default HIGH, jadi LOW hanya saat tombol menekan ke GND. Paling praktis untuk tombol.
digitalWrite(): Mengeluarkan Sinyal
(millis() / 500) % 2 menghasilkan angka 0/1 yang berubah setiap 500 ms
— trik praktis untuk membuat pola nyala-mati tanpa delay().
digitalRead(): Membaca Tombol
Rangkaian tombol paling praktis: satu kaki tombol ke pin, kaki lainnya ke GND,
dan pin diatur INPUT_PULLUP. Saat tombol tidak ditekan → HIGH;
saat ditekan → LOW (terhubung GND).
if (tombol == LOW)?Pin input yang "melayang" (floating) tidak terhubung apa-apa akan membaca nilai acak — ini sumber bug klasik. Solusinya: resistor penarik.
Tidak ditekan → HIGH. Ditekan → LOW.
Arduino punya pull-up internal: INPUT_PULLUP.
Tidak ditekan → LOW. Ditekan → HIGH.
Butuh resistor eksternal (Arduino tidak punya pull-down internal).
INPUT (tanpa pull-up) dan kaki lainnya ke GND?