0% found this document useful (0 votes)
2 views7 pages

Arduino

Uploaded by

idilkaran
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views7 pages

Arduino

Uploaded by

idilkaran
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

Arduino Uno Kart Anatomisi ve Pin Fonksiyonları

Arduino Uno üzerinde toplam 14 dijital pin, 6 analog giriş pini ve bir dizi güç pini
bulunur. Kartın üzerindeki portları üç ana kategoride inceleyebiliriz.
ARDUINO UNO PIN HARİTASI
1. Güç Portları (Power Pins)
Kartın sol alt kısmında bulunan bu pinler, sensörleri beslemek veya karta dışarıdan
enerji vermek için kullanılır.
 5V Pini: Kartın regülatöründen çıkan sabit $5\text{V}$ pozitif (+) güç hattıdır.
Sensörlerin, ekranların ve mikrofon modüllerinin VCC bacakları buraya
bağlanır.
 3.3V Pini: Bazı özel sensörler ve kablosuz modüller (örneğin bazı Bluetooth
veya ekran modelleri) $3.3\text{V}$ ile çalışır. Onları beslemek için kullanılır.
 GND (Ground / Toprak): Devrenin eksi (-) kutbudur. Elektrik akımının devreyi
tamamlayıp geri döneceği yerdir. Altın Kural: Devredeki tüm bileşenlerin ortak
bir paydada buluşması için eksi bacakları her zaman Arduino'nun GND pinine
bağlanmalıdır. Kart üzerinde 3 adet GND pini bulunur ve hepsi içten birbirine
bağlıdır.
 Vin Pini: Arduino'ya bilgisayar (USB) dışında, harici bir pilden veya
adaptörden ($7\text{V} - 12\text{V}$ arası) güç vermek istediğinizde, kaynağın
artı (+) ucunu bağlayacağınız pindir.
2. Dijital Pinler (Digital Pins: D0 - D13)
Kartın üst kısmında dizili olan bu pinler sadece iki durumda çalışır: High ($5\text{V}
$) veya Low ($0\text{V}$). Sadece "Açık/Kapalı", "Var/Yok", "1/0" mantığıyla çalışan
elemanlar buraya takılır.
 Giriş (Input) Olarak: Butonlar, sensörlerin dijital çıkışları (örneğin ilk projedeki
ses sensörünün OUT pini) buraya bağlanır. Arduino bu pinde voltaj var mı ($5\
text{V}$) yok mu ($0\text{V}$) onu okur.
 Çıkış (Output) Olarak: LED'ler, röleler, buzzerlar buraya bağlanır. Arduino bu
pine enerji vererek LED'i yakar veya söndürür.
Özel Dijital Pinler:
 PWM Pinleri (~ İşaretli Olanlar - 3, 5, 6, 9, 10, 11): Normalde dijital pinler
sadece $0\text{V}$ veya $5\text{V}$ verebilirken, PWM (Pulse Width
Modulation) pinleri özel bir teknikle $0\text{V}$ ile $5\text{V}$ arasındaki ara
voltajları taklit edebilir. Servo motorların kontrol sinyalleri veya RGB LED'in
parlaklık/renk tonu ayarları (analog çıktı simülasyonu) kesinlikle bu pinlere
takılmalıdır.
 RX (D0) ve TX (D1): Seri haberleşme (donanımsal iletişim) pinleridir.
Bilgisayardan karta kod yüklenirken veya bilgisayarla veri alışverişi yapılırken
bu pinler kullanılır. Uyarı: Kod yüklerken bu pinlere bir şey bağlıysa yükleme
hatası alabilirsiniz.
 D2 ve D3 (Interrupt / Kesme Pinleri): İşlemcinin normal kod akışını anlık
