Bir cümlelik özet
Arduino, üzerine kod yükleyerek LED, sensör, motor ve düğme gibi parçaları kontrol edebildiğimiz açık kaynaklı bir mikrodenetleyici kartıdır.
Neden önemli?
Bir önceki derste bisiklet güvenlik ışığını kablolar ve dirençlerle kurmuştuk. Devre çalışıyordu ama davranışı sabitti: ışık ya yanıyor ya sönüyordu. Peki karanlık olunca kendiliğinden yanmasını, ya da düğmeye basınca yanıp sönmesini isteseydik?
İşte burada mikrodenetleyici devreye giriyor. Mikrodenetleyici, tek bir çip üzerinde küçük bir bilgisayardır: girişleri okur, karar verir ve çıkışları kontrol eder. Arduino, bu çipi kolayca programlanabilir bir karta yerleştirir.
Arduino'yu öğrenmek önemlidir çünkü yazdığın kod ile fiziksel dünya arasındaki köprüyü kurar. Python'da ekrana "Merhaba" yazdırıyordun; Arduino ile gerçek bir LED'i yakabilir, bir sıcaklık sensörünü okuyabilir veya bir kapıyı açan motoru sürebilirsin. Yazılım ile elektroniğin buluştuğu yer buradır.
Kısa tanım: Arduino, giriş ve çıkışları koda göre yöneten, açık kaynaklı ve başlangıç için tasarlanmış bir mikrodenetleyici geliştirme kartıdır.
Mikrodenetleyici kartı olarak Arduino
Kart ne yapar?
Arduino kartının üzerinde bir işlemci çipi, bağlantı için sıralanmış pinler ve bilgisayara bağlanan bir USB girişi bulunur. Kod yazıp bu pinlere görev veririz.
Pinler iki temel işi görür:
- Giriş (input): Dış dünyadan bilgi okur. Örneğin bir düğmeye basılıp basılmadığını veya bir sensörün değerini.
- Çıkış (output): Dış dünyaya sinyal gönderir. Örneğin bir LED'i yakmak veya bir motoru döndürmek.
Pinler ayrıca iki türde çalışır. Dijital pinler yalnız iki durumu anlar: açık (HIGH) veya kapalı (LOW). Analog pinler ise bir aralıktaki değeri okur; örneğin bir ışık sensörünün 0 ile 1023 arasındaki değerini.
Günlük hayattan örnek: Otomatik gece lambası
Bir çocuğun odasındaki gece lambasını düşün. İçinde küçük bir kart, bir ışık sensörü ve bir LED var. Oda kararınca sensörün değeri düşer, kart bunu okur ve LED'i yakar. Sabah ışık artınca lamba sönür. Bu tam olarak bir mikrodenetleyicinin yaptığı iştir: oku, karar ver, uygula.
Günlük hayattan örnek: Çamaşır makinesi
Çamaşır makinesindeki program düğmesini çevirdiğinde, içindeki mikrodenetleyici suyu ne kadar ısıtacağını, tamburu ne zaman döndüreceğini ve ne zaman duracağını koda göre yönetir. Arduino bunun öğrenmeye uygun, açık ve küçük bir versiyonudur.
Arduino ile micro:bit farkı
micro:bit dersinden mikrodenetleyici fikrini zaten tanıyorsun. Arduino da aynı temel fikri kullanır ama bazı önemli farkları vardır.
| Özellik | micro:bit | Arduino Uno |
|---|---|---|
| Ekran | Üzerinde 5x5 LED var | Ekran yok, harici parça eklenir |
| Sensör | Dahili (ivme, sıcaklık, pusula) | Genelde harici bağlanır |
| Bağlantı | Krokodil kablo ile kolay | Genelde breadboard ve kablolar |
| Programlama | Blok veya Python | C/C++ (Arduino dili) |
| Esneklik | Hızlı başlangıç | Daha fazla pin ve kontrol |
micro:bit hızlı denemeler için hazır bir kutu gibidir; birçok parça içine yerleştirilmiştir. Arduino ise daha çıplaktır: parçaları sen bağlarsın. Bu ilk bakışta zor görünse de sana devrenin nasıl çalıştığını gerçekten öğretir ve daha büyük projelere izin verir.
Açık kaynak olması da önemlidir: Arduino'nun tasarımı ve yazılımı herkese açıktır. Bu yüzden dünyada binlerce uyumlu kart, örnek proje ve ücretsiz kaynak vardır.
Kart, IDE ve kod döngüsü
Kodu nasıl yazarız?
Arduino kartına kodu bir bilgisayar programıyla yazıp yükleriz. Bu programa Arduino IDE denir (IDE, "Integrated Development Environment", yani tümleşik geliştirme ortamı demektir). IDE'de kod yazarız, bilgisayara USB ile bağlı karta yükleriz ve kart o kodu tekrar tekrar çalıştırır.
Her Arduino programı (buna eskiz ya da İngilizcesiyle *sketch* denir) iki temel bölümden oluşur:
void setup() {
// Bir kez çalışır: başlangıç ayarları
}
void loop() {
// Sürekli tekrar eder: asıl davranış
}
setup() bölümü kart açıldığında bir kez çalışır. Burada pinlerin giriş mi çıkış mı olduğunu belirleriz. loop() bölümü ise durmadan tekrarlanır; asıl davranış buradadır.
İlk gerçek örnek: LED yakıp söndürme
Karttaki 13 numaralı pine bir LED bağladığımızı düşün (LED'i korumak için mutlaka bir dirençle). Aşağıdaki eskiz LED'i bir saniye yakıp bir saniye söndürür:
void setup() {
pinMode(13, OUTPUT); // 13. pini cikis yap
}
void loop() {
digitalWrite(13, HIGH); // LED'i yak
delay(1000); // 1000 ms bekle
digitalWrite(13, LOW); // LED'i sondur
delay(1000); // 1000 ms bekle
}
Buradaki mantık, algoritma dersindeki tekrar yapısının aynısıdır: aynı adımlar sonsuza kadar döner. delay(1000) bin milisaniye, yani bir saniye bekler.
Bilgisayarla konuşmak: Serial
Kartın ne yaptığını görmek için bilgisayara mesaj gönderebiliriz. Buna seri iletişim denir. Bir düğmenin durumunu okuyup ekrana yazdıralım (düğme 2. pine, aşağı çekme direnciyle bağlı):
void setup() {
Serial.begin(9600); // Iletisimi baslat
pinMode(2, INPUT); // 2. pini giris yap
}
void loop() {
int durum = digitalRead(2); // Dugmeyi oku
Serial.println(durum); // Ekrana yaz
delay(200);
}
Serial.begin(9600) iletişimi başlatır, Serial.println() ise değeri IDE'deki Seri Monitör penceresine yazar. Bu, Arduino'da hata ayıklamanın en kullanışlı yollarından biridir.
Mini uygulama
Henüz kart olmadan, kâğıt üzerinde bir eskizin adımlarını planla. Amaç: Bir düğmeye basıldığında LED yansın, bırakıldığında sönsün.
Şu soruları yanıtla:
- Hangi pin giriş, hangi pin çıkış olmalı?
setup()içinde neyi ayarlarsın? loop()içinde önce ne okumalısın?- Okuduğun değere göre LED'i açıp kapatmak için hangi koşulu kullanırsın?
Kod olmadan sözde kodla yazabilirsin:
setup: 2. pin giris, 13. pin cikis
loop:
dugmeyi oku
eger dugme basiliysa
LED'i yak
degilse
LED'i sondur
Fikrini oluşturduğunda, bunu bir sonraki derste gerçek Arduino koduna çevireceğiz.
Sık yapılan hatalar
pinMode'u unutmak
setup() içinde bir pini OUTPUT olarak ayarlamayı unutursan digitalWrite beklediğin gibi çalışmayabilir. Her pinin görevini başta belirle.
Direnç kullanmadan LED bağlamak
LED'i doğrudan pine bağlarsan üzerinden çok akım geçer ve LED zarar görebilir. LED ile birlikte her zaman bir akım sınırlama direnci kullan (genellikle 220 veya 330 ohm).
Noktalı virgülü unutmak
Arduino dilinde her komut satırı ; ile biter. Unutursan IDE hata verir ve kodu yükleyemezsin. Bu çok sık yapılan bir hatadır.
setup ile loop'u karıştırmak
Bir kez yapılması gereken ayarları loop() içine koyarsan gereksiz yere tekrar ederler. Tekrar etmesi gereken davranışı setup() içine koyarsan hiç tekrar etmez.
Güvenlik notu
- Arduino başlangıç projeleri yalnız düşük gerilimle çalışır: USB (5V) veya uygun bir pil paketi yeterlidir. Asla şebeke elektriğine (prize doğrudan) bağlamaya çalışma.
- LED ve benzeri parçalarda her zaman akım sınırlama direnci kullan; aksi halde parça ısınabilir veya bozulabilir.
- Motorları asla doğrudan Arduino pinlerinden sürme. Motorlar çok akım çeker ve kartı bozabilir. Motorlar için bir motor sürücü (motor driver) ve ayrı bir güç kaynağı gerekir; motoru düşük hızda çalıştırmaya başla.
- Su pompası gibi projelerde suyu elektronik parçalardan uzak tut.
- Bağlantıları kartın gücü kapalıyken yap ve ilk denemeleri bir yetişkinle birlikte gerçekleştir.
Ders özeti
- Arduino, kod ile fiziksel parçaları kontrol etmemizi sağlayan açık kaynaklı bir mikrodenetleyici kartıdır.
- Pinler giriş veya çıkış olur; dijital pinler HIGH/LOW, analog pinler bir aralıktaki değeri okur.
- Arduino, micro:bit'e göre daha çıplaktır ama daha fazla pin, kontrol ve esneklik sunar.
- Kodu Arduino IDE ile yazarız; her eskiz bir kez çalışan
setup()ve sürekli tekrar edenloop()bölümünden oluşur. - Başlangıç projeleri düşük gerilimle çalışır; motorlar sürücü ve ayrı güç ister, LED'ler direnç ister.
Kontrol soruları
- Arduino kartındaki bir pinin "giriş" ve "çıkış" olması ne anlama gelir?
setup()veloop()bölümleri arasındaki temel fark nedir?- Dijital bir pin ile analog bir pin arasındaki fark nedir?
- Bir LED'i Arduino'ya bağlarken neden direnç kullanırız?
- Neden bir motoru doğrudan Arduino pininden sürmemeliyiz?
Cevaplar
- Giriş, pinin dış dünyadan bilgi okuması (örneğin düğme veya sensör); çıkış, pinin dış dünyaya sinyal göndermesidir (örneğin LED yakmak).
setup()kart açıldığında yalnız bir kez çalışır ve başlangıç ayarlarını içerir;loop()ise durmadan tekrarlanır ve asıl davranışı barındırır.- Dijital pin yalnız iki durumu anlar: açık (HIGH) veya kapalı (LOW). Analog pin ise bir aralıktaki değeri okur (örneğin 0–1023), bu yüzden ışık veya sıcaklık gibi kademeli değerleri ölçebilir.
- Direnç, LED üzerinden geçen akımı sınırlar. Direnç olmadan çok akım geçer ve LED zarar görebilir.
- Motorlar çok akım çeker; bu akım kartın pinine zarar verir. Bu yüzden bir motor sürücü ve ayrı güç kaynağı gerekir.
Kaynak ve doğrulama notu
“Arduino Nedir?” dersi için doğrulama odağı Mikrodenetleyici kartı olarak Arduino ile Günlük hayattan örnek: Otomatik gece lambası 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
Kartlar ve Temel Bileşenler: Arduino Uno üzerindeki pinleri, breadboard'u ve ilk projelerde kullanacağın temel elektronik parçaları yakından tanıyoruz.