Parçalar · 12 dk okuma

Arduino Uno Pinleri: Dijital, PWM, Analog ve Güç Pinleri Rehberi

Arduino Uno pinleri tek tabloda: dijital 0–13, PWM ~3, 5, 6, 9, 10, 11, analog A0–A5, Vin, 5V, 3.3V, I2C, SPI, kesme pinleri ve pin başına 20 mA sınırı.

Arduino Uno pinleri, kartın iki uzun kenarındaki siyah dişi konnektörlere dizilmiş 32 bağlantı noktasıdır: 14 dijital giriş/çıkış pini (0–13), bunlardan PWM verebilen 6 pin (~3, 5, 6, 9, 10, 11), 6 analog giriş (A0–A5) ve kartı besleyen ya da dışarıya güç veren güç pinleri (Vin, 5V, 3.3V, GND, IOREF, AREF, RESET). Her pinin bir ana görevi vardır ama birçoğu ikinci bir görev de taşır: A4 ve A5 aynı zamanda I2C hattıdır, 10–13 SPI hattıdır, 2 ve 3 kesme (interrupt) pinidir, 0 ve 1 ise bilgisayarla konuşan seri hattır.

Doğru pini seçmek, projenin ilk denemede çalışmasıyla saatlerce hata aramak arasındaki farktır. Servo bağlayınca 9 ve 10 numaralı pinlerdeki PWM'in neden durduğunu, Bluetooth modülü takılıyken kodun neden yüklenmediğini ya da birkaç LED'in kartı neden zorladığını bu yazıdaki tablolarla kolayca anlayacaksın. Sonunda tüm pin türlerini aynı anda deneyen bir test kodu, örnek bir pin planı ve Uno R3 ile R4 arasındaki pin farklarını da bulacaksın.

Arduino Uno R3 kartı ve pinleri
Arduino Uno R3: üst kenarda dijital pinler (0–13), alt kenarda güç pinleri ve analog girişler (A0–A5), sağ kenarda 2×3'lük ICSP konnektörü.

Arduino Uno pin diyagramı: hangi pin nerede?

Kartı USB girişi ve güç jakı sol tarafta kalacak şekilde önüne koy. Üst kenardaki iki konnektörde dijital pinler bulunur; numaralar sağdan sola doğru artar, yani en sağdaki pin 0 (RX), en soldaki dijital pin 13'tür. Alt kenarda soldaki konnektör güç pinlerini, sağdaki konnektör analog girişleri taşır. Numaranın yanındaki ~ (dalga) işareti o pinin PWM verebildiğini gösterir. Kartın sağ kenarındaki 2×3'lük erkek pin grubu ise ICSP konnektörüdür.

KonnektörPinler (soldan sağa)Görevi
Üst sol (10 pin)SCL, SDA, AREF, GND, 13, 12, ~11, ~10, ~9, 8I2C kopyası, analog referans, SPI ve dijital pinler
Üst sağ (8 pin)7, ~6, ~5, 4, ~3, 2, TX→1, RX←0Dijital pinler, kesme pinleri ve seri hat
Alt sol (8 pin)Boş (NC), IOREF, RESET, 3.3V, 5V, GND, GND, VinGüç pinleri
Alt sağ (6 pin)A0, A1, A2, A3, A4, A5Analog girişler (A4/A5 aynı zamanda I2C)
Sağ kenar (2×3)1 MISO, 2 5V, 3 SCK, 4 MOSI, 5 RESET, 6 GNDICSP programlama konnektörü
ÖzellikArduino Uno R3
MikrodenetleyiciATmega328P, 16 MHz
Çalışma (lojik) gerilimi5 V
Giriş gerilimi (jak / Vin)Önerilen 7–12 V, sınır 6–20 V
Dijital giriş/çıkış14 pin (D0–D13)
PWM çıkışı6 pin: 3, 5, 6, 9, 10, 11
Analog giriş6 pin (A0–A5), 10 bit (0–1023)
Pin başına akım20 mA önerilen, 40 mA mutlak sınır
Toplam akım (VCC/GND)200 mA
3.3V pini akımıEn çok 50 mA
Bellek32 KB flash (0,5 KB bootloader), 2 KB SRAM, 1 KB EEPROM

Büyük pin tablosu: D0–D13 ve A0–A5

