Kerem Öz

Arduino Başlangıç Rehberi: İlk 30 Günde Gerçekten Öğrenmeniz Gerekenler

Arduino’ya sıfırdan başlayanlar için yol haritası: hangi kartı almalı, hangi malzemeler gerekli, ilk devreler, sık yapılan hatalar ve 30 günlük gerçekçi bir öğrenme planı.

Arduino Başlangıç Rehberi: İlk 30 Günde Gerçekten Öğrenmeniz Gerekenler
Şek. 1 Arduino Başlangıç Rehberi: İlk 30 Günde Gerçekten Öğrenmeniz Gerekenler

Arduino’ya başlamak kolay; asıl zor olan ilk ayı motivasyonu kaybetmeden geçirmek. Çoğu insan bir başlangıç seti alıyor, LED yakıp söndürüyor, sonra ne yapacağını bilemeyip bırakıyor. Sorun kişide değil, yol haritasının olmamasında.

Bu yazıda size 30 günlük somut bir plan veriyorum. Neyi ne zaman öğreneceğinizi, hangi malzemeleri almanız gerektiğini ve hangi hataların zaman kaybettirdiğini sırayla anlatıyorum.

Arduino tam olarak nedir

Arduino bir mikrodenetleyici geliştirme kartıdır. Ortasındaki çip (Uno’da ATmega328P) küçük bir bilgisayardır: işletim sistemi yoktur, tek bir programı sonsuz döngüde çalıştırır.

Arduino’yu popüler yapan şey çip değil, etrafındaki ekosistem: kartın üzerindeki USB dönüştürücü, gerilim regülatörü, standart pin dizilimi ve devasa kütüphane arşivi. Bunlar sayesinde bir sensörü okumak, veri sayfasını çözmek yerine tek satır kod yazmak haline geliyor.

İki temel fonksiyon

Her Arduino programı iki fonksiyondan oluşur:

void setup() {
  // Kart açıldığında BİR KEZ çalışır.
  // Pin yönleri, seri haberleşme, başlangıç ayarları buraya.
}

void loop() {
  // setup() bittikten sonra SONSUZA KADAR tekrar eder.
  // Asıl işi yapan kod buraya.
}

Bu ikilinin mantığını oturtmak, ilk günün en önemli kazancı. loop() saniyede binlerce kez çalışır; bu yüzden içine koyduğunuz her bekleme, robotunuzun tepki süresini doğrudan uzatır.

Ne almalısınız

Hazır başlangıç setleri iş görür ama içindekilerin yarısını hiç kullanmazsınız. Gerçekten işinize yarayacak liste şu:

ParçaAdetNeden gerekli
Arduino Uno R3 (klon olabilir)1Ana kart
Breadboard (830 delik)1Lehimsiz devre kurmak için
Jumper kablo seti (E-E, E-D, D-D)1 setHer şeyi bağlamak için
Direnç seti (220Ω, 1kΩ, 10kΩ ağırlıklı)1 setLED ve buton devreleri
LED (kırmızı, yeşil, sarı)10+Çıkış görselleştirme
Buton (tact switch)5Giriş okuma
Potansiyometre 10kΩ2Analog giriş öğrenmek
SG90 servo motor2İlk hareket
Multimetre1En kritik alet. Ölçemediğinizi tamir edemezsiniz.
Öneri

Bütçeniz kısıtlıysa parça listesinden kısın, multimetreden kısmayın. 300–500 TL’lik basit bir multimetre, gerilim ve süreklilik ölçerek size onlarca saat kazandırır. Devrenin neden çalışmadığını tahmin etmek yerine ölçersiniz.

30 günlük plan

1. hafta — Dijital dünya