olarak durdurup, acil bir dış olaya (örneğin bir butona basılması veya bir
sensör patlaması) anında tepki vermesini sağlayan özel donanımsal kesme
pinleridir.
3. Analog Giriş Pinleri (Analog Inputs: A0 - A5)
Kartın sağ alt kısmında bulunan bu pinler, sadece giriş (okuma) amaçlıdır. Dış
dünyadaki sürekli değişen fiziksel etkileri okurlar.
 LDR (Işık sensörü), potansiyometre, sıcaklık sensörü veya mikrofonun analog
çıkışı gibi, sabit olmayan ($0\text{V} - 5\text{V}$ arasında sürekli dalgalanan)
voltaj üreten sensörler buraya bağlanır.
 Arduino'nun içindeki ADC (Analogtan Dijitale Dönüştürücü) mekanizması, bu
pindeki voltajı saniyeler içinde $0$ ile $1023$ arasında bir sayıya çevirir.
o $0\text{V} \rightarrow 0$
o $2.5\text{V} \rightarrow 512$
o $5\text{V} \rightarrow 1023$
 A4 (SDA) ve A5 (SCL): Bu iki pin aynı zamanda I2C adı verilen özel bir
haberleşme protokolünü destekler. LCD ekranları sadece iki kabloyla
Arduino'ya bağlamak istediğimizde bu pinleri kullanırız.
Neler Nereye Takılır? (Özet Reçete)
Eğer Takacağınız ...İse Bağlanacağı
Örnek Bileşenler
Eleman... Yer

Sürekli değişen bir veri Analog Giriş (A0 - LDR, Analog Mikrofon,
üretiyorsa A5) Potansiyometre

Sadece "Açık/Kapalı" Standart Dijital Pin Push Buton, Dijital Ses


sinyali üretiyorsa (D2, D4, D7 vs.) Sensörü

Açısal hareket veya PWM Dijital Pin (~ 3, Servo Motor, RGB LED
parlaklık kontrolü istiyorsa 5, 6, 9, 10, 11) bacakları

Devreye enerji sağlamak Güç Pinleri (5V / Sensörlerin VCC / VDD


istiyorsa 3.3V) bacakları

Devrenin dönüş LED katotları, sensör


GND Portları
hattı/toprağı ise GND bacakları

Proje 1 Ders Kitabı Modülü: LDR (Işık Sensörü) ile


Otomatik RGB LED Kontrolü
Bu bölümde, ortamdaki ışık şiddetini algılayan ve karanlık olunduğunda bir aktüatörü
(RGB LED) tetikleyen Akıllı Gece Lambası sisteminin mühendislik temellerini, devre
mimarisini ve matematiksel arka planını inceleyeceğiz.
1. Teorik Altyapı ve Bileşen Analizi
A. LDR (Light Dependent Resistor) Nedir?
LDR, üzerine düşen ışık akısı ($\Phi$) miktarına bağlı olarak elektriksel direnci
değişen, kadmiyum sülfür (CdS) tabanlı bir yarı iletken sensördür. Işık fotonları LDR
yüzeyine çarptığında, yarı iletken malzemedeki valans elektronları iletim bandına
geçerek serbest kalır. Bu durum, malzemenin elektriksel iletkenliğini artırırken
direncini düşürür.
 Aydınlık Ortamda: Foton yoğunluğu yüksektir $\rightarrow$ Serbest taşıyıcı
sayısı artar $\rightarrow$ Direnç değeri minimuma düşer ($R_{LDR} \approx
100\ \Omega - 1\ k\Omega$).
 Karanlık Ortamda: Foton yoğunluğu sıfıra yaklaşır $\rightarrow$ Serbest