PinPortAna görevEk görevNot
D0 (RX)PD0Dijital G/ÇUART RX (Serial)USB-seri yongaya bağlı, boş bırak
D1 (TX)PD1Dijital G/ÇUART TX (Serial)USB-seri yongaya bağlı, boş bırak
D2PD2Dijital G/ÇHarici kesme INT0Buton, enkoder, devir sayma
D3 ~PD3Dijital G/Ç, PWM 490 HzHarici kesme INT1, Timer2tone() çalarken PWM bozulur
D4PD4Dijital G/Ç-Ek görevi yok, rahat kullanılır
D5 ~PD5Dijital G/Ç, PWM 980 HzTimer0millis() ile aynı zamanlayıcı
D6 ~PD6Dijital G/Ç, PWM 980 HzTimer0millis() ile aynı zamanlayıcı
D7PD7Dijital G/Ç-Ek görevi yok, rahat kullanılır
D8PB0Dijital G/Ç-Ek görevi yok, rahat kullanılır
D9 ~PB1Dijital G/Ç, PWM 490 HzTimer1Servo kütüphanesi PWM'ini kapatır
D10 ~PB2Dijital G/Ç, PWM 490 HzSPI SS, Timer1SPI'da çıkış olarak kalmalı
D11 ~PB3Dijital G/Ç, PWM 490 HzSPI MOSI, Timer2ICSP konnektöründe de var
D12PB4Dijital G/ÇSPI MISOICSP konnektöründe de var
D13PB5Dijital G/ÇSPI SCKKart üzerindeki L LED'i bu pinde
A0PC0Analog girişDijital 14-
A1PC1Analog girişDijital 15-
A2PC2Analog girişDijital 16-
A3PC3Analog girişDijital 17-
A4PC4Analog girişI2C SDA, dijital 18I2C kullanılırken analog okunmaz
A5PC5Analog girişI2C SCL, dijital 19I2C kullanılırken analog okunmaz
Analog pinler gerektiğinde normal dijital pin gibi de çalışır: A0 = 14, A1 = 15 … A5 = 19. Kodda pinMode(A2, OUTPUT) yazıp bir LED yakabilir ya da digitalRead(A3) ile buton okuyabilirsin; böylece Uno'da toplam 20 dijital pin elde edersin. Tablodaki "Port" sütunu pinin ATmega328P içindeki gerçek adıdır (dijital 13 = PB5); doğrudan port erişimiyle hızlı kod yazarken işine yarar. A6 ve A7 yalnızca Nano ve Pro Mini gibi kartlarda vardır.

Dijital pinler (0–13) nasıl çalışır?

Her dijital pin pinMode() ile giriş ya da çıkış yapılır. Çıkışta digitalWrite(pin, HIGH) pini yaklaşık 5 V'a, LOW ise 0 V'a çeker. Girişte digitalRead() gerilimi bir eşikle karşılaştırır: ATmega328P 5 V ile çalışırken 3,0 V'un üzeri kesin HIGH, 1,5 V'un altı kesin LOW sayılır, arası belirsiz bölgedir. Bu yüzden 3,3 V'luk bir sensörün çıkışı Uno'da çoğunlukla HIGH okunur; ama Uno'nun 5 V'luk çıkışı 3,3 V'luk bir modülün girişine doğrudan verilmemelidir, araya bir seviye dönüştürücü gerekir.

Hiçbir yere bağlı olmayan bir giriş pini havada kalır ve elini yaklaştırmanla bile rastgele HIGH ya da LOW okur. Çözüm, pini bir dirençle sabit bir seviyeye çekmektir: pinMode(pin, INPUT_PULLUP) çipin içindeki 20–50 kΩ'luk direnci açar, buton da pin ile GND arasına bağlanır. Ayrıntılar Arduino'ya buton nasıl bağlanır yazısında. Pin 13'e kart üzerindeki L LED'i bağlıdır; orijinal R3'te bu LED bir op-amp tamponuyla sürüldüğü için pini giriş olarak kullanmak sorun çıkarmaz, ama bazı klon kartlarda LED ve direnci doğrudan pine bağlıdır ve dahili pull-up ile buton okumayı bozabilir.

PWM pinleri (~3, 5, 6, 9, 10, 11) ve zamanlayıcılar

Uno gerçek bir analog çıkış üretemez; bunun yerine bu altı pinde PWM, yani çok hızlı açılıp kapanan bir kare dalga verir. analogWrite(pin, değer) ile dalganın açık kalma oranı 0–255 arasında ayarlanır: 0 tamamen kapalı, 127 yaklaşık yarı yarıya, 255 tamamen açık demektir. LED parlaklığı, motor hızı ve fan devri böyle kontrol edilir. Altı PWM pini, üç donanım zamanlayıcısına (timer) ikişer ikişer bağlıdır ve bazı kütüphanelerle yaşanan çakışmaların sebebi budur. PWM'in mantığı ve duty cycle hesabı PWM nedir yazısında anlatılıyor.