Amaç: pinlerin açık/kapalı davranışını ve temel program akışını kavramak.

  • Gün 1–2: Arduino IDE kurulumu, Blink örneğini yükleme, pinMode ve digitalWrite.
  • Gün 3–4: Birden fazla LED, for döngüsü ile sıralı yakma (koşan ışık).
  • Gün 5–6: Buton okuma, digitalRead, pull-up direnç mantığı ve INPUT_PULLUP.
  • Gün 7: Buton ile LED kontrolü + buton sıçraması (debounce) problemi.

Debounce, ilk haftanın en öğretici konusu: mekanik buton bir kez basıldığında elektriksel olarak defalarca açılıp kapanır. Bunu kodla çözmek, gerçek dünyanın ideal olmadığını gösteren ilk ders.

2. hafta — Analog dünya

Amaç: sürekli değişen sinyalleri okumak ve üretmek.

  • Gün 8–9: Potansiyometre ile analogRead, 0–1023 aralığı.
  • Gün 10–11: analogWrite ve PWM ile LED parlaklığı. PWM’in gerçek analog olmadığını anlamak.
  • Gün 12–13: map() ve constrain() fonksiyonları — değer aralığı dönüştürme.
  • Gün 14: Seri Monitör ile veri izleme ve hata ayıklama.

Seri Monitör’ü erken öğrenin. Gömülü sistemlerde ekran yoktur; Serial.println() sizin tek penceredir.

Breadboard üzerinde kurulmuş Arduino devresi, jumper kablolar ve LED'ler
Şek. 2 — Breadboard’da düzenli kablolama, hata ayıklama süresini yarıya indirir. Renk kodu kullanın: kırmızı besleme, siyah toprak.

3. hafta — Sensörler ve hareket

Amaç: dış dünyayı okumak ve ona müdahale etmek.

  • Gün 15–16: HC-SR04 ultrasonik sensör ile mesafe ölçümü.
  • Gün 17–18: DHT11 / LM35 ile sıcaklık okuma, kütüphane kurulumu.
  • Gün 19–20: Servo motor kontrolü, açı komutu.
  • Gün 21: DC motor ve L298N/TB6612 sürücü kartı ile ileri-geri-dönüş.

Motor sürücüye geldiğinizde ilk kez ciddi bir güç sorunuyla karşılaşacaksınız: motorlar Arduino’nun pinlerinden beslenemez. Bu, ayrı güç kaynağı ve ortak toprak (GND) kavramını öğrenmenin doğal noktası.

4. hafta — İlk gerçek proje

Amaç: parçaları birleştirip kendi başına çalışan bir şey üretmek.

  • Gün 22–24: Proje seçimi ve devre şeması çizimi. Kod yazmadan önce çizin.
  • Gün 25–28: Uygulama, hata ayıklama, iyileştirme.
  • Gün 29–30: Belgeleme: şema, kod ve fotoğraflarla projeyi kaydedin.

Dördüncü hafta projesi için iyi seçenekler: engelden kaçan robot, otomatik sulama sistemi, park sensörü, dijital termometre veya basit bir çizgi izleyen robot.

Elektronikte hayatta kalma bilgisi

Arduino öğrenirken en çok yandığınız yer elektronik tarafı olacak. Şu üç kavram, hataların çoğunu önler.

Ohm yasası

V = I × R. Gerilim, akım ve direnç arasındaki ilişki. LED’e neden direnç koyduğunuzu bu formül açıklar: 5 V kaynağa doğrudan bağlanan LED, sınırsız akım çekip yanar.

LED direnci hesabı: R = (Kaynak Gerilimi − LED Gerilimi) / İstenen Akım. Kırmızı LED için (5 − 2) / 0,02 = 150 Ω. 220 Ω yaygın ve güvenlidir.

Ortak toprak

Farklı güç kaynakları kullandığınızda (Arduino USB’den, motorlar pilden) tüm GND’ler birbirine bağlanmalıdır. Aksi halde sinyaller referanssız kalır ve devre rastgele davranır. Bu, yeni başlayanların en sık takıldığı sorundur.