taşıyıcılar azalır $\rightarrow$ Direnç değeri maksimuma fırlar ($R_{LDR} \
approx 1\ M\Omega - 10\ M\Omega$).
B. Gerilim Bölücü (Voltage Divider) Ağ Mantığı
Mikrodenetleyiciler (Arduino Uno gibi) analog giriş pinlerinden doğrudan direnç
değerini okuyamazlar; yalnızca gerilim (voltaj) değişimlerini ($0 - 5\text{V}$
arası) dijital verilere dönüştürebilirler (ADC - Analog to Digital Converter). LDR'deki
direnç değişimini voltaj değişimine dönüştürmek için sistem bir Gerilim Bölücü
Devre mimarisine ihtiyaç duyar.
Devre, seri bağlı bir LDR ve sabit bir dirençten ($R_1$) oluşur. Çıkış voltajı ($V_{out}
$), iki direncin kesişim noktasından alınır. Formülü şu şekildedir:
$$V_{out} = V_{in} \times \left( \frac{R_1}{R_{LDR} + R_1} \right)$$
C. Neden 10k $\Omega$ Sabit Direnç Seçiyoruz?
Gerilim bölücü formülünde sabit direnç değerinin ($R_1$) seçimi, sensörün kararlılığı
ve hassasiyeti için kritiktir. LDR'nin oda koşullarındaki ortalama direnci genellikle $10\
k\Omega$ civarındadır. $R_1$ direncini de $10\ k\Omega$ seçtiğimizde, normal oda
ışığında voltaj tam yarıya bölünür:
$$V_{out} = 5\text{V} \times \left( \frac{10\ k\Omega}{10\ k\Omega + 10\ k\Omega} \
right) = 2.5\text{V}$$
Bu seçim, ADC'nin $0 - 5\text{V}$ ($0 - 1023$ birim) arasındaki ölçüm spektrumunu
en verimli ve doğrusal şekilde kullanmamızı sağlar. Eğer çok küçük (örn: $220\ \
Omega$) veya çok büyük (örn: $1\ M\Omega$) bir direnç seçilseydi, voltaj değişimi
çok dar bir aralığa sıkışır ve Arduino kararlı bir ölçüm yapamazdı.
D. RGB LED ve Akım Sınırlama Direnci Hesabı (Ohm Kanunu)
RGB LED; Kırmızı (Red), Yeşil (Green) ve Mavi (Blue) renk veren üç ayrı diyotun tek
bir kılıfta birleşimidir. Bizim kullandığımız Ortak Katot mimarisinde, tüm renklerin eksi
(-) kutupları birleşiktir ve toprağa (GND) bağlanır.
LED'ler üzerinden geçen akımı sınırlamazsak, yarı iletken yapı aşırı ısınır ve yanar.
İdeal akım sınırlama direnci Ohm Kanunu ($V = I \times R$) ile hesaplanır.
 Giriş Voltajı ($V_{in}$): Arduino Dijital Pini = $5\text{V}$
 LED İleri Yön Voltaj Düşümü ($V_f$): Kırmızı LED için yaklaşık $2.0\text{V}
$, Mavi/Yeşil için yaklaşık $3.2\text{V}$'tur.
 Hedef Akım ($I$): Standart 5mm LED'ler için güvenli akım $15\text{mA} - 20\
text{mA}$ ($0.015\text{A} - 0.02\text{A}$) arasıdır.
Mavi LED için hesaplama yapalım:
$$R = \frac{V_{in} - V_f}{I} = \frac{5\text{V} - 3.2\text{V}}{0.015\text{A}} = \frac{1.8\
text{V}}{0.015\text{A}} = 120\ \Omega\ (\text{Minimum Direnç})$$
Güvenlik payı ve LED ömrünü uzatmak amacıyla hobi elektroniğinde standart olarak
$220\ \Omega$ veya $330\ \Omega$ dirençler tercih edilir.
2. Devre Şeması ve Bağlantı Rehberi
Aşağıdaki bağlantı tablosunu takip ederek devrenizi kurunuz.
Bileşen
Bileşen Arduino Pini Açıklama / Mantık
Bacağı

LDR 1. Bacak 5V Sensör beslemesi

Voltaj bölücü çıkış


LDR 2. Bacak A0 ve Direnç Girişi noktası (Sinyal
hattı)
Bileşen
Bileşen Arduino Pini Açıklama / Mantık
Bacağı

