Pinout Arduino Uno: Penjelasan Pin Digital, PWM, Analog, dan Daya
Pinout Arduino Uno dalam satu tabel: pin digital 0–13, PWM ~3, 5, 6, 9, 10, 11, analog A0–A5, Vin, 5V, 3.3V, I2C, SPI, pin interupsi, dan batas arus 20 mA per pin.
Pinout Arduino Uno mencakup 32 titik sambungan yang berjajar di header female hitam di sepanjang dua sisi panjang board: 14 pin input/output digital (0–13), 6 di antaranya bisa mengeluarkan PWM (~3, 5, 6, 9, 10, 11), 6 input analog (A0–A5), dan pin daya yang memberi daya ke board atau menyuplai daya ke komponen lain (Vin, 5V, 3.3V, GND, IOREF, AREF, RESET). Setiap pin punya tugas utama, tapi banyak yang juga membawa tugas kedua: A4 dan A5 juga merupakan bus I2C, 10–13 membentuk bus SPI, 2 dan 3 adalah pin interupsi, dan 0 serta 1 adalah jalur serial yang berkomunikasi dengan komputermu.
Memilih pin yang tepat adalah perbedaan antara proyek yang langsung berhasil di percobaan pertama dan berjam-jam mencari bug. Dengan tabel-tabel di artikel ini kamu akan mudah memahami kenapa PWM di pin 9 dan 10 berhenti begitu kamu memasang servo, kenapa sketch-mu tidak mau di-upload ketika modul Bluetooth tersambung, atau kenapa beberapa LED saja bisa membebani board secara berlebihan. Di bagian akhir kamu juga akan menemukan sketch uji yang mencoba semua jenis pin sekaligus, contoh rencana pin, dan perbedaan pin antara Uno R3 dan R4.

