Ana Sayfa · Akademi · Robotik ve Kodlama · Arduino · Kütüphaneler

Kütüphaneler

#include ve Kütüphane Yöneticisiyle hazır kütüphaneleri güvenle kullanmayı öğren.

DERS PUSULASI

Bu sayfayı ne için kullanacaksın?

Ana fikir

Kütüphane, başkalarının yazıp hazır hale getirdiği kod parçalarını projene ekleyip zor işleri kısa komutlarla yapmanı sağlayan bir araçtır.

Üretilecek kanıt

Yukarıdaki Servo örneğini kendi projenle birleştir: Kütüphane Yöneticisi'ni açıp Servo 'nun kurulu olduğunu kontrol et (Arduino ile hazır gelir). Programı yükle ve servonun 0 ile 90 derece arasında gidip geldiğini gözlemle. write(90) satırını write(180) yap. Servo şimdi nereye gidiyor? delay(1000) değerlerini delay(300) yaparsan hareket nasıl değişir? İleri…

Kontrol tuzağı

#include satırını unutmak Kütüphanenin komutunu yazıp #include satırını eklemezsen Arduino "bu komutu tanımıyorum" der ve derleme hatası verir. Her kütüphane için üstteki #include satırı şarttır. Kütüphaneyi kurmadan çağırmak #include <NewPing.h> yazdın ama kütüphaneyi Kütüphane Yöneticisi'nden kurmadıysan Arduino…

Sonraki bağlantı

Kod Yapısını Fonksiyonlara Bölmek: Uzayan loop bloğunu, her biri tek bir işi yapan kendi fonksiyonlarına ayırarak kodu daha okunaklı hale getirmeyi öğreneceğiz.

Modül kaynakları: Python Tutorial · Arduino Learn

SeviyeBaşlangıç
Yaş10–16
Süre30–45 dk
Ön koşulMotor Sürücü
İçerikStandart ders · 1.451 kelime
Son güncelleme

Bir cümlelik özet

Kütüphane, başkalarının yazıp hazır hale getirdiği kod parçalarını projene ekleyip zor işleri kısa komutlarla yapmanı sağlayan bir araçtır.

Neden önemli?

Bir önceki derste motoru bir sürücü kartıyla çalıştırdık. Sürücünün pinlerini elle HIGH ve LOW yapmak işe yarıyordu ama biraz uzundu. Bir servo motoru veya mesafe sensörünü sıfırdan sürmek istersek işler daha da karışır: doğru zamanlamayı mikrosaniye hassasiyetiyle hesaplamak gerekir.

İyi haber şu: bu zor işleri daha önce birçok kişi çözmüş ve çözümlerini paylaşmış. Bu paylaşılan çözümlere kütüphane (library) denir. Kütüphane kullanınca hem daha az kod yazarsın hem de test edilmiş, güvenilir bir temel üzerine kurarsın. Bu yüzden gerçek projelerde neredeyse her zaman hazır kütüphanelerden yararlanırız.

Kütüphane nedir?

Adı tesadüf değil. Bir kütüphaneyi düşün: ihtiyacın olan bilgiyi baştan yazmazsın, rafta hazır bulunan kitabı alıp kullanırsın. Kod kütüphaneleri de aynı mantıkla çalışır.

Bir kütüphane, belirli bir işi yapan hazır fonksiyonların bir araya toplandığı koddur. Örneğin bir servo motoru döndürmek, bir ultrasonik sensörle mesafe ölçmek veya küçük bir ekrana yazı yazmak için kütüphaneler vardır.

Günlük hayattan iki örnek

Her iki örnekte de ortak fikir aynı: zor kısmı başkası bir kez çözmüş, sen sonucu kısa yoldan kullanıyorsun.

#include ile kütüphaneyi çağırmak

Bir kütüphaneyi kullanmadan önce Arduino'ya "bu hazır kodu da işime kat" demen gerekir. Bunu programın en üstünde #include satırıyla yaparız.

#include <Servo.h>   // Servo kütüphanesini projeye ekle

Köşeli parantez içindeki isim, kullanmak istediğin kütüphanenin dosya adıdır. Bu satır sayesinde kütüphanenin sunduğu tüm komutlara erişebilirsin. #include satırlarını her zaman void setup() ve void loop() bloklarından önce, dosyanın en üstüne yazarız.

Kütüphane Yöneticisiyle kurulum

Bazı kütüphaneler (örneğin Servo) Arduino ile birlikte hazır gelir. Ama NewPing gibi başkalarının yazdığı kütüphaneleri önce bilgisayarına kurman gerekir. Bunun için Arduino IDE içindeki Kütüphane Yöneticisi'ni (Library Manager) kullanırız.

  1. Arduino IDE'de Sketch → Include Library → Manage Libraries menüsünü aç.
  2. Arama kutusuna kütüphanenin adını yaz (örneğin NewPing).
  3. Doğru kütüphaneyi bulunca Install düğmesine bas.
  4. Kurulum bitince programının en üstüne #include satırını ekle.