Akım sınırları

KaynakGüvenli sınırNot
Tek dijital pin20 mAMutlak maksimum 40 mA, yaklaşmayın
Tüm pinler toplamı200 mAÇipin toplam sınırı
5V pini (USB ile)~500 mAUSB portu belirler
5V pini (adaptör ile)~800 mARegülatör ısınır, dikkat
Dikkat

Motoru, ısıtıcıyı veya birden fazla güçlü LED’i asla Arduino pininden beslemeyin. Bu iş için transistör, MOSFET, röle veya motor sürücü kartı kullanın. Yanan bir pini geri getiremezsiniz.

En çok kullanacağınız on fonksiyon

Arduino’nun yüzlerce fonksiyonu var ama projelerin %90’ı şu on tanesiyle yazılıyor. Bunları ezberlemeye çalışmayın; kullandıkça oturuyor.

FonksiyonNe yaparTipik kullanım
pinMode(pin, mod)Pini giriş ya da çıkış yaparpinMode(13, OUTPUT)
digitalWrite(pin, deger)Pini 5 V veya 0 V yaparLED, röle
digitalRead(pin)Pinin durumunu okurButon
analogRead(pin)0–1023 arası değer okurPotansiyometre, sensör
analogWrite(pin, deger)PWM üretir (0–255)LED parlaklığı, motor hızı
millis()Açılıştan beri geçen msBloklamayan zamanlama
map(d, a1, a2, b1, b2)Değeri aralıklar arası çevirir0–1023 → 0–255
constrain(d, alt, ust)Değeri sınırlarMotor hızını taşırmamak
Serial.println(x)Bilgisayara veri yazarHata ayıklama
attachInterrupt(...)Olay olunca fonksiyon çağırırEncoder, hızlı buton

map ve constrain ikilisi

Bu ikisi neredeyse her projede yan yana kullanılır ve yeni başlayanların en çok gözden kaçırdığı ayrıntıyı barındırır: map() sınır kontrolü yapmaz.

int ham = analogRead(A0);              // 0–1023 bekleniyor
int hiz = map(ham, 100, 900, 0, 255);  // ama 100'ün altı negatif çıkar
hiz = constrain(hiz, 0, 255);          // bu satır olmadan motor ters döner

Devre şeması okumak

Bir noktadan sonra internette bulduğunuz projelerin fotoğrafına bakarak devre kuramazsınız; şema okumanız gerekir. İyi haber, robotikte kullanılan sembol sayısı çok az.

Temel semboller

  • Düz çizgi: Kablo. Kesişen ama noktası olmayan çizgiler bağlı değildir.
  • Nokta: Bağlantı var.
  • Zikzak veya dikdörtgen: Direnç.
  • Üçgen + çizgi: LED (ok işareti ışığı gösterir).
  • Aşağı bakan üç çizgi: Toprak (GND).
  • Yukarı ok veya VCC etiketi: Besleme.

Toprak sembolünün anlamı

Şemalarda GND sembolü birden fazla yerde görünür ama hepsi aynı noktadır. Şema karmaşıklaşmasın diye her seferinde kablo çizilmez. Devreyi kurarken bunların hepsini birbirine bağlamanız gerekir.

Bu, yeni başlayanların en sık yaptığı hatalardan biri: farklı güç kaynakları kullanıp toprakları birleştirmemek. Sistem çalışmaz ve sebebi görünmez.

Zaman kaybettiren beş hata

  1. Kod yazmadan önce şema çizmemek. Kafadaki devre ile breadboarddaki devre asla aynı olmaz. Kağıda çizin.
  2. Her şeyi aynı anda kurmak. Sensörü tek başına test edin, motoru tek başına test edin, sonra birleştirin.
  3. Kütüphaneleri anlamadan kullanmak. Kütüphane işi kolaylaştırır ama bir sensörün nasıl çalıştığını bir kez elle okumak, sonraki yüz sensörü öğretir.
  4. delay() bağımlılığı. delay() programı tamamen durdurur. Birden fazla iş yapan projelerde millis() ile zamanlama öğrenin.
  5. Hata ayıklamayı tahmine dayandırmak. Serial.println() ile değişkenleri yazdırın, multimetre ile gerilim ölçün. Tahmin etmeyin, ölçün.