Diagram pin Arduino Uno: di mana letak setiap pin?
Letakkan board di depanmu dengan soket USB dan jack daya di sebelah kiri. Dua header di sisi atas berisi pin digital; nomornya naik dari kanan ke kiri, jadi pin paling kanan adalah 0 (RX) dan pin digital paling kiri adalah 13. Di sisi bawah, header kiri membawa pin daya dan header kanan membawa input analog. Tanda ~ (tilde) di samping nomor berarti pin itu bisa mengeluarkan PWM. Kelompok pin male 2×3 di sisi kanan board adalah header ICSP.
| Header | Pin (kiri ke kanan) | Kegunaan |
|---|---|---|
| Kiri atas (10 pin) | SCL, SDA, AREF, GND, 13, 12, ~11, ~10, ~9, 8 | Salinan I2C, referensi analog, SPI, dan pin digital |
| Kanan atas (8 pin) | 7, ~6, ~5, 4, ~3, 2, TX→1, RX←0 | Pin digital, pin interupsi, dan jalur serial |
| Kiri bawah (8 pin) | Tidak dipakai (NC), IOREF, RESET, 3.3V, 5V, GND, GND, Vin | Pin daya |
| Kanan bawah (6 pin) | A0, A1, A2, A3, A4, A5 | Input analog (A4/A5 juga I2C) |
| Sisi kanan (2×3) | 1 MISO, 2 5V, 3 SCK, 4 MOSI, 5 RESET, 6 GND | Header pemrograman ICSP |
| Fitur | Arduino Uno R3 |
|---|---|
| Mikrokontroler | ATmega328P, 16 MHz |
| Tegangan kerja (logika) | 5 V |
| Tegangan input (jack / Vin) | 7–12 V dianjurkan, batas 6–20 V |
| I/O digital | 14 pin (D0–D13) |
| Output PWM | 6 pin: 3, 5, 6, 9, 10, 11 |
| Input analog | 6 pin (A0–A5), 10 bit (0–1023) |
| Arus per pin | 20 mA dianjurkan, 40 mA maksimum mutlak |
| Arus total (VCC/GND) | 200 mA |
| Arus pin 3.3V | Maks. 50 mA |
| Memori | Flash 32 KB (0,5 KB bootloader), SRAM 2 KB, EEPROM 1 KB |
Tabel pin lengkap: D0–D13 dan A0–A5
| Pin | Port | Fungsi utama | Fungsi tambahan | Catatan |
|---|---|---|---|---|
| D0 (RX) | PD0 | I/O digital | UART RX (Serial) | Tersambung ke chip USB-serial, biarkan kosong |
| D1 (TX) | PD1 | I/O digital | UART TX (Serial) | Tersambung ke chip USB-serial, biarkan kosong |
| D2 | PD2 | I/O digital | Interupsi eksternal INT0 | Tombol, encoder, menghitung RPM |
| D3 ~ | PD3 | I/O digital, PWM 490 Hz | Interupsi eksternal INT1, Timer2 | PWM terganggu selama tone() berbunyi |
| D4 | PD4 | I/O digital | - | Tanpa fungsi tambahan, bebas dipakai |
| D5 ~ | PD5 | I/O digital, PWM 980 Hz | Timer0 | Timer yang sama dengan millis() |
| D6 ~ | PD6 | I/O digital, PWM 980 Hz | Timer0 | Timer yang sama dengan millis() |
| D7 | PD7 | I/O digital | - | Tanpa fungsi tambahan, bebas dipakai |
| D8 | PB0 | I/O digital | - | Tanpa fungsi tambahan, bebas dipakai |
| D9 ~ | PB1 | I/O digital, PWM 490 Hz | Timer1 | Library Servo mematikan PWM-nya |
| D10 ~ | PB2 | I/O digital, PWM 490 Hz | SPI SS, Timer1 | Harus tetap output ketika memakai SPI |
| D11 ~ | PB3 | I/O digital, PWM 490 Hz | SPI MOSI, Timer2 | Juga ada di header ICSP |
| D12 | PB4 | I/O digital | SPI MISO | Juga ada di header ICSP |
| D13 | PB5 | I/O digital | SPI SCK | LED L bawaan board ada di pin ini |
| A0 | PC0 | Input analog | Digital 14 | - |
| A1 | PC1 | Input analog | Digital 15 | - |
| A2 | PC2 | Input analog | Digital 16 | - |
| A3 | PC3 | Input analog | Digital 17 | - |
| A4 | PC4 | Input analog | I2C SDA, digital 18 | Tidak bisa membaca analog selama I2C dipakai |
| A5 | PC5 | Input analog | I2C SCL, digital 19 | Tidak bisa membaca analog selama I2C dipakai |
Bagaimana cara kerja pin digital (0–13)?
Setiap pin digital diatur sebagai input atau output dengan pinMode(). Sebagai output, digitalWrite(pin, HIGH) menarik pin ke sekitar 5 V dan LOW menariknya ke 0 V. Sebagai input, digitalRead() membandingkan tegangan dengan ambang: dengan ATmega328P yang bekerja di 5 V, apa pun di atas 3,0 V pasti HIGH, apa pun di bawah 1,5 V pasti LOW, dan rentang di antaranya tidak terdefinisi. Karena itu output sensor 3,3 V biasanya terbaca HIGH di Uno; tapi output 5 V dari Uno tidak boleh langsung masuk ke input modul 3,3 V, kamu butuh konverter level logika di antaranya.
Pin input yang tidak tersambung ke apa pun berada dalam keadaan mengambang (floating) dan membaca nilai HIGH dan LOW secara acak, bahkan ketika kamu hanya mendekatkan tangan. Solusinya adalah menarik pin ke level tetap dengan resistor: pinMode(pin, INPUT_PULLUP) menyalakan resistor 20–50 kΩ di dalam chip, dan tombol dipasang antara pin dan GND. Detailnya ada di Cara Menghubungkan Push Button ke Arduino. Pin 13 tersambung ke LED L bawaan board; pada R3 asli, LED ini dikendalikan lewat buffer op-amp, jadi memakai pin itu sebagai input tidak menimbulkan masalah, tapi pada sebagian board kloningan LED dan resistornya langsung terpasang di pin dan bisa mengacaukan pembacaan tombol dengan pull-up internal.
Pin PWM (~3, 5, 6, 9, 10, 11) dan timer
Uno tidak bisa menghasilkan output analog sungguhan; sebagai gantinya enam pin ini menyediakan PWM, gelombang kotak yang menyala dan mati dengan sangat cepat. Dengan analogWrite(pin, value) kamu mengatur berapa lama gelombang tetap menyala, dari 0 sampai 255: 0 mati total, 127 kira-kira setengah, dan 255 nyala penuh. Kecerahan LED, kecepatan motor, dan kecepatan kipas semuanya dikendalikan dengan cara ini. Keenam pin PWM terikat berpasangan ke tiga timer hardware, dan itulah penyebab bentrokan dengan beberapa library. Ide di balik PWM dan cara menghitung duty cycle dijelaskan di Apa Itu PWM?.
| Timer | Pin PWM | Frekuensi | Siapa yang memakai timer ini? |
|---|---|---|---|
| Timer0 (8 bit) | 5, 6 | Sekitar 980 Hz | millis(), delay(), dan micros() |
| Timer1 (16 bit) | 9, 10 | Sekitar 490 Hz | Library Servo |
| Timer2 (8 bit) | 3, 11 | Sekitar 490 Hz | tone() dan library seperti IRremote |
Pin analog (A0–A5) dan AREF
Pin analog mengukur tegangan antara 0 dan 5 V dengan resolusi 10 bit, dan analogRead() mengembalikan angka dari 0 sampai 1023. Satu langkah sekitar 4,9 mV; untuk mengubah angka menjadi volt pakai tegangan = nilai × 5.0 / 1023, jadi pembacaan 512 berarti kira-kira 2,5 V. Keenam pin bergantian memakai satu ADC, dan satu pembacaan butuh sekitar 100 µs, sehingga memungkinkan sekitar 10.000 pembacaan per detik. Untuk hasil yang akurat, impedansi output sensor sebaiknya tidak melebihi 10 kΩ; jika lebih tinggi, pembacaan dari dua pin yang diambil berturut-turut bisa saling memengaruhi, dan membuang pembacaan pertama lalu memakai yang kedua akan mengatasinya. Untuk mengukur tegangan di atas 5 V, pilih resistor yang cocok dengan kalkulator pembagi tegangan.
Pin AREF memungkinkanmu mengubah batas atas pengukuran analog. analogReference(DEFAULT) memakai 5 V, analogReference(INTERNAL) memakai referensi internal chip 1,1 V, dan analogReference(EXTERNAL) memakai tegangan yang kamu berikan ke pin AREF (0–5 V) sebagai batas atas rentang. Dengan sensor yang mengeluarkan 0–1 V, referensi 1,1 V memperkecil satu langkah menjadi sekitar 1,1 mV dan membuat pengukuran sekitar 4,5 kali lebih halus. Komponen seperti potensiometer, LDR, dan sensor kelembapan tanah disambungkan ke pin-pin ini; detail konversi analog ke digital ada di artikel ADC, dan contoh praktisnya ada di artikel potensiometer.
Pin daya: Vin, 5V, 3.3V, GND, IOREF, dan RESET
| Pin | Fungsinya | Batas dan peringatan |
|---|---|---|
| Vin | Menyediakan tegangan dari jack, atau memberi daya board dengan 7–12 V | Melewati dioda pelindung polaritas terbalik, perhatikan polaritasnya |
| 5V | Output 5 V dari regulator atau USB | Sekring 500 mA di USB; hanya beri 5 V yang sudah teregulasi |
| 3.3V | Output 3,3 V dari regulator di board | Maks. 50 mA; untuk modul kecil seperti RC522 |
| GND | Ground bersama (2 di bawah, 1 di atas) | GND setiap catu daya eksternal harus disatukan di sini |
| IOREF | Memberi tahu shield tegangan logika board | Tersambung ke 5V di Uno, bukan untuk memberi daya |
| RESET | Memulai ulang board ketika ditarik ke LOW | Dipakai tombol reset pada shield |
| AREF | Input referensi eksternal untuk pembacaan analog | 0–5 V; panggil analogReference(EXTERNAL) dulu |
| NC (pin tanpa label) | Dicadangkan untuk pemakaian di masa depan pada R3 | Tidak tersambung ke apa pun |
Uno bisa diberi daya dengan tiga cara. Lewat USB, board mengambil 5 V langsung dari komputer, dan sekring resettable 500 mA melindungi port komputer. Jika kamu memberi 7–12 V lewat jack DC atau Vin, regulator di board menurunkannya ke 5 V; jika keduanya tersambung, board otomatis beralih ke catu daya eksternal begitu Vin naik di atas sekitar 6,6 V. Karena regulator mengubah kelebihan tegangan menjadi panas, menarik beberapa ratus mA dari pin 5V dengan input 12 V membuatnya cepat panas. Cara paling sehat adalah memberi daya beban seperti servo, motor, dan LED strip dari catu daya terpisah dan hanya menyatukan GND-nya. Untuk pilihan baterai dan lama pemakaian, pakai kalkulator umur baterai, dan baca semua cara memberi daya di Cara Memberi Daya Arduino.
Kenapa pin 0 dan 1 sebaiknya dibiarkan kosong?
Pin 0 (RX) dan 1 (TX) adalah satu-satunya port serial hardware ATmega328P, dan di board keduanya tersambung lewat resistor 1 kΩ ke chip konverter USB-serial (ATmega16U2). Komputermu memakai kedua pin ini ketika meng-upload kode dan ketika mengirim teks ke Serial Monitor. Jika jalur TX modul Bluetooth atau sinyal lain tersambung ke pin 0, kedua sumber berebut jalur yang sama dan upload berhenti dengan avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00. Selain itu, pin 1 berganti-ganti dengan cepat setiap kali Serial.print() berjalan, jadi LED atau relay yang tersambung di sana menyala-mati secara acak.
Jadi biarkan 0 dan 1 kosong sampai pin lain habis. Jika kamu perlu menyambungkan modul serial seperti HC-05, GPS, atau pemutar MP3, library SoftwareSerial membuat port serial kedua di dua pin lain. Sketch di bawah menyambungkan modul ke pin 8 (RX) dan 7 (TX); apa pun yang kamu ketik di Serial Monitor diteruskan ke modul, dan apa pun yang dikirim modul diteruskan ke komputer. Dengan modul berlogika 3,3 V seperti HC-05, sambungkan output TX Uno (pin 7) ke pin RX modul lewat pembagi tegangan. Semua solusi masalah upload ada di Kode Arduino Gagal Di-upload, dan logika komunikasi serial ada di Komunikasi Serial UART.
1#include <SoftwareSerial.h>
2
3SoftwareSerial moduleSerial(8, 7); // RX = 8, TX = 7; 0 ve 1 boş kalır / 0 and 1 stay free
4
5void setup() {
6 Serial.begin(9600); // USB üzerinden bilgisayar / computer over USB
7 moduleSerial.begin(9600); // HC-05 veri modu hızı / HC-05 data mode baud rate
8 Serial.println(F("Seri kopru hazir / Serial bridge ready"));
9}
10
11void loop() {
12 if (moduleSerial.available()) {
13 Serial.write(moduleSerial.read()); // modülden bilgisayara / module to computer
14 }
15 if (Serial.available()) {
16 moduleSerial.write(Serial.read()); // bilgisayardan modüle / computer to module
17 }
18}Pin komunikasi: I2C (A4/A5), SPI (10–13), dan pin interupsi (2, 3)
I2C memungkinkanmu menyambungkan puluhan perangkat ke bus yang sama hanya dengan dua kabel (SDA dan SCL); layar LCD, OLED, modul jam RTC, dan sensor seperti BME280 semuanya memakainya. Di Uno, SDA = A4 dan SCL = A5. Pada board R3, pin SDA dan SCL di samping AREF bukan bus terpisah, melainkan tersambung di dalam ke A4 dan A5, jadi kamu tidak bisa memakai A4 dan A5 untuk pembacaan analog selama I2C dipakai. Library Wire bawaannya bekerja di 100 kHz dan bisa sampai 400 kHz dengan Wire.setClock(400000). Alamat, resistor pull-up, dan sketch I2C scanner dibahas di Apa Itu I2C?, dan contoh praktisnya di Cara Memakai Layar LCD I2C.
SPI lebih cepat tapi butuh lebih banyak kabel: MOSI = 11, MISO = 12, SCK = 13, dan SS (CS) = 10. Modul kartu SD, pembaca RFID, dan layar TFT memakai SPI. Beberapa perangkat bisa berbagi bus: MOSI, MISO, dan SCK dipakai bersama, dan setiap perangkat mendapat pin CS-nya sendiri. Satu detail penting: selama SPI dalam mode master, pin 10 harus tetap menjadi output; jika kamu menjadikan pin 10 input dan pin itu tertarik ke LOW, ATmega328P beralih sendiri ke mode slave dan SPI berhenti. MISO, MOSI, dan SCK juga ada di header ICSP, dan beberapa shield mengakses SPI dari sana. Untuk detailnya, lihat Apa Itu SPI? dan RFID RC522.
Interupsi memungkinkanmu menangkap perubahan di pin secara instan, apa pun yang sedang dikerjakan loop() pada momen itu. Di Uno, interupsi eksternal hanya ada di pin 2 (INT0) dan 3 (INT1): kamu menulis attachInterrupt(digitalPinToInterrupt(2), function, FALLING), dan mode pemicunya bisa LOW, CHANGE, RISING, atau FALLING. Encoder, sensor RPM, sensor aliran air, dan tombol yang tidak boleh terlewat dipasang di pin-pin ini. Pin lain juga punya “pin change interrupt” (PCINT), tapi pin di port yang sama berbagi satu fungsi interupsi dan kodemu harus mencari tahu pin mana yang berubah. Aturan dan contohnya ada di Interupsi Arduino.
| Fungsi | Arduino Uno | ESP32 (DevKit) | Raspberry Pi Pico |
|---|---|---|---|
| I2C SDA / SCL | A4 / A5 | GPIO 21 / 22 | GP4 / GP5 |
| SPI MOSI / MISO / SCK / CS | 11 / 12 / 13 / 10 | GPIO 23 / 19 / 18 / 5 | GP19 / GP16 / GP18 / GP17 |
| UART TX / RX | 1 / 0 | GPIO 1 / 3 (tersambung ke USB) | GP0 / GP1 |
| Interupsi eksternal | Hanya 2 dan 3 | Semua GPIO | Semua GPIO |
| PWM | 6 pin | Hampir semua pin yang bisa menjadi output | Semua GPIO |
| Input analog | 6 pin, 10 bit | ADC1: GPIO 32–39, 12 bit | GP26, GP27, GP28; 12 bit |
| Level logika | 5 V | 3,3 V (tidak tahan 5 V) | 3,3 V (tidak tahan 5 V) |
| Arus per pin | 20 mA (maks. 40 mA) | Sekitar 20 mA dianjurkan | Bawaan 4 mA, maks. 12 mA |
Ketika kamu pindah ke ESP32 atau Pico, perbedaan terbesarnya adalah tegangan: kedua board bekerja di 3,3 V dan pin-pinnya tidak tahan 5 V, jadi modul 5 V yang kamu sambungkan langsung ke Uno mungkin butuh konverter level. Di sisi lain, board-board ini menyediakan interupsi dan PWM di hampir semua pin, dan bus I2C serta SPI-nya bisa dipindah ke pin lain. Untuk membandingkan board, baca Arduino vs ESP32, dan untuk melihat peta pin pakai alat pinout; board-board itu sendiri dibahas di Apa Itu ESP32? dan Apa Itu Raspberry Pi Pico?.
Untuk apa header ICSP?
ICSP (In-Circuit Serial Programming) adalah header 2×3 yang dipakai untuk memprogram mikrokontroler langsung lewat jalur SPI, tanpa USB atau bootloader. ICSP di sisi kanan board milik ATmega328P, sedangkan ICSP1 kecil di samping soket USB milik chip USB-serial (ATmega16U2). Kamu tidak akan menyentuhnya dalam pemakaian sehari-hari, tapi ICSP berperan ketika bootloader rusak, ketika kamu menanam bootloader ke ATmega328P baru, atau ketika kamu meng-upload kode dengan programmer seperti USBasp. Jika kamu mengubah Uno kedua menjadi programmer dengan contoh ArduinoISP, pin 10, 11, 12, dan 13 dari programmer ke jalur RESET, MOSI, MISO, dan SCK board target, dan kapasitor 10 µF antara RESET dan GND di Uno programmer mencegah auto-reset-nya. Untuk mengetahui apakah board-mu rusak, lihat Apakah Arduino-ku Rusak?.
| Pin ICSP | Sinyal | Padanan di Uno |
|---|---|---|
| 1 | MISO | D12 |
| 2 | VCC (+5 V) | 5V |
| 3 | SCK | D13 |
| 4 | MOSI | D11 |
| 5 | RESET | RESET |
| 6 | GND | GND |
20 mA per pin, 200 mA total: batas arus
Pin Uno aman dipakai paling banyak 20 mA. Angka 40 mA di datasheet ATmega328P adalah maksimum mutlak, nilai yang jika dilewati bisa merusak chip secara permanen, bukan nilai kerja. Arus total yang lewat pin VCC dan GND chip tidak boleh melebihi 200 mA. Datasheet juga membagi pin menjadi beberapa kelompok: ketika mengeluarkan arus (HIGH), D0–D4 bersama A0–A5, dan D5–D13 di antara mereka sendiri, masing-masing sebaiknya di bawah 150 mA; ketika menyerap arus (LOW), kelompok D0–D4, D5–D13, dan A0–A5 masing-masing sebaiknya di bawah 100 mA. Ketika kamu menyalakan LED merah dari 5 V lewat resistor 220 Ω, arusnya (5 − 2) / 220 ≈ 13,6 mA. Sepuluh LED yang menyala sekaligus berjumlah 136 mA; itu di bawah 200 mA, tapi jika semuanya di kelompok yang sama, angkanya sangat dekat dengan batas kelompok 150 mA. Jika LED disambung agar menyala ketika pin LOW (resistor dari 5V ke pin) dan sebagian besar ada di kelompok yang sama, batas 100 mA terlampaui. Sebar LED ke beberapa kelompok atau naikkan resistornya ke 330–470 Ω. Cari resistor yang tepat dengan kalkulator resistor LED atau kalkulator hukum Ohm.
- Motor: Bahkan motor DC kecil menarik ratusan mA dan menghasilkan lonjakan tegangan; pakai driver motor seperti L298N atau transistor.
- Kumparan relay: Kumparan relay 5 V menarik sekitar 70–90 mA; pakai modul relay yang punya transistor dan dioda.
- Motor servo: Kabel sinyal boleh ke pin, tapi daya servo sebaiknya dari catu daya terpisah, bukan pin 5V; detailnya di artikel motor servo.
- LED strip dan LED daya tinggi: Strip 12 V dan LED 1 W butuh MOSFET logic-level.
- Hubungan singkat: Menyambungkan output yang sedang HIGH langsung ke GND menarik arus jauh lebih dari 40 mA dari pin dan merusaknya selamanya.
Sketch uji: mencoba pin digital, PWM, analog, dan interupsi sekaligus
- Sambungkan LED ke pin 9 lewat resistor 220 Ω: kaki panjang ke resistor, kaki pendek ke GND.
- Sambungkan dua kaki luar potensiometer ke 5V dan GND, dan kaki tengahnya ke A0.
- Sambungkan tombol antara pin 2 dan GND; tidak perlu resistor terpisah karena pull-up internal dipakai.
- Upload sketch, buka Serial Monitor, dan atur ke 9600 baud.
- Putar potensiometer: kecerahan LED di pin 9 berubah, LED L bawaan (pin 13) menyala begitu tegangan melewati 2,5 V, dan penghitung naik satu setiap kali tombol ditekan.
1const byte BUTTON_PIN = 2; // kesme pini INT0 / interrupt pin INT0
2const byte PWM_LED = 9; // ~9: PWM çıkışı / PWM output
3const byte STATUS_LED = 13; // kart üzerindeki L LED'i / onboard L LED
4const byte POT_PIN = A0; // analog giriş / analog input
5
6volatile unsigned int pressCount = 0; // ISR içinde değişir / changed inside the ISR
7
8void onButton() {
9 static unsigned long lastPressMs = 0;
10 unsigned long now = millis();
11 if (now - lastPressMs > 50) { // 50 ms sıçrama filtresi / 50 ms debounce
12 pressCount++;
13 lastPressMs = now;
14 }
15}
16
17void setup() {
18 Serial.begin(9600); // 0 ve 1 numaralı pinleri kullanır / uses pins 0 and 1
19 pinMode(STATUS_LED, OUTPUT);
20 pinMode(PWM_LED, OUTPUT);
21 pinMode(BUTTON_PIN, INPUT_PULLUP); // dahili pull-up direnci / internal pull-up resistor
22 attachInterrupt(digitalPinToInterrupt(BUTTON_PIN), onButton, FALLING);
23}
24
25void loop() {
26 int raw = analogRead(POT_PIN); // 0-1023 arası ham değer / raw value 0-1023
27 float volts = raw * 5.0 / 1023.0; // volta çevir / convert to volts
28 analogWrite(PWM_LED, raw / 4); // 0-255 arası PWM / PWM from 0 to 255
29 digitalWrite(STATUS_LED, volts > 2.5 ? HIGH : LOW); // 2,5 V eşiği / 2.5 V threshold
30
31 noInterrupts(); // sayacı güvenle kopyala / copy the counter safely
32 unsigned int presses = pressCount;
33 interrupts();
34
35 Serial.print(F("A0: "));
36 Serial.print(raw);
37 Serial.print(F(" V: "));
38 Serial.print(volts, 2);
39 Serial.print(F(" Buton / Button: "));
40 Serial.println(presses);
41 delay(200);
42}Sketch ini memakai empat jenis pin Uno sekaligus. analogRead(A0) membaca nilai dari 0 sampai 1023, dan raw / 4 memperkecilnya ke rentang 0–255 yang diharapkan analogWrite(). Agar pantulan kontak tidak ikut terhitung, fungsi interupsi mengabaikan sinyal yang datang kurang dari 50 ms setelah tekanan terakhir. Penghitung yang diubah di dalam interupsi dideklarasikan volatile, dan loop() menyalinnya selagi interupsi dihentikan sebentar, karena Uno 8 bit membaca angka 16 bit dalam dua langkah dan interupsi yang datang di antaranya bisa menghasilkan nilai yang salah. Pin 0 dan 1 hanya dipakai untuk Serial, jadi tidak ada hal lain yang disambungkan ke sana.
Contoh rencana pin: komponen mana ke pin mana?
Menyebar pin secara acak di proyek dengan banyak komponen menimbulkan bentrokan. Tempatkan dulu komponen yang punya peran khusus (I2C, SPI, interupsi, PWM) di pin-nya sendiri, lalu bagikan tugas digital sederhana ke pin yang kosong. Di bawah ini contoh rencana untuk kunci pintu kartu RFID: pembaca RC522, LCD I2C, servo, buzzer, tombol, dan dua LED. Karena servo dan tone() dipakai bersamaan, PWM di 3, 9, 10, dan 11 sudah tidak bisa dipakai, dan rencana ini sudah memperhitungkannya.
| Komponen | Pin Uno | Kenapa pin ini? |
|---|---|---|
| RC522 SDA (SS) | 10 | Pin SS milik SPI; harus tetap output |
| RC522 SCK / MOSI / MISO | 13 / 11 / 12 | Pin SPI hardware tidak bisa diubah |
| RC522 RST | 9 | Pin digital apa pun bisa; PWM di 9 memang tidak bisa dipakai karena servo |
| RC522 VCC | 3.3V | Modul bekerja di 3,3 V dan arusnya di bawah batas 50 mA |
| SDA / SCL LCD I2C | A4 / A5 | Satu-satunya bus I2C di Uno |
| Sinyal servo | 6 | Library Servo bekerja di pin mana saja; daya dari 5 V eksternal |
| Buzzer | 8 | tone() bekerja di pin mana saja, jadi tidak ada pin PWM yang terbuang |
| Tombol | 2 | Pin interupsi; tidak perlu resistor dengan INPUT_PULLUP |
| LED hijau / merah | 4 / 7 | Pin digital biasa tanpa fungsi tambahan |
| Dibiarkan kosong | 0, 1, 3, 5, A0–A3 | Jalur serial tetap kosong; 3 untuk interupsi kedua, 5 untuk PWM, A0–A3 untuk sensor |
Perbedaan pin Arduino Uno R3 dan R4
| Fitur | Uno R3 | Uno R4 (Minima / WiFi) |
|---|---|---|
| Mikrokontroler | ATmega328P, 8 bit, 16 MHz | Renesas RA4M1, 32 bit, 48 MHz |
| Tata letak pin | Uno standar | Sama; shield tetap pas |
| Arus per pin | 20 mA | 8 mA |
| Resolusi analog | 10 bit | Bawaan 10 bit, sampai 14 bit |
| Output analog sungguhan (DAC) | Tidak ada | DAC 12 bit di A0 |
| Pin 0 dan 1 | Dipakai bersama USB (Serial) | Terpisah dari USB (Serial1) |
| Rentang Vin | 7–12 V dianjurkan | 6–24 V |
| USB | USB-B, lewat ATmega16U2 | USB-C; langsung ke prosesor di Minima, lewat jembatan ESP32-S3 di WiFi |
Singkatnya, nomor dan fungsi pin tetap sama di R4 (PWM ~3, 5, 6, 9, 10, 11; I2C A4/A5; SPI 10–13; interupsi 2, 3), tapi arus per pin turun menjadi 8 mA. LED yang di R3 kamu nyalakan langsung dari pin butuh resistor lebih besar di R4 (misalnya 1 kΩ untuk sekitar 3 mA) atau transistor. Perbandingan rincinya ada di Arduino Uno R4. Jika kamu mencari board yang lebih kecil, Pinout Arduino Nano dan Arduino Mana yang Sebaiknya Kubeli? akan membantu.
Kesalahan umum dan cara memperbaikinya
| Gejala | Penyebab | Solusi |
|---|---|---|
| Sketch tidak mau di-upload, error “not in sync” | Ada modul yang tersambung ke pin 0 atau 1 | Cabut modul selama upload atau pindahkan ke pin lain dengan SoftwareSerial |
| Kecerahan LED berhenti berubah setelah menambahkan servo | Library Servo mematikan PWM di 9 dan 10 | Pindahkan LED ke 3, 5, 6, atau 11 |
| Kecepatan motor kacau selama buzzer berbunyi | tone() memakai Timer2, yang memengaruhi 3 dan 11 | Pindahkan PWM ke 5, 6, 9, atau 10 |
| Nilai analog bergeser sendiri | Pin mengambang atau impedansi sumber terlalu tinggi | Sambungkan sensor dengan kokoh, baca dua kali jika perlu |
| Tombol seperti ditekan secara acak | Pin input mengambang | Pakai INPUT_PULLUP atau tambahkan resistor 10 kΩ |
| A4/A5 membaca nilai salah ketika layar I2C tersambung | A4/A5 dipakai bersama bus I2C | Sambungkan sensor analog ke A0–A3 |
| Modul SPI tidak merespons | Pin 10 dijadikan input atau CS-nya salah | Biarkan pin 10 tetap output, beri setiap perangkat CS-nya sendiri |
| Board panas atau reset sendiri | Arus yang ditarik dari pin atau pin 5V terlalu besar | Beri daya beban dari catu daya terpisah dan satukan GND-nya |
Begitu kamu mengenal pin Arduino Uno, kamu tidak perlu menghafal di mana setiap komponen dipasang; kamu melihat apa yang dibutuhkan komponen dan memilih pin yang tepat sendiri. Jika kamu ingin mengulang dasar-dasarnya, mulailah dari Apa Itu Arduino?. Di aplikasi BlueGrays kamu akan menemukan proyek seperti menyalakan LED, membaca tombol, mengukur cahaya dengan LDR, LED RGB dengan PWM, LCD I2C, RFID, dan dua Arduino yang berkomunikasi lewat jalur serial, masing-masing langkah demi langkah dengan skema rangkaian yang menunjukkan kenapa setiap pin dipilih dan kode siap pakai.
Pertanyaan umum
Berapa jumlah pin Arduino Uno?
Arduino Uno R3 punya 14 pin input/output digital (0–13) dan 6 input analog (A0–A5); karena pin analog juga bisa dipakai sebagai pin digital, totalnya 20 pin sinyal. Enam pin digital menyediakan PWM. Selain itu ada pin daya dan kendali seperti Vin, 5V, 3.3V, GND, IOREF, AREF, dan RESET, plus header ICSP 6 pin.
Pin mana yang PWM di Arduino Uno?
Pin PWM adalah 3, 5, 6, 9, 10, dan 11, ditandai dengan ~ di samping nomornya di board. Pin 5 dan 6 bekerja di sekitar 980 Hz, yang lain di sekitar 490 Hz. PWM di 9 dan 10 terpengaruh ketika library Servo dipakai, dan PWM di 3 dan 11 ketika tone() dipakai.
Bisakah pin analog Arduino dipakai sebagai pin digital?
Bisa. Di Uno, pin A0–A5 bekerja seperti pin digital biasa dengan pinMode, digitalWrite, dan digitalRead, dan sesuai dengan nomor 14–19. Jadi kamu bisa menyambungkan LED ke A0 atau tombol ke A3. Satu-satunya pengecualian, A4 dan A5 dipakai untuk bus selama kamu memakai I2C.
Berapa arus yang bisa diberikan satu pin Arduino Uno?
Kamu bisa menarik 20 mA dengan aman dari satu pin; 40 mA adalah maksimum mutlak, dan melewatinya bisa merusak pin secara permanen. Total semua pin tidak boleh melebihi 200 mA. Karena itu LED disambung lewat resistor, sedangkan beban seperti motor dan relay dikendalikan dengan transistor, MOSFET, atau modul driver.
Bisakah aku memakai pin 0 dan 1 di Arduino Uno?
Bisa, tapi tidak dianjurkan. Pin ini tersambung ke chip USB-serial, dan komputer memakai jalur ini ketika meng-upload kode dan memakai Serial Monitor. Dengan modul yang tersambung ke pin 0, upload bisa gagal dengan error “not in sync”, jadi pakai pin ini paling akhir atau pindah ke pin lain dengan SoftwareSerial.
Apa itu pin SDA dan SCL di Arduino Uno?
Di Uno, jalur SDA bus I2C adalah pin A4 dan SCL adalah pin A5. Board R3 juga punya dua pin tambahan berlabel SDA dan SCL di samping AREF, tapi keduanya tersambung di dalam ke A4 dan A5 dan bukan bus terpisah. Di ESP32, pin I2C bawaannya GPIO 21 dan 22; di Raspberry Pi Pico, I2C bisa dipindah ke banyak pin, dan GP4 (SDA) serta GP5 (SCL) adalah pilihan yang paling umum.
Proyek untuk dibuat setelah membaca ini
Lihat semua proyek
LED Berkedip
"Halo" pertama di dunia elektronika: menyalakan dan mematikan satu LED. Arduino menyalakan dan mematikan LED dengan jeda singkat, sehingga cahayanya berkedip cepat. Kamu melihat dengan cara paling sed