10k $\Omega$ LDR 2. Bacak ile aynı Gerilim bölücü


1. Bacak
Direnç hat köprüsü

10k $\Omega$ Akımın toprağa


2. Bacak GND
Direnç akması için

En Uzun
RGB LED Bacak GND Ortak eksi hattı
(Katot)

Kırmızı (R) 220 $\Omega$ Direnç PWM özellikli dijital


RGB LED
Bacağı $\rightarrow$ D9 çıkış pini

Yeşil (G) 220 $\Omega$ Direnç PWM özellikli dijital


RGB LED
Bacağı $\rightarrow$ D10 çıkış pini

Mavi (B) 220 $\Omega$ Direnç PWM özellikli dijital


RGB LED
Bacağı $\rightarrow$ D11 çıkış pini
3. Algoritma ve Kaynak Kod Analizi
Sistem, analogRead() fonksiyonuyla $A0$ pinindeki voltajı $0 - 1023$ arasında
sayısal bir değere dönüştürür. Ortam karardığında direnç büyür, formül gereği
$V_{out}$ voltajı düşer ve okunan sayı azalır. Belirlenen esikDegeri altına inildiğinde
renk döngüsü (Mavi $\rightarrow$ Yeşil $\rightarrow$ Kırmızı) başlatılır.
#define LDR_PIN A0 #define RED_PIN 9 #define GREEN_PIN 10 #define
BLUE_PIN 11 // Karar mekanizması eşik değeri const int esikDegeri = 300; void
setup() { pinMode(RED_PIN, OUTPUT); pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT); [Link](9600); // Sistem kalibrasyonu için seri
iletişim hattı } // Güvenli durum: Tüm çıkışları sıfırlama fonksiyonu void
tumLedleriSondur() { digitalWrite(RED_PIN, LOW); digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW); } void loop() { int isikMiktari =
analogRead(LDR_PIN); // Hata ayıklama ve kalibrasyon çıktısı [Link]("Isik
Seviyesi: "); [Link](isikMiktari); if (isikMiktari < esikDegeri) { // Renk 1: Saf Mavi
Aktivasyonu tumLedleriSondur(); digitalWrite(BLUE_PIN, HIGH); delay(200); // İnsan
gözünün algılayabilmesi için 0.2 sn gecikme // Renk 2: Saf Yeşil Aktivasyonu
tumLedleriSondur(); digitalWrite(GREEN_PIN, HIGH); delay(200); // Renk 3: Saf
Kırmızı Aktivasyonu tumLedleriSondur(); digitalWrite(RED_PIN, HIGH); delay(200); }
else { // Karar: Ortam aydınlık, enerji tasarrufu modu tumLedleriSondur(); } }
C++
}
4. Laboratuvar Soruları ve Kalibrasyon
1. Soru: Seri port ekranında ortam aydınlıkken 700, elinizi kapattığınızda 450
görüyorsanız sistem çalışır mı? Nasıl düzeltilir?
o Cevap: Çalışmaz, çünkü esikDegeri 300 olarak ayarlanmıştır. Kod
içerisindeki esikDegeri değişkeni iki değerin ortalaması olan 575
değerine çekilerek kalibre edilmelidir.
2. Soru: tumLedleriSondur() fonksiyonunu kullanmazsak renk geçişlerinde ne
olur?
o Cevap: Önceki pin LOW yapılmadığı için renkler üst üste biner. Mavi ve
Yeşil aynı anda yandığında Turkuaz, üç renk birden yandığında ise
Beyaz ışık oluşur ve geçiş etkisi kaybolur.

Proje 2 Ders Kitabı Modülü: Gelişmiş Analog Sinyal