delay() yerine millis()

Bu, başlangıç seviyesinden orta seviyeye geçişin işareti:

unsigned long sonZaman = 0;
const unsigned long ARALIK = 1000;

void loop() {
  // Bu blok saniyede bir çalışır ama programı durdurmaz
  if (millis() - sonZaman >= ARALIK) {
    sonZaman = millis();
    ledDurumu = !ledDurumu;
    digitalWrite(LED_PIN, ledDurumu);
  }

  // Bu satırlar kesintisiz çalışmaya devam eder
  butonKontrol();
  sensorOku();
}

Hata ayıklama: çalışmayan devreyi bulmanın sistematiği

Bir noktada devreniz çalışmayacak ve nedenini bilemeyeceksiniz. Bu an, öğrenmenin gerçekten başladığı andır — yeter ki rastgele kablo oynatmak yerine sistemli davranın.

Önce ikiye böl

Sorunun donanımda mı yazılımda mı olduğunu ayırın. Bunun en hızlı yolu, şüphelendiğiniz parçayı tek başına test etmek:

  • Sensör okumuyor mu? Kodu boşaltıp sadece Serial.println(analogRead(A0)) yazın. Değer geliyorsa sensör sağlam, sorun ana kodda.
  • Motor dönmüyor mu? Sürücüyü devreden çıkarıp motoru doğrudan pile bağlayın. Dönüyorsa motor sağlam.
  • Hiçbir şey çalışmıyor mu? Blink örneğini yükleyin. LED yanıp sönüyorsa kart ve USB sağlam.

Beş dakikada çözülen klasikler

Belirtiİlk bakılacak yer
Kod yüklenmiyorDoğru kart/port seçili mi, kablo veri taşıyor mu, pin 0/1’de modül var mı
Kart sürekli yeniden başlıyorAkım yetersiz — motor veya servo pinden besleniyor olabilir
Seri Monitör anlamsız karakterBaud hızı kodla eşleşmiyor (9600 / 115200)
Buton rastgele tetikleniyorPull-up direnç yok; INPUT_PULLUP kullanın
Sensör değerleri zıplıyorOrtak toprak yok, ya da motor gürültüsü sinyal hattına biniyor
Servo titriyorAyrı 5 V besleme yok
Kod bir yerde takılıyorBloklayan delay() veya sonsuz while
Saha notu

Devrenizi kurarken her adımda test edin. On parçayı birden bağlayıp sonunda “çalışmıyor” demek, on ayrı şüpheli bırakır. Tek tek eklerseniz, çalışmayı bozan parçayı eklediğiniz anda yakalarsınız.

Multimetreyle üç ölçüm

  1. Gerilim: Siyah probu GND’ye, kırmızıyı ölçmek istediğiniz noktaya. 5 V beklerken 3,2 V görüyorsanız besleme sorunu var.
  2. Süreklilik: Sesli mod. Kablonun iki ucuna dokunun; ötmüyorsa kablo kopuk. Breadboard sıralarını kontrol etmek için de kullanın.
  3. Direnç: Direncin gerçekten düşündüğünüz değerde olduğunu doğrular. Renk kodu okumak yanıltıcı olabilir.

Kodunuzu büyütmeye hazırlamak

İlk ay bittiğinde kodunuz tek bir uzun loop() olacak. Projeler büyüdükçe bu yapı çöker. İki alışkanlık bunu önler.

İşleri fonksiyonlara ayırın

