Bu çalışma materyali, bir dersin ses kaydı dökümü ve kopyalanmış metin kaynaklarından derlenmiştir.
Arduino ile Temel Elektronik ve Programlama Uygulamaları 🚀
Bu çalışma materyali, Arduino platformuyla temel elektronik ve programlama uygulamalarına kapsamlı bir giriş sunmaktadır. Arduino, fiziksel dünya ile etkileşimli projeler geliştirmek için tasarlanmış, açık kaynaklı bir mikrodenetleyici platformudur. Elektronik ve programlamaya giriş niteliğindeki uygulamalardan, karmaşık sistemlerin prototiplenmesine kadar geniş bir kullanım alanına sahiptir. Bu materyalde, Arduino'nun temel bileşenleri, elektronik devre prensipleri, farklı giriş ve çıkış elemanlarının programlama yoluyla nasıl kontrol edildiği ve bu elemanlarla gerçekleştirilen pratik uygulamalar detaylı bir şekilde incelenecektir.
1. Arduino'ya Giriş ve Temel Kavramlar 💡
1.1. LED Yakıp Söndürme: Arduino'nun "Merhaba Dünya"sı ✨
Arduino ile elektronik projelere başlangıç, genellikle bir LED'i yakıp söndürme uygulamasıyla yapılır. Bu uygulama, Arduino'nun "Merhaba Dünya"sı olarak kabul edilir.
1.1.1. Malzeme Listesi 🛠️
- Arduino Uno
- 1 Adet LED Diyot
- 1 Adet 220 Ω (veya 330 Ω) Direnç
- Breadboard
- Yeterli sayıda jumper kablo
1.1.2. LED Nedir? 📚
LED, Light Emitting Diode (Işık Yayan Diyot) kelimelerinin baş harflerinden oluşan bir kısaltmadır.
- LED'lerin anot (pozitif, +) ve katot (negatif, -) olmak üzere iki farklı bacağı vardır.
- Anot, pozitif gerilime (+ uca), katot ise negatif gerilime (- uca) veya toprak hattına (GND) bağlanmalıdır.
1.1.3. Gerilim, Akım ve Ohm Yasası 📊
- Arduino kartı 5V gerilimle çalışır.
- LED'in üzerinden geçecek maksimum akımın 20 mA (miliamper) değerini geçmemesi gereklidir.
- LED'i doğrudan Arduino'ya bağlamak, aşırı akım nedeniyle LED'e veya Arduino kartına kalıcı hasar verebilir.
- Bu riski ortadan kaldırmak için, LED'e seri olarak bir akım sınırlayıcı direnç bağlanması zorunludur.
- Ohm Kanunu: V (Gerilim) = i (Akım) x R (Direnç)
- Örnek: 5V gerilim ve 0.020A (20mA) akım için direnç değeri: 5V = 0.020A x R ➡️ R = 250 Ω.
- Bu nedenle, 220 Ω veya 330 Ω gibi yakın değerdeki dirençler kullanılabilir.
1.1.4. Devre Kurulumu 🔌
- LED'in kısa bacağını (-) Arduino üzerindeki GND (Toprak) pinine bağlayın.
- LED'in uzun bacağını (+) ise 250 ohm'luk direnç ile Arduino'nun dijital giriş/çıkış pinlerinden birine (örneğin 9 numaralı pine) bağlayın.
- ⚠️ UYARI: LED bir diyot olduğu için + (anot) ve – (katot) bacaklarını doğru bağladığınızdan emin olun.
2. Arduino Programlama Ortamları ve Temel Komutlar 💻
Arduino projeleri için mBlock gibi blok tabanlı görsel programlama ortamları veya C++ tabanlı Arduino IDE kullanılabilir.
2.1. mBlock ile Kodlama 🧱
mBlock, blokları sürükle-bırak yöntemiyle kod oluşturmayı sağlayan görsel bir programlama aracıdır.
- Olay Başlatıcı Bloğu: Arduino güç aldıktan sonra kodların yürütülmesini sağlar.
- Sürekli Çalışma Bloğu: Arasına eklenen blokları Arduino veya program durdurulana kadar çalıştırır.
- Dijital Pin Bloğu: X numaralı dijital pine güç (YÜKSEK-HIGH) verilmesini veya verilmemesini (DÜŞÜK-LOW) sağlar.
- Bekleme Bloğu: Bir önceki bloktaki kodların belirli bir süre (X saniye) devam etmesini sağlar.
2.1.1. mBlock ile Kod Yükleme Adımları 1️⃣2️⃣3️⃣
- "Bağlan" menüsü > Seri Port (USB Girişi) > COMx (uygun portu seçin).
- "Kartlar" menüsü > Arduino UNO. (İlk yüklemede yapılır, sonraki yüklemelerde gerekmez.)
- "Düzenle" menüsü > Arduino Kipi.
- Açılan pencereden "Arduino'ya Yükle" butonuna tıklayın.
2.2. Arduino IDE ile Kodlama ✍️
Arduino IDE, C++ tabanlı bir programlama ortamıdır.
void setup() {
pinMode(9, OUTPUT); // 9 nolu pine çıkış görevi verdik.
}
void loop() {
digitalWrite(9, HIGH); // 9 nolu pine enerji (sinyal) ver. (HIGH-YÜKSEK-1)
delay(1000); // 1000 milisaniye bekle. (1 saniye)
digitalWrite(9, LOW); // 9 nolu pine enerji (sinyal) verme. (LOW-DÜŞÜK-0)
delay(1000); // 1000 milisaniye bekle. (1 saniye)
}
2.2.1. Temel Kodlama Komutları ✅
void setup() { ... }: Arduino çalıştığı anda yüklenmesi gereken ayar ve kurulum kodları buraya yazılır.pinMode(pin, görev);: Kartın üzerindeki bir pinin hangi görevde çalışacağını belirler.INPUT(Giriş) veyaOUTPUT(Çıkış).void loop() { ... }: Projenin çalışması için gerekli olan kodların sürekli tekrarlandığı alandır.digitalWrite(pin, değer);: Herhangi bir dijital pine çıkış vermesi için kullanılır.HIGH(YÜKSEK-1) veyaLOW(DÜŞÜK-0).- 💡
HIGHdeğeri 5V elektrik çıkışı,LOWdeğeri elektrik çıkışının kesilmesi anlamına gelir.
- 💡
delay(milisaniye);: Parantez içine yazılan sayı değeri kadar milisaniye programı bekletir (1000 milisaniye = 1 saniye).//: Açıklama satırı için kullanılır./* ... */ise birden fazla satırlık açıklama için kullanılır.
2.2.2. Arduino IDE ile Kod Yükleme Adımları 1️⃣2️⃣3️⃣
- "Araçlar" menüsü > Kart > Arduino UNO.
- "Araçlar" menüsü > Port > COMx (uygun portu seçin).
- Arduino IDE penceresindeki yükle butonuna tıklayın.
3. Giriş/Çıkış Elemanları ve Kontrol Mekanizmaları ⚙️
Arduino projelerinde çevresel etkileşim için çeşitli giriş ve çıkış elemanları kullanılır.
3.1. Butonlar ve Buzzer 🔔
- Butonlar: Dijital giriş elemanları olarak bir olayı başlatma, duraklatma veya durdurma gibi işlevler için kullanılır.
- Buzzer: İşitsel bir uyarıcıdır. Akım aldığında içindeki metal plakanın titreşimi sonucunda ses (bip sesi) çıkarır. Buzzer'ın da LED gibi + ve - bacakları vardır.
3.1.1. Pull-Down ve Pull-Up Dirençleri 📚
Butonların devreye bağlanmasında iki temel konfigürasyon vardır:
- Pull-Down Direnci: Butonun bir ayağı +5V'a bağlanır. Diğer ayağı ise bir direnç (~10K ohm) ile toprağa (GND) bağlanır ve sinyal pini bu direnç ile buton arasına alınır. Butona basıldığında sinyal pini HIGH (1) okur, basılmadığında ise direnç sayesinde LOW (0) okur.
- Pull-Up Direnci: Pull-Down'ın tam tersidir. Butonun bir ayağı GND'ye bağlanır. Diğer ayağı ise bir direnç (~10K ohm) ile +5V'a bağlanır ve sinyal pini bu direnç ile buton arasına alınır. Butona basılmadığında sinyal pini HIGH (1) okur, basıldığında ise LOW (0) okur.
- 💡 İPUCU: Pull-Down devreyi Pull-Up'a çevirmek için +5V ve GND'ye gelen kabloların yerini değiştirmek yeterlidir.
3.1.2. Koşul Durumları: if-else ✅
Giriş elemanlarından gelen sinyaller, programlama dilindeki if-else gibi koşul durumları kullanılarak işlenir.
if (koşul) {
// Koşul sağlanırsa yapılacaklar
} else if (başka_koşul) {
// Önceki koşul sağlanmaz, bu koşul sağlanırsa yapılacaklar
} else {
// Hiçbir koşul sağlanmazsa yapılacaklar
}
- İlişkisel Operatörler:
==(Eşit),!=(Eşit Değil),>=(Büyük Eşit),<=(Küçük Eşit),>(Büyük),<(Küçük). int degisken_adi = değişken_değeri;: Değişken tanımlama ve değer atama işlemi.inttamsayı anlamına gelir.
3.2. RGB LED Uygulaması 🌈
3.2.1. RGB LED Nedir? 📚
RGB LED, Red (Kırmızı), Green (Yeşil) ve Blue (Mavi) olmak üzere 3 ana rengi ve bu renklerin birleşiminden oluşan ara renkleri görüntüleyebilen bir LED çeşididir. Genellikle 4 bacaklıdır.
3.2.2. PWM Pinleri ve analogWrite() 📈
- RGB LED'in R, G ve B bacakları, Arduino üzerindeki PWM (~ işareti ile belirtilen) pinlerinden herhangi birine bağlanmalıdır (örn. 3, 5, 6, 9, 10, 11).
- PWM pinleri, sadece HIGH/LOW değil, 0-255 arasında ara değerler verilerek renk yoğunluğunun ayarlanmasını sağlar.
analogWrite(pin, değer);: PWM pinlerine 0-255 arasında analog değer göndererek çıkış gücünü ayarlar.- RGB LED'ler ortak anot veya ortak katot yapısına sahip olabilir. En uzun bacak genellikle ortak bacaktır. Ortak katot ise GND'ye, ortak anot ise 5V'a bağlanır.
3.3. Potansiyometre ile LED Kontrolü 🎛️
3.3.1. Potansiyometre Nedir? 📚
Potansiyometre (ayarlı direnç), elektronik devrelerde analog olarak herhangi bir elemanın belli değerler arasında ayarlanması gerekiyorsa kullanılır (örn. ses seviyesi, lamba parlaklığı).
3.3.2. Analog Pinler 📊
- Arduino kartında "Analog Input" kısmı (A0-A5) bulunur.
- Bu pinler, dijitalden analoğa dönüşüm yaparak voltaj okumayı mümkün kılar.
- Potansiyometre, analog pinler üzerinden 0-1023 arasında değişen değerler okuyarak analog ayarlamalar için kullanılır.
- Potansiyometrenin orta bacağı analog giriş pinine (örn. A0), diğer iki bacağı ise 5V ve GND'ye bağlanır.
3.4. LDR (Foto Direnç) ile LED Uygulaması ☀️
3.4.1. LDR Nedir? 📚
LDR (Light Dependent Resistor - Işığa Bağımlı Direnç), ortamdaki ışık miktarını ölçen bir sensördür. Potansiyometreye benzer şekilde, analog pinler aracılığıyla ışık yoğunluğuna bağlı olarak direnç değeri değişen veri sağlar. Ortam karanlık olduğunda direnci artar, aydınlık olduğunda azalır.
3.5. PIR Hareket Sensörü ile LED Uygulaması 🚶♀️
3.5.1. PIR Sensörü Nedir? 📚
PIR (Passive Infrared Sensor - Pasif Kızılötesi Sensör), pasif kızılötesi teknolojisini kullanarak bir alandaki ısı farkından kaynaklanan hareketi algılar.
- Genellikle hırsız alarm sistemlerinde ve kameralarda kullanılır.
- Hareket algıladığında dijital pinler üzerinden 1 (HIGH) sinyali, hareket yoksa 0 (LOW) sinyali gönderir.
- PIR sensörünün 3 adet pin girişi vardır: VCC (+5V), GND ve Sinyal pini.
- Yaklaşık 3-5 metre arası etkilidir ve hareket algıladığında sinyal pinini yaklaşık 15 saniye HIGH konumunda tutar.
3.5.2. PIR ve Ultrasonik Sensör Farkı 🔄
- PIR Sensörü: Kızılötesini kullanarak ısı farkından hareketi algılar.
- Ultrasonik Sensör: Ultrasonik ses gönderip alma ile önünde engel olup olmadığını algılar.
4. Sonuç 🎉
Bu çalışma materyali, Arduino platformuyla temel elektronik ve programlama uygulamalarını kapsamlı bir şekilde ele almıştır. LED yakıp söndürme gibi basit uygulamalardan başlayarak, Ohm Kanunu gibi temel elektronik prensipleri, direnç kullanımının önemini ve LED'lerin doğru bağlantı şekillerini inceledik. Ardından, mBlock ve Arduino IDE gibi farklı programlama ortamlarında kod yazma becerilerini geliştirdik. Butonlar, buzzerlar, RGB LED'ler, potansiyometreler, LDR'ler ve PIR hareket sensörleri gibi çeşitli giriş ve çıkış elemanlarının Arduino ile nasıl entegre edildiğini ve programlama yoluyla nasıl kontrol edildiğini öğrendik. Özellikle PWM pinlerinin analog kontrol için, analog giriş pinlerinin ise sensörlerden sürekli veri okumak için kritik rolünü vurguladık. Bu uygulamalar, kullanıcıların elektronik bileşenleri tanıma, devre kurma ve programlama mantığını anlama konusunda sağlam bir temel oluşturmasını sağlamıştır. Arduino'nun sunduğu esneklik ve geniş sensör yelpazesi sayesinde, bu temel bilgilerle daha karmaşık ve yaratıcı projeler geliştirmek mümkündür.