Kendali LED dengan Tombol Tekan (Tekan)
Persis seperti bel pintu: lampu tetap menyala selama kamu menekan, dan mati ketika kamu melepasnya. Arduino terus mendengarkan tombol; selama ditekan LED menyala, dan begitu jarimu terangkat LED mati.

Mengukur Intensitas Cahaya dengan LDR
Ingin melihat seberapa terang kamarmu dalam bentuk angka? LDR, komponen kecil yang bereaksi terhadap cahaya, mengukur cahaya di sekitarnya, dan Arduino menulis nilainya ke layar komputermu setiap sete

Pengukuran Jarak HC-SR04 (Tampilan Serial)
Sensor HC-SR04 bekerja persis seperti kelelawar yang mencari jalan dalam gelap: ia mengirim suara yang tidak bisa kamu dengar, mendengarkan pantulannya, dan mengukur seberapa jauh benda di depannya. A

Transisi Warna Halus dengan LED RGB
Satu LED RGB perlahan bergeser dari merah ke hijau, hijau ke biru, lalu kembali ke merah, berputar melewati warna pelangi tanpa pernah berhenti. Setiap peralihan butuh sekitar dua setengah detik, dan

Menggunakan Layar LCD dengan I2C
Beri Arduino-mu layar sendiri dan buat ia menulis pesan pertamanya. Layar LCD dua baris tersambung hanya dengan beberapa kabel; sapaan muncul di baris atas, lalu pesan kedua di baris bawah, layar dibe

Membaca Nilai RFID
Gantungan kunci akses gedung atau kartu aksesmu menyimpan nomor ID rahasia, dan proyek ini membacanya. Dekatkan kartu ke pembaca RFID dan Arduino menulis nomor kartunya ke layar komputermu. Langkah pe

Komunikasi Satu Arah Antara 2 Arduino
Kamu membuat dua Arduino berbicara lewat satu kabel: tekan tombol di satu board dan LED di board lain menyala, tekan lagi dan LED mati. Board pengirim melaporkan tekanan tombol dengan pesan singkat, d
Artikel lainnya
Aplikasi BlueGrays
Rakit rangkaian ini langkah demi langkah di ponselmu
Skema pengkabelan, kode, dan daftar komponen dalam satu layar. 200+ proyek Arduino, ESP32, dan Pico siap dibuat.
Pindai dengan ponselmu
Arahkan kamera ke kode ini dan toko aplikasi di ponselmu akan terbuka.
atau buka toko aplikasi