void loop() {
  sensorleriOku();
  kararVer();
  motorlariSur();
  durumuBildir();
}

Bu dört satır, iki yüz satırlık bir loop()’tan çok daha kolay okunur ve hata ayıklanır. Bir şey bozulduğunda hangi fonksiyona bakacağınızı bilirsiniz.

Sabitleri tek yerde toplayın

// Pin tanimlari
const uint8_t SOL_MOTOR_PWM  = 5;
const uint8_t SAG_MOTOR_PWM  = 6;
const uint8_t MESAFE_TRIG    = 9;
const uint8_t MESAFE_ECHO    = 10;

// Ayarlar
const int  TABAN_HIZ    = 150;
const int  ENGEL_MESAFE = 25;   // cm
const bool HATA_AYIKLA  = true;

Bir pini değiştirdiğinizde kodun içinde arama yapmak yerine tek satırı düzenlersiniz. HATA_AYIKLA gibi bir bayrak da seri çıktıyı tek yerden açıp kapatmanızı sağlar:

if (HATA_AYIKLA) { Serial.println(mesafe); }

Sonraki adım nereye

30 gün sonunda temel yapıtaşları elinizde olacak. Bundan sonra iki yön var:

  • Derinleşmek: Kesmeler (interrupt), zamanlayıcılar, I2C ve SPI haberleşme, güç yönetimi.
  • Genişlemek: Wi-Fi ve Bluetooth için ESP32’ye geçiş, görüntü işleme için Raspberry Pi.

Robotik tarafına yönelmek isterseniz doğal sıralama şu: önce çizgi izleyen robot ile kontrol mantığını, sonra mini sumo ile mekanik ve strateji tarafını öğrenin. İkisi birlikte, robotik yarışmalarında ihtiyacınız olan becerilerin neredeyse tamamını kapsıyor.

Sıkça Sorulan Sorular

Arduino öğrenmek için programlama bilmek şart mı?

Hayır. Arduino dili C++ tabanlıdır ama başlamak için sadece birkaç kavram yeterli: değişken, koşul (if), döngü (for) ve fonksiyon. Bunları zaten ilk hafta içinde devre kurarak öğreniyorsunuz. Önce teoriyi bitirip sonra başlamaya çalışmak en yaygın motivasyon kırıcıdır.

Hangi Arduino kartını almalıyım?

Başlangıç için Arduino Uno R3 (veya uyumlu bir klon) en doğru seçim: en çok örnek, en çok kütüphane, en dayanıklı yapı. Yer sıkıntısı olan projelerde Nano, Wi-Fi gerektiren projelerde ise ESP32 tercih edin.

Orijinal Arduino mu klon mu almalıyım?

Öğrenme aşamasında klon kartlar tamamen yeterli ve çok daha ucuz. Tek dikkat edilecek nokta, CH340 USB çipli klonlarda sürücü kurulumunun gerekebilmesi. Orijinal kart, daha iyi gerilim regülatörü ve garanti isteyen kalıcı projelerde anlamlı.

Arduino ile neler yapılabilir?

Sensör okuma ve veri kaydı, motor ve ışık kontrolü, robotlar, otomasyon sistemleri, ölçüm cihazları, oyun kumandaları. Sınır genelde hesaplama gücü: video işleme veya ağır algoritmalar için Raspberry Pi gibi bir kart gerekir.

Arduino kodu neden karta yüklenmiyor?

Sırayla kontrol edin: doğru kart ve doğru port seçili mi, USB kablosu veri aktarıyor mu (bazı kablolar yalnızca şarj eder), Seri Monitör başka bir programda açık mı, ve pin 0/1’e bağlı bir modül var mı. Bu dört madde yükleme sorunlarının büyük kısmını çözer.

Yorumlar

0

Henüz yorum yok. İlk yorumu sen yaz!

Yorum Yaz

E-posta adresiniz yayınlanmaz, sadece site sahibi görebilir.