ZamanlayıcıPWM pinleriFrekansBu zamanlayıcıyı kim kullanır?
Timer0 (8 bit)5, 6Yaklaşık 980 Hzmillis(), delay() ve micros()
Timer1 (16 bit)9, 10Yaklaşık 490 HzServo kütüphanesi
Timer2 (8 bit)3, 11Yaklaşık 490 Hztone() ve IRremote gibi kütüphaneler
Servo kütüphanesini kullandığın anda 9 ve 10 numaralı pinlerde analogWrite() çalışmaz, servo o pinlere takılı olmasa bile. tone() ile buzzer çalarken de 3 ve 11'deki PWM bozulur. Projede hem servo hem buzzer varsa PWM için güvenli pinler 5 ve 6'dır. Bu iki pindeki PWM ise millis() ile aynı zamanlayıcıdan geldiği için çok düşük değerlerde (0–10) beklenenden biraz daha uzun açık kalabilir.

Analog pinler (A0–A5) ve AREF

Analog pinler 0–5 V arasındaki gerilimi 10 bit çözünürlükle ölçer ve analogRead() 0–1023 arası bir sayı döndürür. Bir adım yaklaşık 4,9 mV'tur; sayıyı volta çevirmek için gerilim = değer × 5,0 / 1023 formülünü kullanırsın, örneğin 512 okuması yaklaşık 2,5 V demektir. Altı pin tek bir ADC'yi sırayla paylaşır ve bir okuma yaklaşık 100 µs sürer, yani saniyede yaklaşık 10.000 okuma yapılabilir. Doğru ölçüm için sensörün çıkış direnci 10 kΩ'u geçmemelidir; daha yüksekse iki pini art arda okurken değerler birbirine karışabilir, ilk okumayı atıp ikinciyi kullanmak bu sorunu çözer. 5 V'tan yüksek gerilimleri ölçmek için gerilim bölücü hesaplayıcı ile uygun dirençleri seçebilirsin.

AREF pini analog ölçümün üst sınırını değiştirmeye yarar. analogReference(DEFAULT) 5 V'u, analogReference(INTERNAL) çipin içindeki 1,1 V'luk referansı, analogReference(EXTERNAL) ise AREF pinine verdiğin gerilimi (0–5 V) üst sınır yapar. 0–1 V arası çıkış veren bir sensörde 1,1 V referans kullanırsan bir adım yaklaşık 1,1 mV'a iner ve ölçüm yaklaşık 4,5 kat hassaslaşır. Potansiyometre, LDR ve toprak nem sensörü gibi parçalar bu pinlere bağlanır; analog-dijital dönüşümün ayrıntıları ADC yazısında, pratik bir örnek de potansiyometre yazısında.

AREF pinine dışarıdan gerilim veriyorsan, ilk analogRead() çağrısından önce mutlaka analogReference(EXTERNAL) yaz. Aksi halde çipin içindeki referans ile dışarıdaki gerilim kısa devre olur ve mikrodenetleyici zarar görebilir. Analog pinlere de hiçbir zaman 5 V'tan yüksek ya da eksi gerilim verme.

Güç pinleri: Vin, 5V, 3.3V, GND, IOREF ve RESET

PinNe yapar?Sınır ve dikkat
VinJaktan gelen gerilimi verir ya da kartı 7–12 V ile beslemeye yararTers bağlama koruma diyotunu atlar, kutuplara dikkat
5VRegülatörden ya da USB'den gelen 5 V çıkışUSB'de 500 mA'lik sigorta; dışarıdan yalnız regüleli 5 V verilir
3.3VKart üzerindeki regülatörden 3,3 V çıkışEn çok 50 mA; RC522 gibi küçük modüller için
GNDOrtak toprak (altta 2, üstte 1 adet)Tüm harici kaynakların GND'si buraya birleşmeli
IOREFKartın lojik gerilimini shield'lara bildirirUno'da 5V'a bağlıdır, besleme için kullanılmaz
RESETLOW yapılınca kartı yeniden başlatırShield üzerindeki reset düğmeleri bunu kullanır
AREFAnalog ölçüm için dış referans girişi0–5 V; önce analogReference(EXTERNAL)
NC (adsız pin)R3'te ileride kullanılmak üzere ayrılmışHiçbir yere bağlı değil

Uno üç yoldan beslenir. USB ile kart 5 V'u doğrudan bilgisayardan alır ve 500 mA'lik sıfırlanabilir bir sigorta bilgisayarın portunu korur. DC jak ya da Vin üzerinden 7–12 V verirsen kart üzerindeki regülatör bunu 5 V'a düşürür; ikisi birden takılıysa kart, Vin yaklaşık 6,6 V'u geçtiğinde otomatik olarak dış beslemeye geçer. Regülatör fazla gerilimi ısıya çevirdiği için 12 V girişte 5V pininden birkaç yüz mA çekmek onu hızla ısıtır. Servo, motor ve LED şerit gibi yükleri ayrı bir kaynaktan besleyip yalnızca GND'leri birleştirmek en sağlıklısıdır. Pil seçimi ve çalışma süresi için pil ömrü hesaplayıcıyı kullanabilir, tüm besleme yöntemlerini Arduino güç besleme yazısında okuyabilirsin.