Analizi ile Ses Duyarlı (Alkış Kontrollü) Lamba
Bu bölümde, ortamdaki akustik dalgalanmaları elektriksel verilere dönüştüren
Mikrofon Sensör Modülünün analog çalışma prensibini, mikrodenetleyici tabanlı
akustik filtreleme mantığını ve konuşma sesini alkış sesinden ayıran matematiksel
algoritmaları inceleyeceğiz.
1. Teorik Altyapı ve Akustik Sinyal İşleme
A. Elektret Kapsül Mikrofon ve Modül Çalışma Prensibi
Elinizdeki modülün ucunda bulunan gümüş renkli silindirik bileşen bir Elektret
Kondansatör Mikrofondur (Electret Microphone). İçerisinde biri sabit, diğeri ses
dalgalarıyla titreşebilen çok ince iki adet plaka bulunur. Bu plakalar bir kapasitör
(kondansatör) oluşturur.
Ortamdaki ses dalgaları (hava basıncı değişimleri) hareketli plakaya çarptığında
plakalar arasındaki mesafe ($d$) sürekli olarak değişir. Kapasitans formülüne göre:
$$C = \varepsilon \times \frac{A}{d}$$
Mesafe ($d$) değiştikçe kapasitans ($C$) değeri de anlık olarak dalgalanır. Bu
dalgalanma, modül üzerindeki dahili yükselteç (op-amp) çipi tarafından işlenerek $0 -
5\text{V}$ arasında analog bir voltaj sinyaline dönüştürülür ve OUT pininden dışarı
aktarılır.
B. Neden Dijital Değil de Analog (A0) Pinini Kullandık?
 Dijital Çıkış Mantığı (DO): Modül üzerindeki potansiyometre (mavi vida) ile
mekanik bir eşik belirlenir. Ses bu eşiği geçtiği an kart üzerindeki entegre
Arduino'ya tek bir sinyal gönderir: "Ses var ($0\text{V}$)". Bu yaklaşım, sesin
desibelini veya karakterini analiz edemez; öksürme, konuşma veya kapı
gıcırtısı gibi her türlü yüksek seste tetiklenir.
 Analog Çıkış Mantığı (AO): Sinyali Arduino’nun A0 analog pinine
bağladığımızda, sesin mikrosaniyeler içindeki değişim grafiğini (genliğini ve
hızını) dijital verilere ($0 - 1023$) dönüştürerek işlemciye aktarırız. Bu sayede
yazılımsal filtreleme yapma şansımız doğar.
C. Akustik Karakteristik: Alkış vs. Konuşma (Sinyal Matematiği)
İnsan sesi ile el çırpma (alkış) sesinin fiziksel yapıları birbirinden tamamen farklıdır.
Geliştirdiğimiz ayırt edici algoritma bu iki temel farka dayanır:
1. Sinyal Yükselme Hızı (Transient / Akustik Şok): Alkış sesi, ortam sessizken
aniden patlayan ve çok dik bir açıyla tepe noktasına ulaşan bir şok dalgasıdır.
Konuşma sesi ise ses tellerinin titreşimiyle oluştuğu için daha yumuşak bir
eğriyle yükselir. Kodda kullandığımız abs(mevcutHacim - sonHacim)
matematiksel işlemi, iki milisaniye arasındaki türevi (değişim hızını) hesaplar.
Alkışta bu hız $150$ birimin üzerine çıkarken, konuşmada genellikle daha
düşüktür.
2. Sönümlenme Süresi (Decay Süresi): Bir alkış patlaması anlıktır; tepe
noktasına ulaştıktan hemen sonra ($5 - 15\text{ms}$ içinde) hızla sönümlenir
ve oda sessizliğine geri döner. Konuşma sesinde ise heceler ve harfler uzar,
ses genliği yüksek değerde kalmaya devam eder.
2. Devre Şeması ve Bağlantı Rehberi
Ses sensörünün analog modda çalışabilmesi için OUT pininin mutlaka analog giriş
portuna bağlanması gerekmektedir.
Bileşen
Bileşen Arduino Pini Açıklama / Mantık
Bacağı

Ses Sensör Op-amp ve mikrofon


