Arduino Uno Pin Haritası
Arduino Uno üzerinde 14 dijital pin, 6 analog giriş ve çeşitli güç pinleri bulunur. Ancak bu pinlerin bir kısmının özel görevleri vardır ve bunları bilmeden kullanmak projelerde açıklaması zor arızalara yol açar.
Bu yazı her pinin ne yaptığını ve hangi durumlarda hangisinden kaçınmanız gerektiğini özetler.
Dijital Pinler (D0 – D13)
| Pin | Özel görev | Not |
|---|---|---|
| D0 (RX) | Seri alma | Kod yüklerken kullanılır — boş bırakın |
| D1 (TX) | Seri gönderme | Kod yüklerken kullanılır — boş bırakın |
| D2 | Kesme 0 (INT0) | attachInterrupt() için |
| D3 | Kesme 1 (INT1) + PWM | |
| D4 | — | |
| D5 | PWM (~980 Hz) | |
| D6 | PWM (~980 Hz) | |
| D7 | — | |
| D8 | — | |
| D9 | PWM | Servo kütüphanesi bu pini etkiler |
| D10 | PWM + SPI SS | Servo kütüphanesi bu pini etkiler |
| D11 | PWM + SPI MOSI | tone() bu pini etkiler |
| D12 | SPI MISO | |
| D13 | SPI SCK + dahili LED | Kart üzerindeki L LED’i buraya bağlı |
PWM pinleri
Kart üzerinde ~ işaretiyle gösterilen pinler analogWrite() destekler: 3, 5, 6, 9, 10, 11.
Diğer pinlerde analogWrite() çağırmak beklenen etkiyi yapmaz.
D0 ve D1’den kaçının
Bu iki pin USB üzerinden seri haberleşme için kullanılır. Buraya bir modül bağlarsanız:
- Kod yükleme başarısız olur
Serial.print()çıktıları bozulur
Bluetooth (HC-05) veya GPS gibi seri cihazları başka pinlere bağlayıp SoftwareSerial kullanmak daha güvenlidir. Zorunlu olarak D0/D1 kullanıyorsanız yükleme sırasında kabloları çıkarın.
D13’ün özel durumu
D13 pini kart üzerindeki LED’e bir direnç üzerinden bağlıdır. Bunun iki sonucu vardır:
- Çıkış olarak kullanmak sorunsuzdur (LED de yanar, bu bir hata değildir).
- Giriş olarak kullanmak sorunludur: LED devresi pini aşağı çeker,
INPUT_PULLUPdüzgün çalışmaz. Buton bağlamak için D13’ü seçmeyin.
Ayrıca kart açılırken bootloader D13’ü kısa süre kullanır; buraya bağlı bir röle her resette tetiklenir.
Analog Pinler (A0 – A5)
Analog pinler 10 bit çözünürlükte analogRead() yapar: 0 – 1023.
| Pin | Özel görev |
|---|---|
| A0 | — |
| A1 | — |
| A2 | — |
| A3 | — |
| A4 | I2C SDA |
| A5 | I2C SCL |
Analog pinler dijital olarak kullanılabilir
A0–A5, dijital giriş/çıkış olarak da kullanılabilir. Pin sıkıntısı çekiyorsanız bu 6 pin fazladan dijital pin demektir:
pinMode(A0, OUTPUT);
digitalWrite(A0, HIGH);
pinMode(A1, INPUT_PULLUP);
if (digitalRead(A1) == LOW) { /* ... */ }Kodda A0 yerine 14, A1 yerine 15 de yazabilirsiniz.
A4 ve A5’i I2C ile paylaşmayın
Bir I2C cihazı (OLED ekran, MPU6050, RTC) kullanıyorsanız A4 ve A5 meşguldür. Bu pinleri başka amaçla kullanmaya çalışmak I2C hattını bozar.
Not: Arduino Nano’da A6 ve A7 pinleri de vardır ama bunlar yalnızca analog girişdir;
digitalWrite()veyadigitalRead()ile kullanılamazlar.
Güç Pinleri
| Pin | Açıklama |
|---|---|
| VIN | Harici besleme girişi/çıkışı (7 – 12 V) |
| 5V | Regülatörden gelen 5 V çıkış |
| 3.3V | 3,3 V çıkış — maksimum 50 mA |
| GND | Toprak (kart üzerinde 3 adet) |
| IOREF | Lojik seviye referansı (shield’ler için) |
| RESET | LOW yapılınca kart resetlenir |
| AREF | Analog referans gerilimi girişi |
VIN nasıl kullanılır?
- Giriş olarak: Harici bir 7–12 V kaynağı buraya bağlayıp kartı besleyebilirsiniz. Kart üzerindeki regülatör 5 V üretir.
- Çıkış olarak: Kart DC jak üzerinden besleniyorsa VIN pininden (diyot düşümü çıkarılmış olarak) besleme gerilimine erişebilirsiniz.
⚠ VIN’e 7 V’un altında gerilim vermeyin; regülatör 5 V üretemez. 12 V’un üzerinde de vermeyin; regülatör aşırı ısınır.
5V pini bir güç kaynağı değildir
Bu, en sık yapılan hatalardan biridir. 5V pininden çekilebilecek akım şunlarla sınırlıdır:
- USB ile beslerken: USB portunun sınırı (tipik 500 mA), eksi kartın kendi tüketimi
- DC jak ile beslerken: Kart üzerindeki regülatörün ısınma sınırı — pratikte ~500 mA, ve giriş gerilimi yükseldikçe bu düşer
Servo, motor veya LED şerit gibi yükleri buradan beslemeyin. Ayrı besleme kullanın ve GND’leri birleştirin.
3.3V pini çok zayıftır
Yalnızca 50 mA verebilir. Bir ESP8266 modülünü buradan beslemek denenip başarısız olan klasik bir hatadır — ESP8266 tepe akımda 300 mA’i aşar.
Pin Akım Sınırları
| Sınır | Değer |
|---|---|
| Tek pin (önerilen) | 20 mA |
| Tek pin (mutlak maksimum) | 40 mA |
| Tüm pinlerin toplamı | 200 mA |
| 3.3V çıkışı | 50 mA |
Bu sınırlar aşıldığında pin veya mikrodenetleyici kalıcı olarak zarar görür. Motor, röle bobini veya çok sayıda LED sürmek için transistör/MOSFET kullanın.
Kesme (Interrupt) Pinleri
Arduino Uno’da yalnızca D2 ve D3 donanımsal kesme destekler.
attachInterrupt(digitalPinToInterrupt(2), fonksiyonAdi, RISING);| Mod | Tetiklenme |
|---|---|
RISING | LOW → HIGH geçişinde |
FALLING | HIGH → LOW geçişinde |
CHANGE | Her değişimde |
LOW | Pin LOW olduğu sürece |
Enkoder okuma, hızlı buton yakalama ve zamanlama kritik işler bu pinlere bağlanır.
Timer Çakışmaları
Arduino Uno’da üç donanımsal timer vardır ve kütüphaneler bunları paylaşır. Bu, sessizce ortaya çıkan sorunların kaynağıdır.
| Timer | Kontrol ettiği PWM pinleri | Kullanan |
|---|---|---|
| Timer0 | D5, D6 | millis(), delay(), micros() |
| Timer1 | D9, D10 | Servo kütüphanesi |
| Timer2 | D3, D11 | tone() fonksiyonu |
Pratik sonuçları:
- Servo kütüphanesi kullanırsanız D9 ve D10’da
analogWrite()çalışmaz. tone()kullanırsanız D3 ve D11’deanalogWrite()bozulur.- Timer0’a müdahale ederseniz
millis()vedelay()yanlış çalışır.
Servo ve buzzer birlikte kullanan bir projede PWM için D5 veya D6’yı tercih edin.
AREF Pini
analogRead() varsayılan olarak 0–5 V aralığını 0–1023’e ölçekler. Ölçtüğünüz sinyal bu aralığın çok altındaysa çözünürlük kaybedersiniz.
analogReference() ile referans değiştirilebilir:
analogReference(INTERNAL); // 1.1 V dahili referans (Uno)
// analogReference(EXTERNAL); // AREF pinindeki gerilimINTERNAL seçildiğinde 0–1,1 V aralığı 0–1023’e ölçeklenir; küçük sinyaller için çok daha hassas okuma sağlar.
⚠ EXTERNAL kullanacaksanız önce analogReference(EXTERNAL) çağırın, sonra AREF pinine gerilim verin. Ters sırada yapmak mikrodenetleyiciye zarar verebilir.
Kaçınmanız Gereken Pinler — Özet
| Pin | Sorun |
|---|---|
| D0, D1 | Seri haberleşme; kod yüklemeyi engeller |
| D13 | Dahili LED; giriş olarak güvenilmez, açılışta tetiklenir |
| A4, A5 | I2C kullanıyorsanız meşgul |
| D9, D10 | Servo kütüphanesi PWM’i bozar |
| D3, D11 | tone() PWM’i bozar |
| D10, D11, D12, D13 | SPI kullanıyorsanız meşgul |
Özet
Arduino Uno’da 14 dijital ve 6 analog pin bulunur, ancak bunların önemli bir kısmının özel görevleri vardır. Pin seçimi yaparken bu görevleri bilmek, sonradan bulunması zor arızaları önler.
Bu derste şunları öğrendik:
- Hangi pinlerin PWM, kesme, I2C ve SPI için ayrıldığını
- D0/D1 ve D13’ün neden sorunlu olduğunu
- Analog pinlerin dijital olarak kullanılabildiğini
- 5V ve 3.3V pinlerinin akım sınırlarını
- Pin başına 20 mA, toplam 200 mA sınırını
- Timer çakışmalarını (Servo → D9/D10,
tone()→ D3/D11) - AREF ile analog referans değiştirmeyi