5V pinine dışarıdan 5 V'tan yüksek gerilim verme: regülatör devreden çıkar ve 6 V'un üzerindeki her gerilim ATmega328P'yi yakabilir. 9 V'luk pili yanlışlıkla 5V pinine bağlamak, yeni başlayanların kart yakmasının en sık sebeplerinden biridir. Pili her zaman DC jaka ya da Vin pinine bağla.

0 ve 1 numaralı seri pinler neden boş bırakılır?

Uno'nun 0 (RX) ve 1 (TX) pinleri ATmega328P'nin tek donanım seri portudur ve kart üzerinde 1 kΩ'luk dirençlerle USB-seri dönüştürücü yongaya (ATmega16U2) bağlıdır. Kod yüklerken ve Serial Monitor'e yazı gönderirken bilgisayar bu iki pini kullanır. Pin 0'a bir Bluetooth modülünün TX ucu ya da başka bir sinyal bağlıysa iki kaynak aynı hatta çekişir ve yükleme avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00 hatasıyla durur. Ayrıca Serial.print() her çalıştığında pin 1 hızla değişir; oraya bağlı bir LED ya da röle rastgele tetiklenir.

Bu yüzden 0 ve 1'i diğer pinler bitmedikçe boş bırak. HC-05, GPS ya da MP3 çalar gibi bir seri modül bağlayacaksan SoftwareSerial kütüphanesiyle başka iki pinde ikinci bir seri port oluşturabilirsin. Aşağıdaki kod modülü 8 (RX) ve 7 (TX) pinlerine bağlar; Serial Monitor'e yazdığını modüle, modülden geleni bilgisayara aktarır. HC-05 gibi 3,3 V lojikli modüllerde Uno'nun TX çıkışını (pin 7) modülün RX ucuna bir gerilim bölücüyle bağla. Yükleme sorunlarının tüm çözümleri Arduino kod yüklenmiyor, seri haberleşmenin mantığı ise UART seri haberleşme yazısında.

C++ (Arduino IDE)
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}

Haberleşme pinleri: I2C (A4/A5), SPI (10–13) ve kesme pinleri (2, 3)

I2C yalnızca iki kabloyla (SDA ve SCL) onlarca cihazı aynı hatta bağlamanı sağlar; LCD ekranlar, OLED'ler, RTC saat modülleri ve BME280 gibi sensörler bu yolu kullanır. Uno'da SDA = A4, SCL = A5'tir. R3 kartlarda AREF'in yanındaki SDA ve SCL pinleri ayrı bir hat değildir, içeriden A4 ve A5'e bağlıdır; bu yüzden I2C kullanırken A4 ve A5'i analog okuma için kullanamazsın. Wire kütüphanesi varsayılan olarak 100 kHz'te çalışır, Wire.setClock(400000) ile 400 kHz'e çıkabilir. Adresler, pull-up dirençleri ve I2C tarayıcı kodu I2C nedir yazısında, uygulamalı bir örnek de I2C LCD ekran yazısında.

SPI daha hızlı ama daha çok kablo isteyen bir haberleşmedir: MOSI = 11, MISO = 12, SCK = 13 ve SS (CS) = 10. SD kart modülleri, RFID okuyucular ve TFT ekranlar SPI kullanır. Aynı hatta birden fazla cihaz bağlanabilir: MOSI, MISO ve SCK ortaktır, her cihaza ayrı bir CS pini verilir. Önemli bir ayrıntı: SPI ana (master) modundayken pin 10 çıkış olarak kalmalıdır; pin 10'u giriş yapıp LOW'a çekersen ATmega328P kendini uydu (slave) moduna alır ve SPI durur. MISO, MOSI ve SCK ICSP konnektöründe de vardır, bazı shield'lar SPI'ya oradan bağlanır. Ayrıntılar için SPI nedir ve RFID RC522 yazılarına bakabilirsin.

Kesme (interrupt), pindeki bir değişikliği loop() o sırada ne yapıyor olursa olsun anında yakalamanı sağlar. Uno'da harici kesme yalnızca 2 (INT0) ve 3 (INT1) numaralı pinlerdedir: attachInterrupt(digitalPinToInterrupt(2), fonksiyon, FALLING) yazarsın; tetikleme türü LOW, CHANGE, RISING ya da FALLING olabilir. Enkoder, devir sensörü, su akış sensörü ve kaçırılmaması gereken butonlar bu pinlere bağlanır. Diğer pinlerde de "pin değişim kesmesi" (PCINT) vardır, ama aynı porttaki pinler tek bir kesme fonksiyonunu paylaşır ve hangi pinin değiştiğini kodla bulman gerekir. Kurallar ve örnekler Arduino interrupt yazısında.