Kütüphane Yöneticisi, kütüphaneleri güvenilir bir listeden indirir. Bu yüzden internette rastgele bir siteden dosya indirmek yerine mümkün olduğunca Kütüphane Yöneticisi'ni veya kütüphanenin resmi sayfasını kullan. Böylece hem doğru sürümü alırsın hem de bilinmeyen kaynaklardan gelen riskli kodlardan uzak durursun.

Kütüphaneyle daha kısa kod

Kütüphanelerin faydasını en iyi bir karşılaştırma gösterir. Bir servo motoru 90 dereceye götürmek istediğimizi düşünelim.

Kütüphanesiz yaklaşım

Servo, kaç dereceye döneceğini her 20 milisaniyede bir gönderilen darbelerden anlar. 90 derece için darbe uzunluğu yaklaşık 1500 mikrosaniyedir. Bunu elle yapmak şöyle görünür:

// 90 dereceyi elle sürmek: bu darbeyi sürekli tekrarlamak gerekir
digitalWrite(9, HIGH);
delayMicroseconds(1500);   // 90 derece için darbe uzunluğu
digitalWrite(9, LOW);
delay(20);                 // sonraki darbeye kadar bekle

Zamanlamayı azıcık şaşırırsak servo titrer veya yanlış açıya gider. Üstelik her açı için bu hesabı biz yapmak zorunda kalırız.

Servo kütüphanesiyle

Aynı işi kütüphaneyle çok daha okunaklı yazarız:

#include <Servo.h>

Servo kapiServo;          // bir servo nesnesi oluştur

void setup() {
  kapiServo.attach(9);    // servo sinyali pin 9'a bağlı
}

void loop() {
  kapiServo.write(0);     // 0 dereceye git
  delay(1000);
  kapiServo.write(90);    // 90 dereceye git
  delay(1000);
}

kapiServo.write(90) satırı, darbe hesabını bizim yerimize yapar. Biz sadece istediğimiz açıyı söyleriz. Kod hem kısaldı hem de çok daha anlaşılır oldu.

İkinci örnek: NewPing ile mesafe ölçmek

Ultrasonik sensörle mesafe ölçmek için de hazır bir kütüphane var. NewPing sayesinde sensörün trig ve echo sinyallerini elle yönetmek zorunda kalmayız.

#include <NewPing.h>

#define TRIG_PIN 12
#define ECHO_PIN 11
#define MAX_MESAFE 200    // ölçülecek en büyük mesafe (cm)

NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_MESAFE);

void setup() {
  Serial.begin(9600);
}

void loop() {
  int mesafe = sonar.ping_cm();   // mesafeyi santimetre olarak ölç
  Serial.print("Mesafe: ");
  Serial.print(mesafe);
  Serial.println(" cm");
  delay(500);
}

sonar.ping_cm() tek satırda ölçümü yapıp sonucu santimetre olarak verir. Aynı işi sıfırdan yazmak onlarca satır ve dikkatli zamanlama isterdi.

Mini uygulama

Yukarıdaki Servo örneğini kendi projenle birleştir:

  1. Kütüphane Yöneticisi'ni açıp Servo'nun kurulu olduğunu kontrol et (Arduino ile hazır gelir).
  2. Programı yükle ve servonun 0 ile 90 derece arasında gidip geldiğini gözlemle.
  3. write(90) satırını write(180) yap. Servo şimdi nereye gidiyor?
  4. delay(1000) değerlerini delay(300) yaparsan hareket nasıl değişir?
  5. İleri seviye: Bir servoyu, bir düğmeye basınca hareket edecek şekilde değiştirmeyi dene.

Her değişiklikten sonra sadece bir şeyi değiştir ve sonucu izle. Böyle küçük denemeler, kütüphanenin komutlarını gerçekten anlamanı sağlar.

Uygulama laboratuvarı: Kütüphaneler

Kütüphaneler konusunu kalıcı hâle getirmenin en iyi yolu, kavramı küçük ve ölçülebilir bir göreve dönüştürmektir. Bu çalışmada Kütüphane nedir? ile #include ile kütüphaneyi çağırmak arasındaki ilişkiyi kullanarak bağlantı şeması, derlenebilen Arduino kodu, seri monitör kaydı ve test sonucu hazırlayacaksın. Amaç yalnız sonucun çalışması değil; hangi kararı neden verdiğini, neyi test ettiğini ve hangi durumda tasarımı değiştireceğini açıklayabilmektir.

Görev senaryosu

