| Hafta / Süre | Ders Başlığı ve Kapsamı | Deney ve Uygulama Projesi |
|---|---|---|
| 1. Hafta (2 Saat) | Temel Elektrik (Voltaj, Akım, Direnç, Ohm Kanunu), Breadboard, Arduino Uno Pinleri, Dijital Çıkış (digitalWrite) |
LED Ön Direnci Hesabı, Blink ve Sıralı Trafik Işığı Kavşağı |
| 2. Hafta (2 Saat) | Dijital Giriş (digitalRead), Pull-Down / Pull-Up Direnci, if/else Karar Yapıları, Analog Okuma (ADC) ve PWM (analogWrite) |
Yaya Butonlu Geçit ve LDR + Potansiyometre ile Otomatik Gece Lambası |
| 3. Hafta (2 Saat) | Aktif Sensörler: HC-SR04 Ultrasonik Mesafe Sensörü (Ses Fiziği), pulseIn(), NTC Termistör ve Piezo Buzzer |
Sesli ve Kademeli LED İkazlı Akıllı Otomobil Park Radar Sistemi |
| 4. Hafta (2 Saat) | I2C Haberleşme Protokolü (SDA/SCL), 16x2 LCD Ekran Sürülmesi, Çoklu Sensör Entegrasyonu ve Hata Ayıklama (Bug Hunt) |
Bitirme Projesi: Dijital Ekranlı Akıllı Çevre ve Güvenlik İstasyonu |
Elektronik devreleri ezberlemeden kurabilmenin sırrı, elektriğin temel davranışını anlamaktır. Bir iletken kablo içindeki elektronların hareketini, bir su tesisatındaki suyun akışına benzetebiliriz:
Üzerinde yazı yazamayacak kadar küçük olan dirençlerin değeri, gövdelerindeki renkli halkalarla okunur. 4 bantlı bir dirençte ilk iki halka sayıyı, 3. halka çarpanı (eklenecek sıfır sayısını), 4. halka ise toleransı (Altın = $\pm\%5$) gösterir. Kodlamayı hatırlamak için: "Sokakta Kahve Kokusu Tatlı Sıcak Yemek Mutluluk Mevsimi Getirir Bize" (Siyah=0, Kahve=1, Kırmızı=2, Turuncu=3, Sarı=4, Yeşil=5, Mavi=6, Mor=7, Gri=8, Beyaz=9).
| Direnç Değeri | 1. ve 2. Bant | 3. Bant (Çarpan) | Kullanım Yeri |
|---|---|---|---|
| $220\,\Omega$ | Kırmızı (2) - Kırmızı (2) | Kahverengi ($\times 10^1$) | LED Koruma Direnci |
| $330\,\Omega$ | Turuncu (3) - Turuncu (3) | Kahverengi ($\times 10^1$) | LED Koruma Direnci |
| $1\,\text{k}\Omega$ ($1000\,\Omega$) | Kahve (1) - Siyah (0) | Kırmızı ($\times 10^2$) | Genel Akım Sınırlama |
| $10\,\text{k}\Omega$ ($10000\,\Omega$) | Kahve (1) - Siyah (0) | Turuncu ($\times 10^3$) | Buton Pull-Down & LDR |
A) Aşağıdaki ifadelerin başına Doğru ise ( D ), Yanlış ise ( Y ) yazınız:
B) Aşağıdaki cümlelerdeki boşlukları kutucuktaki uygun kavramlarla doldurunuz:
Kısa Devre | Anot (+) | Ohm (Ω) | Dikey | 10 kΩ
Arduino Uno R3, üzerinde ATmega328P mikrodenetleyicisi bulunan açık kaynaklı bir elektronik geliştirme kartıdır. Sensörlerden aldığı sinyalleri (ışık, mesafe, sıcaklık, buton) okuyup yazdığımız C++ programına göre kararlar verir ve LED, motor, ekran veya buzzer gibi eyleyicileri (aktüatörleri) kontrol eder.
5V ve 3.3V regüleli çıkış verir. GND (Ground) devrenin $0\text{V}$ ortak referans (eksi) hattıdır. VIN harici $7\text{--}12\text{V}$ adaptör/pil girişidir.INPUT) hem çıkış (OUTPUT) olarak kullanılır. Sadece iki durum üretir veya okur: HIGH ($5\text{V}$ / Mantıksal 1) ve LOW ($0\text{V}$ / Mantıksal 0).~3, ~5, ~6, ~9, ~10, ~11): Yanında dalga (~) işareti olan bu 6 pin, analogWrite() komutuyla $0\text{--}255$ arası darbe genişlik modülasyonu üreterek LED parlaklığı veya motor hızı ayarlayabilir.A0 – A5): $0\text{V}$ ile $5\text{V}$ arasındaki kesintisiz voltajları 10-bit çözünürlükle ($0\text{--}1023$ arası tam sayıya) çevirerek okur.
Her Arduino programı iki zorunlu fonksiyondan oluşur: void setup() kart enerjilendiğinde sadece 1 kez çalışır (pin modları ve seri port burada başlatılır). void loop() ise enerji kesilene kadar sonsuz döngüde tekrar eder. Unutmayın: C++ dilinde büyük/küçük harf duyarlılığı vardır (digitalWrite doğru, digitalwrite hatalıdır) ve her komut satırı ; ile biter!
// UYGULAMA 1: 3 LED'li Akıllı Trafik Işığı Kavşağı (Pin 10: Kırmızı, Pin 9: Sarı, Pin 8: Yeşil) void setup() { pinMode(10, OUTPUT); // 10. pini dijital ÇIKIŞ olarak ayarla pinMode(9, OUTPUT); // 9. pini dijital ÇIKIŞ olarak ayarla pinMode(8, OUTPUT); // 8. pini dijital ÇIKIŞ olarak ayarla Serial.begin(9600); // Bilgisayar ile 9600 baud hızında Seri Port ekranını başlat } void loop() { digitalWrite(10, HIGH); // Kırmızı LED'e 5V ver (YAK) digitalWrite(9, LOW); // Sarı LED'i 0V yap (SÖNDÜR) digitalWrite(8, LOW); // Yeşil LED'i 0V yap (SÖNDÜR) Serial.println("DUR: Kirmizi Isik Aktif"); delay(3000); // 3000 milisaniye = 3 saniye bekle digitalWrite(10, LOW); digitalWrite(9, HIGH); // Sarı LED'i yak delay(1000); // 1000 milisaniye = 1 saniye bekle digitalWrite(9, LOW); digitalWrite(8, HIGH); // Yeşil LED'i yak Serial.println("GEC: Yesil Isik Aktif"); delay(3000); }
A) Doğru ( D ) / Yanlış ( Y ) Soruları:
void setup() fonksiyonu içerisindeki kodlar kart çalıştığı sürece sonsuz döngüde tekrar eder.[ ] Ydelay(2500); komutu programı 2.5 saniye ($2500\,\text{ms}$) boyunca bekletir.[ ] DpinMode(pin, OUTPUT); ile çıkış tanımlanmalıdır.[ ] DRX ve TX) bilgisayar ile USB seri haberleşme hattına bağlıdır.[ ] Ddigitalwrite(13, high) komutu hatasız çalışır.[ ] YB) Boşluk Doldurma (Kelimeler: HIGH | loop() | 9600 | noktalı virgül (;) | 1000):
void loop() fonksiyonudur.digitalWrite(pin, HIGH); parametresi yazılır.Serial.begin(9600); komutu kullanılır.
Arduino'nun dış dünyadaki bir anahtarı veya butonu algılamasına Dijital Giriş (Digital Input) denir. Pin giriş olarak ayarlandığında (pinMode(2, INPUT);), o pindeki voltaj digitalRead(2) fonksiyonu ile okunur: Pinde $5\text{V}$ varsa sonuç HIGH (1), $0\text{V}$ varsa sonuç LOW (0) döner.
Bir butonu sadece $5\text{V}$ ile Arduino'nun 2. pini arasına bağlarsanız, butona basılmadığı anlarda 2. pin havada (boşta) kalır. Boştaki bir pin tıpkı bir anten gibi ortamdaki elektromanyetik gürültüyü kapar ve kendi kendine rastgele HIGH / LOW üretir!
Çözüm (Pull-Down Direnci): Butona basılmadığında pini güvenli şekilde $0\text{V}$ (GND) seviyesine çekmek için pin ile GND arasına $10\,\text{k}\Omega$ değerinde bir direnç bağlanır. Butona basıldığında ise $5\text{V}$ doğrudan pine ulaşır ve pin HIGH olur.
pinMode(2, INPUT_PULLUP); yazarak Arduino içindeki $20\,\text{k}\Omega$ direnci aktif edebilirsiniz. Bu modda buton পিন ile GND arasına bağlanır; basılı değilken HIGH, basıldığında LOW okunur!
if / else) ve Karşılaştırma Operatörleri
Programın bir koşula göre farklı işlemler yapması için if (koşul) { ... } else { ... } kullanılır. En sık yapılan öğrenci hatası: Koşul parantezi içinde eşitlik kontrolü yaparken çift eşittir == yerine tek eşittir = (atama operatörü) yazmaktır! (Doğrusu: if (butonDurumu == HIGH)).
// UYGULAMA 2: Buton Kontrollü Yaya Geçidi (Buton: Pin 2, LED: Pin 10) void setup() { pinMode(2, INPUT); // 2. pini dijital GİRİŞ yap pinMode(10, OUTPUT); // 10. pini dijital ÇIKIŞ yap } void loop() { int butonDurumu = digitalRead(2); // Butonu oku (HIGH veya LOW) if (butonDurumu == HIGH) { // DİKKAT: Çift eşittir (==) kullanılır! digitalWrite(10, HIGH); // Butona basıldıysa LED'i yak } else { digitalWrite(10, LOW); // Basılmadıysa LED'i söndür } }
A) Doğru ( D ) / Yanlış ( Y ) Soruları:
digitalWrite() fonksiyonu kullanılır.[ ] Y== operatörü kullanılır.[ ] Dif (kosul); satırında parantezden hemen sonra noktalı virgül koymak koşul bloğunun bozulmasına yol açar.[ ] D|| sembolü kullanılır.[ ] YB) Boşluk Doldurma (Kelimeler: digitalRead | Pull-Down | INPUT_PULLUP | == | &&):
(2) yazılır.pinMode(2, INPUT_PULLUP); kullanılır.if (deger == HIGH) ifadesinde eşitlik karşılaştırması yapılmaktadır.
Doğadaki büyüklükler (ortam ışığı, sıcaklık, ses şiddeti) sadece "var/yok" şeklinde değil, kesintisiz (sürekli) değişen Analog değerlerdir. Arduino Uno'nun A0 – A5 pinlerinde bulunan 10-Bit ADC (Analog-to-Digital Converter) birimi, $0\text{V}$ ile $5\text{V}$ arasındaki gerilimi $2^{10} = 1024$ eşit adıma böler ve analogRead(A0) komutuyla 0 ile 1023 arasında bir tam sayıya dönüştürür:
LDR (Light Dependent Resistor), üzerine düşen ışık şiddeti arttıkça direnci düşen ($500\,\Omega$'a kadar), karanlıkta ise direnci çok yükselen ($>100\,\text{k}\Omega$) bir sensördür. Arduino doğrudan direnç ölçemez, sadece voltaj ölçer! Bu yüzden LDR'yi $10\,\text{k}\Omega$ sabit direnç ile seri bağlayarak bir Gerilim Bölücü (Voltage Divider) kurarız ve iki elemanın tam birleşim (orta) noktasını A0 pinine bağlarız.
Arduino'nun ~3, ~5, ~6, ~9, ~10, ~11 pinleri 8-Bit PWM üretir. analogWrite(pin, deger) fonksiyonu 0 ile 255 arasında bir sayı alır: 0 (%0 Duty Cycle = $0\text{V}$), 127 (%50 Duty Cycle = yarım parlaklık), 255 (%100 Duty Cycle = tam parlaklık).
// UYGULAMA 3: Otomatik Sokak Lambası ve Potansiyometre ile Parlaklık (Dimmer) void setup() { pinMode(9, OUTPUT); // ~9 numaralı PWM pini çıkış pinMode(8, OUTPUT); // 8 numaralı Sokak Lambası LED pini Serial.begin(9600); } void loop() { int potDegeri = analogRead(A0); // 0 - 1023 arası 10-bit okuma int pwmParlaklik = map(potDegeri, 0, 1023, 0, 255); // 0-1023 aralığını 0-255'e ölçekle analogWrite(9, pwmParlaklik); // LED parlaklığını ayarla int isikSeviyesi = analogRead(A1); // LDR ışık sensörünü oku if (isikSeviyesi < 350) { // Hava karardıysa (eşik 350'nin altı) digitalWrite(8, HIGH); // Sokak lambasını OTOMATİK YAK } else { digitalWrite(8, LOW); // Hava aydınlıksa SÖNDÜR } delay(100); }
A) Doğru ( D ) / Yanlış ( Y ) Soruları:
analogRead(A0) komutu 0 ile 255 arasında bir sayı döndürür.[ ] YanalogWrite() komutu Arduino Uno'daki tüm dijital pinlerde (0'dan 13'e kadar hepsinde) PWM üretir.[ ] YanalogRead() yaklaşık 512 değerini okur.[ ] Dmap(deger, 0, 1023, 0, 255) kullanılır.[ ] DB) Boşluk Doldurma (Kelimeler: 1023 | 255 | Gerilim Bölücü | ~ (dalga) | analogRead):
analogWrite(9, 255); komutu %100 görev döngüsü (tam parlaklık) sağlar.A0 pinindeki potansiyometre voltajını okumak için analogRead(A0) fonksiyonu çağrılır.HC-SR04 Ultrasonik Mesafe Sensörü, yarasaların ve yunusların yön bulma (ekolokasyon) prensibiyle çalışır. İnsan kulağının duyma sınırının ($20\,\text{kHz}$) üzerinde, $40\,\text{kHz}$ frekansında ultrasonik ses dalgası gönderir ve sesin engele çarpıp geri dönme süresini (Time-of-Flight) ölçerek $2\,\text{cm}$ ile $400\,\text{cm}$ arasındaki mesafeyi hesaplar.
pulseIn(ECHO, HIGH) komutu, sesin sensörden çıkıp engele gidişi + dönüşü için geçen toplam süreyi mikrosaniye ($\mu\text{s}$) cinsinden verir.
VCC ($+5\text{V}$), TRIG (Tetikleme Girişi - Arduino'dan $10\,\mu\text{s}$ sinyal alır), ECHO (Yankı Çıkışı - Ses dönene kadar HIGH kalır), GND ($0\text{V}$).
// UYGULAMA 4: Sesli ve LED İkazlı Otomobil Park Sensörü (TRIG: Pin 6, ECHO: Pin 7, Buzzer: Pin 3) const int TRIG_PIN = 6; const int ECHO_PIN = 7; const int BUZZER_PIN = 3; const int KIRMIZI_LED = 10; void setup() { pinMode(TRIG_PIN, OUTPUT); // TRIG pini ses göndermek için ÇIKIŞ pinMode(ECHO_PIN, INPUT); // ECHO pini yankıyı dinlemek için GİRİŞ pinMode(BUZZER_PIN, OUTPUT); pinMode(KIRMIZI_LED, OUTPUT); Serial.begin(9600); } void loop() { // 1. Adım: Sensörü tetiklemek için TRIG pininden 10 mikrosaniyelik HIGH darbesi gönder digitalWrite(TRIG_PIN, LOW); delayMicroseconds(2); digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); // 2. Adım: ECHO pininin HIGH kaldığı süreyi mikrosaniye cinsinden ölç ve cm'ye çevir long sure = pulseIn(ECHO_PIN, HIGH); int mesafe = (sure * 0.0343) / 2; Serial.print("Mesafe: "); Serial.print(mesafe); Serial.println(" cm"); if (mesafe > 0 && mesafe < 20) { // 20 cm'den yakınsa tehlike alarmı! digitalWrite(KIRMIZI_LED, HIGH); tone(BUZZER_PIN, 1000); // Buzzer'dan 1000 Hz ses üret } else { digitalWrite(KIRMIZI_LED, LOW); noTone(BUZZER_PIN); // Sesi sustur } delay(100); }
A) Doğru ( D ) / Yanlış ( Y ) Soruları:
TRIG pini INPUT, ECHO pini ise OUTPUT olarak ayarlanmalıdır.[ ] YpulseIn(ECHO_PIN, HIGH) fonksiyonu süreyi milisaniye değil, mikrosaniye ($\mu\text{s}$) cinsinden döndürür.[ ] Dtone(pin, frekans) komutu kullanılır.[ ] DB) Boşluk Doldurma (Kelimeler: pulseIn | 10 | 0.0343 | noTone | ECHO):
TRIG pinine 10 mikrosaniye süreyle HIGH verilir.HIGH seviyesinde kalan yankı pininin adı ECHO pinidir.(pin) komutu kullanılır.
Arduino projelerimiz bilgisayara bağlı değilken (örneğin pil veya adaptörle çalışırken) sensör değerlerini görmek için 16x2 Karakter LCD Ekran (2 satır, her satırda 16 karakter) kullanırız. Standart bir LCD ekranı doğrudan bağlamak 12–16 kablo gerektirirken, ekranın arkasına takılan I2C Adaptör Modülü (PCF8574) sayesinde sadece 2 veri kablosu (SDA ve SCL) ile tüm ekran kontrol edilir!
| I2C LCD Pini | Arduino Uno Pini | Görevi |
|---|---|---|
| GND | GND |
Toprak ($0\text{V}$) Hattı |
| VCC | 5V |
Güç Beslemesi ($+5\text{V}$) |
| SDA | A4 |
Serial Data (Seri Veri Hattı) |
| SCL | A5 |
Serial Clock (Saat Senkron Hattı) |
💡 I2C Adresi ve Kontrast İpucu: Piyasadaki I2C modüllerinin adresi genellikle 0x27 veya 0x3F'tir. Ekranın arka ışığı yanıyor ama harfler görünmüyorsa I2C modülü üzerindeki mavi trimpotu yıldız tornavida ile çevirerek kontrastı ayarlayın.
// BİTİRME PROJESİ: Çoklu Sensör İstasyonu ve I2C LCD Dijital Gösterge Paneli #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); // 0x27 adresli, 16 sütun 2 satır LCD tanımla void setup() { pinMode(6, OUTPUT); // HC-SR04 TRIG pinMode(7, INPUT); // HC-SR04 ECHO pinMode(10, OUTPUT); // Uyarı LED'i lcd.init(); // LCD ekranı başlat lcd.backlight(); // Arka plan aydınlatmasını aç } void loop() { // 1. Ultrasonik Mesafe Ölçümü digitalWrite(6, LOW); delayMicroseconds(2); digitalWrite(6, HIGH); delayMicroseconds(10); digitalWrite(6, LOW); int mesafe = (pulseIn(7, HIGH) * 0.0343) / 2; // 2. LDR Işık Yüzdesi Hesabı (A1 Pini) int isikYuzde = map(analogRead(A1), 0, 1023, 0, 100); // 3. LCD Ekrana Yazdırma lcd.clear(); lcd.setCursor(0, 0); // 1. Satır, 1. Sütun lcd.print("Mesafe: "); lcd.print(mesafe); lcd.print(" cm"); lcd.setCursor(0, 1); // 2. Satır, 1. Sütun lcd.print("Isik: %"); lcd.print(isikYuzde); digitalWrite(10, (mesafe < 15) ? HIGH : LOW); delay(250); }
A) Doğru ( D ) / Yanlış ( Y ) Soruları:
SDA pini A4'e, SCL pini ise A5'e bağlanır.[ ] Dlcd.setCursor(1, 2); komutu kullanılır.[ ] Ylcd.backlight(); fonksiyonu çağrılır.[ ] DSDA ve SCL kabloları ters bağlansa bile LCD ekran ekrana yazı yazdırmaya devam eder.[ ] YB) Boşluk Doldurma (Kelimeler: A4 ve A5 | 0x27 | lcd.setCursor(0, 1) | lcd.clear() | I2C):
SDA ve SCL hatları sırasıyla A4 ve A5 analog pinlerinde bulunur.0x3F) değeridir.Arduino Uno'nun dijital I/O pinleri maksimum $40\,\text{mA}$ (önerilen güvenli sınır $20\,\text{mA}$) akım sağlayabilir. Küçük bir $5\text{V}$ DC hobi motoru boşta çalışırken bile $200\text{--}300\,\text{mA}$, ilk kalkış (stall) anında ise $800\,\text{mA}$ akım çeker. Doğrudan pine bağlanan bir motor mikrokontrolörün çıkış katını anında yakar!
Bu nedenle motor gibi yüksek akımlı yükler bir anahtarlama elemanı (NPN Transistör, MOSFET veya Motor Sürücü Entegre) üzerinden sürülür. Arduino sadece transistörün Base bacağına küçük bir kontrol sinyali ($2\text{--}5\,\text{mA}$) göndererek motorun ana akımını yönetir.
SG90 Mini Servo Motor: İçerisinde DC motor, dişli kutusu, potansiyometre ve sürücü devre barındıran kapalı çevrim bir aktüatördür. $0^\circ$ ile $180^\circ$ arasında hassas açısal kontrol sağlar. $50\,\text{Hz}$ ($20\,\text{ms}$) periyotlu PWM darbesi ile sürülür: $1.0\,\text{ms} \approx 0^\circ$, $1.5\,\text{ms} \approx 90^\circ$, $2.0\,\text{ms} \approx 180^\circ$.
#include <Servo.h>
Servo motor;
void setup() { motor.attach(9); } // Pin 9'a bağla
void loop() {
motor.write(90); // 90 dereceye git
delay(1000);
motor.write(180); // 180 dereceye git
delay(1000);
}
5V Röle Modülü: Yüksek voltajlı cihazları ($220\text{V}$ AC şebeke ampulü, $12\text{V}$ solenoid valf) düşük voltajlı Arduino ile açıp kapatan elektromekanik anahtardır. Üzerindeki optokuplör sayesinde yüksek voltaj tarafı ile Arduino tamamen izole edilir.
Laboratuvarda bir devre çalışmadığında rastgele parçaları değiştirmek yerine 4 adımlı mühendislik metodolojisi izlenir:
//) alınarak test edilir.| Hata Belirtisi | Gerçek Neden | Mühendislik Çözümü |
|---|---|---|
| "avrdude: stk500 sync error" | D0 (RX) veya D1 (TX) pinine kablo takılı olması veya yanlış COM Port. | D0/D1'deki kabloları sökün, doğru COM portunu seçip yeniden yükleyin. |
| Arduino Sürekli Kendini Resetliyor | Motor veya servo 5V pininden beslenirken ani voltaj çökmesi (Brown-out). | Motoru harici pille besleyin, Arduino ile Ortak GND yapın. |
| Buton Kendi Kendine Rastgele Basıyor | Giriş pininin boşta yüzmesi (Floating pin gürültüsü). | 10 kΩ Pull-Down direnci bağlayın veya INPUT_PULLUP modunu açın. |
| Serial Monitor'de Bozuk Karakterler (???) | Baud rate hız uyumsuzluğu. | Kodda Serial.begin(9600) varsa monitör altından 9600 seçin. |
| Pin Grubu | Pin Numaraları | Özel Donanım Görevi | Elektriksel Sınırlar & Özellikler |
|---|---|---|---|
| Dijital I/O | D0 – D13 | Giriş / Çıkış (HIGH = 5V, LOW = 0V) |
Pin başına max $40\,\text{mA}$, önerilen $20\,\text{mA}$. |
| PWM Çıkışları | ~3, ~5, ~6, ~9, ~10, ~11 | 8-bit Analog Benzetimi (analogWrite: 0–255) |
D5, D6: 980 Hz | D3, D9, D10, D11: 490 Hz frekans. |
| Analog Girişler | A0 – A5 | 10-bit ADC (analogRead: 0–1023) |
Giriş aralığı $0\text{--}5\,\text{V}$, çözünürlük $4.88\,\text{mV/adım}$. |
| I2C Veri Yolu | A4 (SDA) & A5 (SCL) | 2 Telli Sensör/Ekran Ağı (LCD, RTC, MPU6050) | 4.7 kΩ pull-up dirençleri ile 5V seviyesine çekilir. |
| SPI Veri Yolu | D10 (SS), D11 (MOSI), D12 (MISO), D13 (SCK) | Yüksek Hızlı Seri Veri Yolu (SD Kart, RFID-RC522) | Master/Slave çalışma mimarisi. |
| Donanım Kesmeleri | Pin 2 (INT0) & Pin 3 (INT1) | Anlık Harici Kesme (attachInterrupt) |
Enkoder okuma ve acil durum butonları için kritiktir. |
| UART Seri Port | D0 (RX) & D1 (TX) | Bilgisayar USB Haberleşmesi ve Kod Yükleme | Kod yüklenirken bu pinler boş bırakılmalıdır! |
| Renk | Sayı | Çarpan | Tolerans |
|---|---|---|---|
| Siyah | 0 | $10^0 = 1$ | - |
| Kahverengi | 1 | $10^1 = 10$ | ±%1 |
| Kırmızı | 2 | $10^2 = 100$ | ±%2 |
| Turuncu | 3 | $10^3 = 1.000$ (1k) | - |
| Sarı | 4 | $10^4 = 10.000$ (10k) | - |
| Yeşil | 5 | $10^5 = 100.000$ | ±%0.5 |
| Mavi | 6 | $10^6 = 1.000.000$ (1M) | ±%0.25 |
| Mor | 7 | $10^7$ | ±%0.1 |
| Gri | 8 | $10^8$ | - |
| Beyaz | 9 | $10^9$ | - |
| Altın | - | $0.1$ | ±%5 |
| Gümüş | - | $0.01$ | ±%10 |
| Fonksiyon | Açıklama & Örnek Kullanım |
|---|---|
pinMode(p, MOD); | Pini OUTPUT, INPUT veya INPUT_PULLUP yapar. |
digitalWrite(p, V); | Pini HIGH (5V) veya LOW (0V) yapar. |
digitalRead(p); | Pindeki dijital seviyeyi okur (1 veya 0). |
analogRead(A0); | Analog voltajı okur ($0\text{--}1023$ tamsayı döner). |
analogWrite(p, V); | PWM pini üzerinden sinyal üretir ($0\text{--}255$). |
delay(ms); | İşlemciyi belirtilen milisaniye kadar durdurur. |
millis(); | Arduino açıldığından beri geçen milisaniyeyi döner. |
map(x,a,b,c,d); | Değeri $[a, b]$ aralığından $[c, d]$ aralığına oranlar. |
Serial.begin(9600); | Seri haberleşmeyi 9600 baud hızında başlatır. |
Serial.println(v); | Veriyi terminale yazar ve alt satıra geçer. |
V = I × RI = V / R
P = V × IP = I² × R
Vout = Vin × R2/(R1+R2)
D = (t × 0.0343) / 2
V = (ADC × 5.0) / 1023
1. $5\text{V}$ gerilim kaynağından beslenen bir devrede $250\,\Omega$ direnç kullanılırsa devreden kaç $\text{mA}$ akım geçer?
A) $5\,\text{mA}$ B) $10\,\text{mA}$ C) $20\,\text{mA}$ D) $50\,\text{mA}$
2. Renk halkaları "Kahverengi - Siyah - Kırmızı - Altın" olan direncin değeri kaçtır?
A) $100\,\Omega$ B) $220\,\Omega$ C) $1\,\text{k}\Omega$ D) $10\,\text{k}\Omega$
3. Arduino Uno'da aşağıdakilerden hangisi bir PWM (~) çıkış pini DEĞİLDİR?
A) Pin 3 B) Pin 6 C) Pin 8 D) Pin 9
4. Buton okuma devresinde pinin boşta kalarak rastgele tetiklenmesini önleyen $10\,\text{k}\Omega$ GND direncine ne ad verilir?
A) Ön Direnç B) Pull-Down C) LDR D) Termistör
5. Arduino'nun A0 analog pinine $5\text{V}$ uygulandığında analogRead(A0) kaç döndürür?
A) 1 B) 255 C) 512 D) 1023
6. analogWrite(9, 127); komutu uygulanan bir LED hangi parlaklık oranında yanar?
A) Yanmaz (%0) B) Yarım (%50) C) Tam (%100) D) Hata verir
7. LDR ışık sensörü karanlık bir ortama girdiğinde direnci nasıl değişir?
A) Sıfır olur B) Çok büyür (Artar) C) Azalır D) Değişmez
8. HC-SR04 sensöründe pulseIn(ECHO, HIGH) ile $580\,\mu\text{s}$ ölçüldüğünde engel yaklaşık kaç $\text{cm}$ uzaktadır?
A) $5\,\text{cm}$ B) $10\,\text{cm}$ C) $20\,\text{cm}$ D) $40\,\text{cm}$
9. DC motor kapatıldığında oluşan ters gerilimden transistörü korumak için motora ters paralel bağlanan eleman nedir?
A) NTC Termistör B) LDR C) Flyback Diyot D) Kondansatör
10. 16x2 LCD ekranda 2. satırın 1. sütununa geçmek için hangi komut kullanılır?
A) setCursor(1,2) B) setCursor(0,1) C) setCursor(2,1) D) setCursor(1,0)
| Bölüm & Konu | A) Doğru / Yanlış Cevapları (1 – 5) | B) Boşluk Doldurma Cevapları (1 – 5) |
|---|---|---|
| Bölüm 1 (Sayfa 2) | 1: Y | 2: D | 3: D | 4: Y | 5: D | 1: Ohm (Ω) | 2: Anot (+) | 3: Dikey | 4: Kısa Devre | 5: 10 kΩ |
| Bölüm 2 (Sayfa 3) | 1: Y | 2: D | 3: D | 4: D | 5: Y | 1: loop() | 2: HIGH | 3: noktalı virgül (;) | 4: 1000 | 5: 9600 |
| Bölüm 3 (Sayfa 4) | 1: Y | 2: D | 3: D | 4: D | 5: Y | 1: digitalRead | 2: Pull-Down | 3: INPUT_PULLUP | 4: == | 5: && |
| Bölüm 4 (Sayfa 5) | 1: Y | 2: Y | 3: D | 4: D | 5: D | 1: 1023 | 2: 255 | 3: Gerilim Bölücü | 4: ~ (dalga) | 5: analogRead |
| Bölüm 5 (Sayfa 6) | 1: Y | 2: D | 3: D | 4: D | 5: D | 1: 10 | 2: ECHO | 3: pulseIn | 4: 0.0343 | 5: noTone |
| Bölüm 6 (Sayfa 7) | 1: D | 2: Y | 3: D | 4: D | 5: Y | 1: I2C | 2: A4 ve A5 | 3: lcd.setCursor(0, 1) | 4: lcd.clear() | 5: 0x27 |
| Bölüm 7 (Sayfa 8) | 1: Y | 2: D | 3: D | 4: D | 5: Y | 1: Transistör | 2: Flyback | 3: Ortak GND | 4: Servo.h | 5: Optokuplör |
| Bölüm 8 (Sayfa 9) | 1: D | 2: Y | 3: D | 4: D | 5: Y | 1: Kısa Devre | 2: Seri | 3: Baud Rate | 4: Brown-out | 5: D0 ve D1 (RX/TX) |