GörevArduino UnoESP32 (DevKit)Raspberry Pi Pico
I2C SDA / SCLA4 / A5GPIO 21 / 22GP4 / GP5
SPI MOSI / MISO / SCK / CS11 / 12 / 13 / 10GPIO 23 / 19 / 18 / 5GP19 / GP16 / GP18 / GP17
UART TX / RX1 / 0GPIO 1 / 3 (USB'ye bağlı)GP0 / GP1
Harici kesmeYalnız 2 ve 3Tüm GPIO'larTüm GPIO'lar
PWM6 pinÇıkış verebilen hemen tüm pinlerTüm GPIO'lar
Analog giriş6 pin, 10 bitADC1: GPIO 32–39, 12 bitGP26, GP27, GP28; 12 bit
Lojik seviye5 V3,3 V (5 V'a dayanıksız)3,3 V (5 V'a dayanıksız)
Pin başına akım20 mA (en çok 40 mA)Yaklaşık 20 mA önerilirVarsayılan 4 mA, en çok 12 mA

ESP32'ye ya da Pico'ya geçerken en büyük fark gerilimdir: iki kart da 3,3 V ile çalışır ve pinleri 5 V'a dayanıklı değildir, bu yüzden Uno'ya doğrudan bağladığın 5 V'luk modüller için seviye dönüştürücü gerekebilir. Buna karşılık bu kartlarda kesme ve PWM neredeyse her pinde vardır, I2C ve SPI hatları da başka pinlere taşınabilir. Kartları karşılaştırmak için Arduino mu ESP32 mi yazısını, pin haritalarına bakmak için pin diyagramı aracını kullanabilirsin; kartların kendisi ESP32 nedir ve Raspberry Pi Pico nedir yazılarında anlatılıyor.

ICSP konnektörü ne işe yarar?

ICSP (In-Circuit Serial Programming), mikrodenetleyiciyi USB ve bootloader olmadan, doğrudan SPI hattı üzerinden programlamaya yarayan 2×3'lük konnektördür. Kartın sağ kenarındaki ICSP ATmega328P'ye, USB girişinin yanındaki küçük ICSP1 ise USB-seri yongaya (ATmega16U2) aittir. Günlük kullanımda ona hiç dokunmazsın; ama bootloader bozulduğunda, yeni bir ATmega328P'ye bootloader yazarken ya da USBasp gibi bir programlayıcıyla kod yüklerken ICSP kullanılır. İkinci bir Uno'yu ArduinoISP örneğiyle programlayıcıya çevirirsen, programlayıcının 10, 11, 12 ve 13 numaralı pinleri hedef kartın RESET, MOSI, MISO ve SCK uçlarına gider; programlayıcı Uno'nun RESET ile GND arasına takılan 10 µF'lık bir kondansatör de otomatik resetini engeller. Kartının zarar görüp görmediğini anlamak için Arduino yandı mı yazısına göz atabilirsin.

ICSP piniSinyalUno'daki karşılığı
1MISOD12
2VCC (+5 V)5V
3SCKD13
4MOSID11
5RESETRESET
6GNDGND

Pin başına 20 mA, toplam 200 mA: akım sınırları

Bir Uno pini en fazla 20 mA ile güvenle çalıştırılır. ATmega328P datasheet'indeki 40 mA ise mutlak sınırdır, yani aşıldığında çipin kalıcı olarak zarar görebileceği değerdir; çalışma değeri değildir. Çipin VCC ve GND uçlarından geçen toplam akım 200 mA'i geçmemelidir. Datasheet ayrıca pinleri gruplara ayırır: akım verirken (HIGH) D0–D4 ile A0–A5 birlikte, D5–D13 de kendi arasında 150 mA'i; akım çekerken (LOW) ise D0–D4, D5–D13 ve A0–A5 grupları ayrı ayrı 100 mA'i aşmamalıdır. Kırmızı bir LED'i 220 Ω dirençle 5 V'tan sürdüğünde akım (5 − 2) / 220 ≈ 13,6 mA olur. On LED aynı anda yanarsa toplam 136 mA'e çıkar; bu 200 mA'in altındadır ama hepsi aynı gruptaysa 150 mA'lik grup sınırına çok yaklaşır. LED'ler pin LOW iken yanacak şekilde (5V'tan dirençle pine) bağlıysa ve çoğu aynı gruptaysa 100 mA'lik sınır aşılır. LED'leri gruplara dağıt ya da direnci 330–470 Ω'a çıkar. Doğru direnci LED direnci hesaplayıcı ya da Ohm kanunu hesaplayıcı ile bulabilirsin.

  • Motorlar: Küçük bir DC motor bile yüzlerce mA çeker ve gerilim sıçramaları üretir; L298N gibi bir motor sürücü ya da transistör kullan.
  • Röle bobini: 5 V'luk bir röle bobini yaklaşık 70–90 mA çeker; transistörlü ve diyotlu bir röle modülü kullan.
  • Servo motorlar: Sinyal kablosu pine bağlanabilir ama servonun beslemesi 5V pininden değil ayrı bir kaynaktan gelmeli; ayrıntılar servo motor yazısında.
  • LED şeritler ve güçlü LED'ler: 12 V şeritler ve 1 W LED'ler için lojik seviye bir MOSFET gerekir.
  • Kısa devre: HIGH durumdaki bir çıkışı doğrudan GND'ye bağlamak pinden 40 mA'in çok üzerinde akım çeker ve pini kalıcı olarak bozar.

Test kodu: dijital, PWM, analog ve kesme pinlerini birlikte dene

  1. Pin 9'a 220 Ω'luk bir dirençle bir LED bağla: uzun bacak dirence, kısa bacak GND'ye.
  2. Potansiyometrenin iki kenar ucunu 5V ve GND'ye, orta ucunu A0'a bağla.
  3. Bir butonu pin 2 ile GND arasına bağla; dahili pull-up kullanılacağı için ayrı direnç gerekmez.
  4. Kodu yükle, Serial Monitor'ü aç ve hızı 9600 baud yap.
  5. Potansiyometreyi çevir: pin 9'daki LED'in parlaklığı değişir, gerilim 2,5 V'u geçince kart üzerindeki L LED'i (pin 13) yanar, butona her basışta sayaç bir artar.
C++ (Arduino IDE)
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}

Kod, Uno'nun dört pin türünü aynı anda kullanır. analogRead(A0) 0–1023 arası değeri okur, raw / 4 bunu analogWrite()'ın beklediği 0–255 aralığına indirir. Butondaki kontak sıçramalarını saymamak için kesme fonksiyonu, son basıştan 50 ms geçmeden gelen sinyalleri yok sayar. Kesme içinde değişen sayaç volatile tanımlanır ve loop() içinde kesmeler kısa süre durdurularak kopyalanır; çünkü 8 bitlik Uno, 16 bitlik bir sayıyı iki adımda okur ve arada gelen bir kesme yanlış bir değer okutabilir. Pin 0 ve 1 yalnızca Serial için kullanıldığından başka hiçbir şeye bağlanmaz.

Örnek pin planı: hangi parça hangi pine?

Çok parçalı bir projede pinleri rastgele dağıtmak çakışmalara yol açar. Önce özel görevli parçaları (I2C, SPI, kesme, PWM) kendi pinlerine yerleştir, kalan basit dijital işleri boş pinlere dağıt. Aşağıda RFID kartlı bir kapı kilidi için hazırlanmış örnek bir plan var: RC522 okuyucu, I2C LCD, servo, buzzer, buton ve iki LED. Servo ve tone() birlikte kullanıldığı için 3, 9, 10 ve 11'deki PWM zaten devre dışıdır; plan bunu hesaba katar.

ParçaUno piniNeden bu pin?
RC522 SDA (SS)10SPI'ın SS pini; çıkış olarak kalması gerekir
RC522 SCK / MOSI / MISO13 / 11 / 12Donanım SPI pinleri değiştirilemez
RC522 RST9Herhangi bir dijital pin olabilir; servo yüzünden 9'un PWM'i zaten kullanılamaz
RC522 VCC3.3VModül 3,3 V ile çalışır, akımı 50 mA sınırının altında
I2C LCD SDA / SCLA4 / A5Uno'nun tek I2C hattı
Servo sinyali6Servo kütüphanesi her pinde çalışır; besleme harici 5 V'tan
Buzzer8tone() her pinde çalışır, PWM pini harcanmaz
Buton2Kesme pini; INPUT_PULLUP ile direnç gerekmez
Yeşil / kırmızı LED4 / 7Ek görevi olmayan sade dijital pinler
Boş kalanlar0, 1, 3, 5, A0–A3Seri hat serbest; 3 ikinci kesme, 5 PWM, A0–A3 sensör için

Arduino Uno R3 ile R4 arasındaki pin farkları

ÖzellikUno R3Uno R4 (Minima / WiFi)
MikrodenetleyiciATmega328P, 8 bit, 16 MHzRenesas RA4M1, 32 bit, 48 MHz
Pin yerleşimiStandart UnoAynı; shield'lar takılabilir
Pin başına akım20 mA8 mA
Analog çözünürlük10 bitVarsayılan 10 bit, 14 bite kadar
Gerçek analog çıkış (DAC)YokA0'da 12 bit DAC
0 ve 1 numaralı pinlerUSB ile paylaşılır (Serial)USB'den ayrıdır (Serial1)
Vin aralığı7–12 V önerilen6–24 V
USBUSB-B, ATmega16U2 üzerindenUSB-C; Minima'da doğrudan işlemciye, WiFi'da ESP32-S3 köprüsü üzerinden

Kısacası R4'te pin numaraları ve görevleri (PWM ~3, 5, 6, 9, 10, 11; I2C A4/A5; SPI 10–13; kesme 2, 3) aynı kalır ama pin başına akım 8 mA'e düşer. R3'te doğrudan pinden sürdüğün bir LED'i R4'te daha büyük bir dirençle (örneğin 1 kΩ ile yaklaşık 3 mA) ya da bir transistörle sürmen gerekir. Ayrıntılı karşılaştırma Arduino Uno R4 yazısında. Daha küçük bir kart arıyorsan Arduino Nano pinleri ve hangi Arduino'yu almalıyım yazıları işine yarar.

Sık yapılan hatalar ve çözümleri

BelirtiSebepÇözüm
Kod yüklenmiyor, "not in sync" hatasıPin 0 ya da 1'e modül bağlıYüklerken modülü çıkar ya da SoftwareSerial ile başka pinlere taşı
Servo takınca LED'in parlaklığı değişmiyorServo kütüphanesi 9 ve 10'un PWM'ini kapattıLED'i 3, 5, 6 ya da 11'e taşı
Buzzer çalarken motor hızı bozuluyortone() Timer2'yi kullanıyor, 3 ve 11 etkileniyorPWM'i 5, 6, 9 ya da 10'a taşı
Analog değer kendi kendine oynuyorPin boşta ya da kaynak direnci çok yüksekSensörü sağlam bağla, gerekirse iki kez oku
Buton rastgele basılmış görünüyorGiriş pini havadaINPUT_PULLUP kullan ya da 10 kΩ direnç ekle
I2C ekran varken A4/A5 doğru okunmuyorA4/A5 I2C hattıyla ortakAnalog sensörü A0–A3'e bağla
SPI modülü yanıt vermiyorPin 10 giriş yapılmış ya da CS yanlışPin 10'u çıkış bırak, her cihaza ayrı CS ver
Kart ısınıyor ya da kendini resetliyorPinlerden ya da 5V'tan fazla akım çekiliyorYükleri ayrı kaynaktan besle, GND'leri birleştir
Projeye başlamadan önce kâğıda küçük bir pin planı çiz: parça, pin, görev. Kodun en başında da pinleri const byte LED_PIN = 9; gibi adlandırılmış sabitlerle tanımla; bir parçayı başka pine taşıdığında yalnızca tek satırı değiştirirsin. Kart beklenmedik şekilde yeniden başlıyorsa Arduino resetleniyor yazısındaki teşhis adımlarını izleyebilirsin.

Arduino Uno'nun pinlerini tanıdığında hangi parçayı nereye bağlayacağını ezberlemen gerekmez; parçanın ihtiyacına bakar, doğru pini kendin seçersin. Temelleri tekrar etmek istersen Arduino nedir yazısıyla başlayabilirsin. BlueGrays uygulamasında LED yakma, buton okuma, LDR ile analog ölçüm, PWM ile RGB LED, I2C LCD, RFID ve iki Arduino'yu seri hatla haberleştirme projelerini, hangi pinin neden seçildiğini gösteren devre şemaları ve hazır kodlarla adım adım bulabilirsin.

Sıkça sorulan sorular

Arduino Uno'da kaç pin var?

Arduino Uno R3'te 14 dijital giriş/çıkış pini (0–13) ve 6 analog giriş (A0–A5) bulunur; analog pinler dijital olarak da kullanılabildiği için toplam 20 sinyal pini vardır. Dijital pinlerin 6'sı PWM verir. Bunlara ek olarak Vin, 5V, 3.3V, GND, IOREF, AREF ve RESET gibi güç ve kontrol pinleri ile 6 pinlik ICSP konnektörü yer alır.

Arduino Uno'da PWM pinleri hangileri?

PWM pinleri 3, 5, 6, 9, 10 ve 11'dir; kartta numaralarının yanında ~ işareti bulunur. 5 ve 6 yaklaşık 980 Hz, diğerleri yaklaşık 490 Hz frekansla çalışır. Servo kütüphanesi kullanılırken 9 ve 10'un, tone() kullanılırken 3 ve 11'in PWM'i etkilenir.

Arduino analog pinleri dijital pin olarak kullanılabilir mi?

Evet. Uno'da A0–A5 pinleri pinMode, digitalWrite ve digitalRead ile normal dijital pin gibi çalışır ve 14–19 numaralarına karşılık gelir. Yani A0'a LED, A3'e buton bağlayabilirsin. Yalnızca I2C kullanırken A4 ve A5 bu hatta ayrılmış olur.

Arduino Uno bir pinden kaç mA akım verir?

Bir pinden güvenle 20 mA çekilebilir; 40 mA mutlak sınırdır; bu değer aşılırsa pin kalıcı olarak zarar görebilir. Tüm pinlerin toplamı 200 mA'i geçmemelidir. Bu yüzden LED'ler dirençle bağlanır, motor ve röle gibi yükler ise transistör, MOSFET ya da sürücü modülüyle sürülür.

Arduino Uno'da 0 ve 1 numaralı pinler kullanılabilir mi?

Kullanılabilir ama önerilmez. Bu pinler USB-seri yongaya bağlıdır; kod yüklerken ve Serial Monitor kullanırken bilgisayar bu hattı kullanır. Pin 0'a bir modül bağlıyken yükleme "not in sync" hatasıyla başarısız olabilir, bu yüzden bu pinleri en son kullan ya da SoftwareSerial ile başka pinlere geç.

Arduino Uno'da SDA ve SCL pinleri hangileri?

Uno'da I2C hattının SDA ucu A4, SCL ucu A5 pinidir. R3 kartlarda AREF pininin yanında SDA ve SCL yazan iki pin daha vardır, ama bunlar içeriden A4 ve A5'e bağlıdır, ayrı bir hat değildir. ESP32'de varsayılan I2C pinleri GPIO 21 ve 22'dir; Raspberry Pi Pico'da I2C birçok pine alınabilir, en sık GP4 (SDA) ile GP5 (SCL) kullanılır.

Tüm projeleri gör
Led Yakma
#1Başlangıç

Led Yakma

Elektroniğin ilk merhabası: tek bir LED'i yakıp söndürmek. Arduino LED'i çok kısa aralıklarla yakıp söndürür, ışık hızlı hızlı göz kırpar. Kartın bir ışığı nasıl yönettiğini en sade haliyle görür, son

4.6(188)
1127
Buton İle Led Yakma (Push)
#9Başlangıç

Buton İle Led Yakma (Push)

Kapı zili gibi: bastığın sürece ışık yanar, bırakınca söner. Arduino butonu sürekli dinler; butona basılıyken LED'i yakar, elini çektiğin an söndürür. Kartın dışarıdan gelen bir dokunuşu nasıl hissett

4.8(113)
229
Ldr İle Işık Şiddeti Okuma
#11Başlangıç

Ldr İle Işık Şiddeti Okuma

Odanın ne kadar aydınlık olduğunu sayıyla görmek ister misin? Işığa duyarlı küçük bir parça olan LDR ortam ışığını ölçer ve Arduino bu değeri yarım saniyede bir bilgisayar ekranına yazar. Elinle üstün

4.6(81)
139
HC-SR04 Mesafe Ölçme (Serial Ekran)
#27Başlangıç

HC-SR04 Mesafe Ölçme (Serial Ekran)

Yarasalar karanlıkta yollarını nasıl buluyorsa HC-SR04 sensörü de öyle çalışır: duyamadığın bir ses gönderir, yankısını dinler ve önündeki cismin ne kadar uzakta olduğunu ölçer. Arduino bu mesafeyi sa

4.6(46)
71
RGB Led İle Yumuşak Renk Geçişi
#40Başlangıç
Premium

RGB Led İle Yumuşak Renk Geçişi

Tek bir RGB LED kırmızıdan yeşile, yeşilden maviye, maviden yeniden kırmızıya yavaşça geçer ve bu gökkuşağı döngüsü hiç durmaz. Her geçiş iki buçuk saniye kadar sürer; aradaki sarı, turkuaz ve mor ton

4.8(58)
76
I2C İle LCD Ekran Kullanımı
#32Başlangıç
Premium

I2C İle LCD Ekran Kullanımı

Arduino'ya kendi ekranını kazandır ve ilk mesajını yazdır. İki satırlık LCD ekran yalnızca birkaç kabloyla bağlanır; önce üst satıra bir selam, ardından alt satıra ikinci bir yazı gelir, ekran temizle

4.8(53)
70
RFID Değer Okuma
#53Başlangıç
Premium

RFID Değer Okuma

Apartman anahtarlığında ya da giriş kartında gizli bir kimlik numarası saklıdır; bu proje onu okur. Kartı RFID okuyucuya yaklaştırınca Arduino kartın numarasını bilgisayar ekranına yazar. Kartlı kapı

4.7(47)
61
2 Arduino Tek Yönlü Haberleşme
#57Orta
Premium

2 Arduino Tek Yönlü Haberleşme

İki Arduino'yu tek bir kabloyla konuşturursun: birindeki butona basınca öbüründeki LED yanar, bir daha basınca söner. Gönderen kart butona basıldığını kısa bir mesajla bildirir, alan kart bu mesajı du

4.4(37)
50