Şu senaryoyu ele al: buton sıçramasını yazılımla azaltan kontrollü sayaç. Dersin ana hedefi “#include ve Kütüphane Yöneticisiyle hazır kütüphaneleri güvenle kullanmayı öğren” olduğuna göre önce problemi tek cümleyle tanımla. Ardından sistemin alacağı girdiyi, uygulayacağı işlemi ve üreteceği çıktıyı ayrı ayrı yaz. Bilmediğin bir ayrıntı varsa onu varsayım olarak işaretle; varsayımı gerçek bilgi gibi kullanma.

  1. Planla: Başlangıç durumunu, beklenen sonucu ve kullanacağın kavramları yaz.
  2. En küçük sürümü kur: Yalnız temel davranışı çalıştır; süsleme ve ek özellikleri sonraya bırak.
  3. Üç test hazırla: Normal bir durum, sınırda bir durum ve hatalı ya da beklenmeyen bir durum seç.
  4. Sonucu kaydet: Beklenen ile gerçekleşeni yan yana yaz; fark varsa olası nedeni belirt.
  5. Tek değişiklik yap: Aynı anda birçok şeyi değiştirmek yerine bir kararı düzeltip testi yeniden çalıştır.

Başarı ölçütleri

“Kütüphaneler” çalışmasını bitirdiğinde ürünü bir arkadaşına yalnız bölüm başlıklarıyla anlat. Arkadaşın buton sıçramasını yazılımla azaltan kontrollü sayaç senaryosundaki adımları ve karar nedenlerini takip edebiliyorsa anlatım yeterince açıktır. Anlaşılmayan noktayı daha fazla terim ekleyerek değil, Kütüphane nedir? ve #include ile kütüphaneyi çağırmak ilişkisini daha küçük adımlara bölerek düzelt.

Sık yapılan hatalar

#include satırını unutmak

Kütüphanenin komutunu yazıp #include satırını eklemezsen Arduino "bu komutu tanımıyorum" der ve derleme hatası verir. Her kütüphane için üstteki #include satırı şarttır.

Kütüphaneyi kurmadan çağırmak

#include <NewPing.h> yazdın ama kütüphaneyi Kütüphane Yöneticisi'nden kurmadıysan Arduino dosyayı bulamaz. Önce kur, sonra çağır.

Yanlış kütüphane adı yazmak

Kütüphane adları büyük-küçük harfe duyarlıdır. <servo.h> yerine <Servo.h> yazılır. Küçük bir harf hatası bile hataya yol açar.

Bilinmeyen kaynaklardan indirmek

İnternette rastgele bir siteden indirilen kütüphane hem yanlış çalışabilir hem de güvenli olmayabilir. Mümkün olduğunca Kütüphane Yöneticisi'ni veya kütüphanenin resmi sayfasını kullan.

Güvenlik notu

Ders özeti

Kontrol soruları

  1. Kütüphane nedir ve neden kullanırız?
  2. Bir kütüphaneyi programda kullanabilmek için hangi satırı, nereye yazarız?
  3. Servo ile NewPing kütüphanelerinin kurulumu arasındaki fark nedir?
  4. kapiServo.write(90) komutu bizim yerimize hangi zor işi yapar?
  5. Kütüphaneyi neden rastgele bir siteden değil de Kütüphane Yöneticisi'nden indirmeliyiz?

Cevaplar

  1. Kütüphane, belirli bir işi yapan hazır fonksiyonların toplandığı koddur. Zor işleri kısa komutlarla yapmamızı, daha az ve daha güvenilir kod yazmamızı sağlar.
  2. #include <KütüphaneAdı.h> satırını, programın en üstüne, setup ve loop bloklarından önce yazarız.
  3. Servo Arduino ile hazır gelir, ayrıca kurmak gerekmez. NewPing başkasının yazdığı bir kütüphanedir; kullanmadan önce Kütüphane Yöneticisi'nden kurulmalıdır.
  4. Servoyu 90 dereceye götürmek için gereken darbe zamanlamasını (yaklaşık 1500 mikrosaniyelik darbeleri) bizim yerimize hesaplar; biz sadece açıyı söyleriz.
  5. Kütüphane Yöneticisi kütüphaneleri güvenilir bir listeden indirir. Böylece hem doğru sürümü alırız hem de bilinmeyen kaynaklardan gelen hatalı veya riskli koddan uzak dururuz.

Kaynak ve doğrulama notu

“Kütüphaneler” dersi için doğrulama odağı Kütüphane nedir? ile #include ile kütüphaneyi çağırmak arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. Arduino uyumlu kartlarda pin, gerilim ve akım sınırları modele göre değişebilir. Kod derlense bile devre güvenli olmayabileceğinden, motor ve servo gibi yükler uygun sürücü ve harici besleme ile kullanılmalıdır.

Sonraki ders

Kod Yapısını Fonksiyonlara Bölmek: Uzayan loop bloğunu, her biri tek bir işi yapan kendi fonksiyonlarına ayırarak kodu daha okunaklı hale getirmeyi öğreneceğiz.

Quiz’i BaşlatArduino bölümüne dön
SORU HAVUZU

Bu dersi 10 soruyla pekiştir

Bu ders için 20 soruluk bir havuz hazırlandı. Her başlangıçta 10 soru ve seçenekler yeniden karıştırılır.