VCC 5V
Modülü kapsülü beslemesi

Ses Sensör Devre ortak toprak


GND GND
Modülü hattı

Ses Sensör Anlık analog ses


OUT A0
Modülü voltajı çıktısı

En Uzun
RGB LED GND Ortak eksi kutbu
Bacak (Katot)

Kırmızı (R) 220 $\Omega$ Direnç Akım sınırlamalı renk


RGB LED
Bacağı $\rightarrow$ D9 kontrol hattı

Yeşil (G) 220 $\Omega$ Direnç Akım sınırlamalı renk


RGB LED
Bacağı $\rightarrow$ D10 kontrol hattı

Mavi (B) 220 $\Omega$ Direnç Akım sınırlamalı renk


RGB LED
Bacağı $\rightarrow$ D11 kontrol hattı
3. Algoritma ve Gelişmiş Kaynak Kod Analizi
Yazılan algoritma, donanımsal yetersizliği aşmak için zaman tabanlı çift aşamalı
doğrulama (Double-Check) yöntmini kullanır.
C++
#define SES_PIN A0
#define RED_PIN 9
#define GREEN_PIN 10
#define BLUE_PIN 11

bool lambaDurumu = false;


int sonHacimDegeri = 0;

// Kalibrasyon parametreleri (Veri analizine göre optimize edilmiştir)


const int alkisMinHacim = 975; // Genlik Şartı (Tavan Voltaj)
const int alkisEsikHizi = 150; // Türev Şartı (Sıçrama Hızı)

void setup() {
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
[Link](9600);
}

void ledGuncelle(bool durum) {


if (durum) {
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, HIGH); // Turkuaz Renk Aktivasyonu
} else {
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW); // Kapatma Modu
}
}

void loop() {
int mevcutHacim = analogRead(SES_PIN);
int sesSıçramaHizi = abs(mevcutHacim - sonHacimDegeri);

// Birinci Aşama: Şok dalgası ve mutlak tavan kontrolü


if (mevcutHacim > alkisMinHacim && sesSıçramaHizi > alkisEsikHizi) {

// İkinci Aşama: Sönümlenme (Decay) Zaman Filtresi


// 10 milisaniye beklenir. Bu süre alkışın bitmesi için yeterli,
// konuşmanın bitmesi için çok kısadır.
delay(10);
int kontrolHacmi = analogRead(SES_PIN);

// Eğer 10ms sonra ses seviyesi hızla düşmüşse (Alkış kanıtı)


if (kontrolHacmi < 500) {
[Link]("Filtre Onaylandi! Gercek Alkis Hacmi: ");
[Link](mevcutHacim);

lambaDurumu = !lambaDurumu; // Toggle (Durum Değişimi)


ledGuncelle(lambaDurumu);

delay(300); // Yankı ve ardışık tetiklenme engelleme kilit süresi


}
}

sonHacimDegeri = mevcutHacim;
delay(1); // Yüksek örnekleme frekansı için minimum döngü gecikmesi
}
4. Sinyal Mühendisliği ve Filtre Analiz Notları
 abs() Fonksiyonunun Rolü: Matematiksel mutlak değer işlemidir. Ses
dalgaları sinüzoidal (aşağı ve yukarı yönlü) hareket ettiği için, düşüş anındaki
ani değişimlerin de eksi sayı çıkmasını engeller ve hızı her zaman pozitif bir
tamsayı olarak doğrular.
 delay(10) Kritik Analizi: Eğer bu doğrulamayı kaldırırsak, yüksek sesle
konuşurken söylediğiniz kelimelerin vurgulu heceleri (örneğin sert bir "P" harfi)
sistemi yanıltarak lambayı tetikler. Bu 10ms'lik bekleme, konuşmanın devam
eden ses enerjisini yakalar ve ikinci if bloğunun (kontrolHacmi < 500)
çalışmasını engelleyerek hatalı tetiklenmenin önüne geçer.

You might also like