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ça | Adet | Neden gerekli |
|---|---|---|
| Arduino Uno R3 (klon olabilir) | 1 | Ana kart |
| Breadboard (830 delik) | 1 | Lehimsiz devre kurmak için |
| Jumper kablo seti (E-E, E-D, D-D) | 1 set | Her şeyi bağlamak için |
| Direnç seti (220Ω, 1kΩ, 10kΩ ağırlıklı) | 1 set | LED ve buton devreleri |
| LED (kırmızı, yeşil, sarı) | 10+ | Çıkış görselleştirme |
| Buton (tact switch) | 5 | Giriş okuma |
| Potansiyometre 10kΩ | 2 | Analog giriş öğrenmek |
| SG90 servo motor | 2 | İlk hareket |
| Multimetre | 1 | En kritik alet. Ölçemediğinizi tamir edemezsiniz. |
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,
pinModevedigitalWrite. - Gün 3–4: Birden fazla LED,
fordöngüsü ile sıralı yakma (koşan ışık). - Gün 5–6: Buton okuma,
digitalRead, pull-up direnç mantığı veINPUT_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:
analogWriteve PWM ile LED parlaklığı. PWM’in gerçek analog olmadığını anlamak. - Gün 12–13:
map()veconstrain()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.
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ı
| Kaynak | Güvenli sınır | Not |
|---|---|---|
| Tek dijital pin | 20 mA | Mutlak maksimum 40 mA, yaklaşmayın |
| Tüm pinler toplamı | 200 mA | Çipin toplam sınırı |
| 5V pini (USB ile) | ~500 mA | USB portu belirler |
| 5V pini (adaptör ile) | ~800 mA | Regülatör ısınır, 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.
| Fonksiyon | Ne yapar | Tipik kullanım |
|---|---|---|
pinMode(pin, mod) | Pini giriş ya da çıkış yapar | pinMode(13, OUTPUT) |
digitalWrite(pin, deger) | Pini 5 V veya 0 V yapar | LED, röle |
digitalRead(pin) | Pinin durumunu okur | Buton |
analogRead(pin) | 0–1023 arası değer okur | Potansiyometre, sensör |
analogWrite(pin, deger) | PWM üretir (0–255) | LED parlaklığı, motor hızı |
millis() | Açılıştan beri geçen ms | Bloklamayan zamanlama |
map(d, a1, a2, b1, b2) | Değeri aralıklar arası çevirir | 0–1023 → 0–255 |
constrain(d, alt, ust) | Değeri sınırlar | Motor hızını taşırmamak |
Serial.println(x) | Bilgisayara veri yazar | Hata ayıklama |
attachInterrupt(...) | Olay olunca fonksiyon çağırır | Encoder, 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
- Kod yazmadan önce şema çizmemek. Kafadaki devre ile breadboarddaki devre asla aynı olmaz. Kağıda çizin.
- Her şeyi aynı anda kurmak. Sensörü tek başına test edin, motoru tek başına test edin, sonra birleştirin.
- 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.
delay()bağımlılığı.delay()programı tamamen durdurur. Birden fazla iş yapan projelerdemillis()ile zamanlama öğrenin.- 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üklenmiyor | Doğ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ıyor | Akım yetersiz — motor veya servo pinden besleniyor olabilir |
| Seri Monitör anlamsız karakter | Baud hızı kodla eşleşmiyor (9600 / 115200) |
| Buton rastgele tetikleniyor | Pull-up direnç yok; INPUT_PULLUP kullanın |
| Sensör değerleri zıplıyor | Ortak toprak yok, ya da motor gürültüsü sinyal hattına biniyor |
| Servo titriyor | Ayrı 5 V besleme yok |
| Kod bir yerde takılıyor | Bloklayan delay() veya sonsuz while |
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
- 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.
- Süreklilik: Sesli mod. Kablonun iki ucuna dokunun; ötmüyorsa kablo kopuk. Breadboard sıralarını kontrol etmek için de kullanın.
- 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
0Henüz yorum yok. İlk yorumu sen yaz!