Arduino
Arduino
📑 İçindekiler
1. Giriş: Arduino Nedir?
2. İlk Bağlantı ve “Merhaba Arduino”
3. Temel Projeler (Kolay Seviye)
4. Orta Seviye Projeler
5. İleri Seviye Projeler
6. Ek: Hatalar ve Çözüm Önerileri
7. Ekstra Kaynaklar
void loop() {
digitalWrite(8, HIGH);
delay(500);
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
delay(500);
digitalWrite(9, LOW);
}
Proje 2: RGB LED ile Renk Değiştirme
void setup() {
pinMode(9, OUTPUT); // Kırmızı
pinMode(10, OUTPUT); // Yeşil
pinMode(11, OUTPUT); // Mavi
}
void loop() {
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
delay(1000);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
delay(1000);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
delay(1000);
}
3. 💡 Temel Projeler (Kolay Seviye)
Bu bölümde Arduino’nun temel giriş/çıkış işlevlerini kullanarak küçük ama öğretici projeler
yapacağız. Her projede devre şeması, kod örneği ve açıklamalar yer alacak şekilde
ilerleyeceğiz.
Kod:
int ledPin = 13;
int buttonPin = 2;
int buttonState = 0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}
Proje 2: Buzzer ile Ses Çıkarma
Malzemeler:
1 x Buzzer
1 x 220 ohm direnç
Kod:
int buzzer = 8;
void setup() {
pinMode(buzzer, OUTPUT);
}
void loop() {
digitalWrite(buzzer, HIGH);
delay(1000);
digitalWrite(buzzer, LOW);
delay(1000);
}
Proje 3: Potansiyometre ile LED Parlaklık Ayarı
Açıklama:
Potansiyometreden gelen analog değer, LED’in parlaklığını ayarlamak için kullanılır.
Kod:
int potPin = A0;
int ledPin = 9;
int potValue = 0;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
potValue = analogRead(potPin);
int brightness = map(potValue, 0, 1023, 0, 255);
analogWrite(ledPin, brightness);
}
Proje 4: LDR ile Gece Lambası
Açıklama:
Işık seviyesi azaldığında LED otomatik yanar.
Kod:
int ldrPin = A0;
int ledPin = 9;
void setup() {
pinMode(ledPin, OUTPUT);
[Link](9600);
}
void loop() {
int ldrValue = analogRead(ldrPin);
[Link](ldrValue);
delay(200);
}
Proje 5: Trafik Işığı Simülasyonu
Açıklama:
Kırmızı, sarı ve yeşil LED'lerle trafik ışığı döngüsü oluşturulur.
Kod:
int red = 8;
int yellow = 9;
int green = 10;
void setup() {
pinMode(red, OUTPUT);
pinMode(yellow, OUTPUT);
pinMode(green, OUTPUT);
}
void loop() {
digitalWrite(green, HIGH);
delay(3000);
digitalWrite(green, LOW);
digitalWrite(yellow, HIGH);
delay(1000);
digitalWrite(yellow, LOW);
digitalWrite(red, HIGH);
delay(3000);
digitalWrite(red, LOW);
}
Proje 6: Tilt Sensörü ile Hareket Algılama
Açıklama:
Tilt sensörü hareket algıladığında LED yanar.
int tiltPin = 2;
int ledPin = 13;
void setup() {
pinMode(tiltPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
int tilt = digitalRead(tiltPin);
if (tilt == HIGH) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}
Proje 7: Push Buton ile Sayaç
Açıklama:
Butona her basıldığında sayı 1 artar ve seri monitörde görüntülenir.
int buttonPin = 2;
int counter = 0;
int lastButtonState = LOW;
void setup() {
pinMode(buttonPin, INPUT);
[Link](9600);
}
void loop() {
int currentState = digitalRead(buttonPin);
lastButtonState = currentState;
}
Proje 8: Piezo Buzzer ile Melodi Çalma
int buzzer = 8;
void setup() {
// do, re, mi notaları
tone(buzzer, 262); // Do
delay(500);
tone(buzzer, 294); // Re
delay(500);
tone(buzzer, 330); // Mi
delay(500);
noTone(buzzer);
}
4. ⚙️Orta Seviye Projeler
Bu bölümde sensörler, motorlar ve giriş-çıkış cihazlarıyla daha etkileşimli projeler
geliştiriyoruz. Ayrıca seri port üzerinden verileri görüntülemeyi de öğreniyoruz.
#define DHTPIN 2
#define DHTTYPE DHT11
void setup() {
[Link](9600);
[Link]();
}
void loop() {
float h = [Link]();
float t = [Link]();
[Link]("Sıcaklık: ");
[Link](t);
[Link](" °C Nem: ");
[Link](h);
[Link](" %");
delay(2000);
}
Proje 2: LDR ile Ortam Işığı Ölçme
int ldrPin = A0;
void setup() {
[Link](9600);
}
void loop() {
int ldrValue = analogRead(ldrPin);
[Link]("Işık Değeri: ");
[Link](ldrValue);
delay(500);
}
Proje 3: 4 LED ile Kayan Işık (Knight Rider)
int leds[] = {8, 9, 10, 11};
void setup() {
for (int i = 0; i < 4; i++) {
pinMode(leds[i], OUTPUT);
}
}
void loop() {
for (int i = 0; i < 4; i++) {
digitalWrite(leds[i], HIGH);
delay(100);
digitalWrite(leds[i], LOW);
}
for (int i = 2; i > 0; i--) {
digitalWrite(leds[i], HIGH);
delay(100);
digitalWrite(leds[i], LOW);
}
}
Proje 4: Ultrasonik Mesafe Ölçümü (HC-SR04)
#define trigPin 9
#define echoPin 10
void setup() {
[Link](9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
[Link]("Mesafe: ");
[Link](distance);
[Link](" cm");
delay(500);
}
Proje 5: Servo Motor ile Açı Kontrolü
Gerekli Kütüphane:
Servo kütüphanesi Arduino IDE’de gömülüdür.
#include <Servo.h>
Servo myServo;
void setup() {
[Link](9);
}
void loop() {
[Link](0);
delay(1000);
[Link](90);
delay(1000);
[Link](180);
delay(1000);
}
Proje 6: Potansiyometre ile Servo Kontrolü
#include <Servo.h>
Servo myServo;
int potPin = A0;
void setup() {
[Link](9);
}
void loop() {
int potValue = analogRead(potPin);
int angle = map(potValue, 0, 1023, 0, 180);
[Link](angle);
delay(15);
}
Proje 7: Joystick ile LED veya Servo Kontrolü
Joystick modülünün X çıkışı ile servo açısı kontrol edilir.
#include <Servo.h>
Servo servo;
void setup() {
[Link](9);
}
void loop() {
int x = analogRead(A0);
int angle = map(x, 0, 1023, 0, 180);
[Link](angle);
delay(15);
}
Proje 8: IR Kumanda ile LED Kontrolü
Malzemeler:
IR Alıcı (VS1838B, TSOP1738 vb.)
Kızılötesi uzaktan kumanda
Kütüphane:
IRremote → Arduino IDE > Library Manager’dan kurulur.
Kod (temel yapı):
#include <IRremote.h>
void setup() {
[Link](9600);
[Link]();
pinMode(13, OUTPUT);
}
void loop() {
if ([Link](&results)) {
[Link]([Link], HEX); // buton kodunu seri porttan oku
if ([Link] == 0xFFA25D) { // Örnek bir kod
digitalWrite(13, !digitalRead(13)); // LED aç/kapa
}
[Link]();
}
}
5. 🖥️İleri Seviye Projeler
Bu bölümde LCD ekranlar, kablosuz iletişim, RFID sistemleri ve daha gelişmiş modüllerle
projeler yapacağız. Gerçek dünya uygulamalarına oldukça yakın örnekler seni bekliyor!
#define DHTPIN 2
#define DHTTYPE DHT11
void setup() {
[Link]();
[Link]();
[Link]();
}
void loop() {
float t = [Link]();
float h = [Link]();
[Link](0, 0);
[Link]("Sicaklik: ");
[Link](t);
[Link]("C");
[Link](0, 1);
[Link]("Nem: ");
[Link](h);
[Link]("%");
delay(2000);
}
Proje 2: Bluetooth ile Telefon Üzerinden LED Kontrolü
Malzemeler:
HC-05 Bluetooth modülü
Android telefon + Bluetooth terminal uygulaması
Kod:
char data = 0;
void setup() {
[Link](9600);
pinMode(13, OUTPUT);
}
void loop() {
if ([Link]()) {
data = [Link]();
if (data == '1') {
digitalWrite(13, HIGH);
} else if (data == '0') {
digitalWrite(13, LOW);
}
}
}
Yeşil Terminalden 1 yolla → LED yanar
Kırmızı Terminalden 0 yolla → LED söner
Proje 3: LED Matris ile Hareketli Yazı
Malzemeler:
8x8 LED Matrix
MAX7219 sürücü
Kütüphane:
LedControl veya MD_MAX72XX
#include <LedControl.h>
void setup() {
[Link](0, false);
[Link](0, 8);
[Link](0);
[Link](0, 0, 'A', false);
}
(İleri düzey kayan yazı için MD_Parola kütüphanesi önerilir)
Proje 4: 7 Segment Display ile Sayı Gösterimi
Malzemeler:
1 Haneli 7 segment ekran
8 adet direnç
Kütüphanesiz temel örnek:
int seg[] = {2, 3, 4, 5, 6, 7, 8}; // a-b-c-d-e-f-g
byte digits[10][7] = {
{1,1,1,1,1,1,0}, // 0
{0,1,1,0,0,0,0}, // 1
{1,1,0,1,1,0,1}, // 2
{1,1,1,1,0,0,1}, // 3
{0,1,1,0,0,1,1}, // 4
{1,0,1,1,0,1,1}, // 5
{1,0,1,1,1,1,1}, // 6
{1,1,1,0,0,0,0}, // 7
{1,1,1,1,1,1,1}, // 8
{1,1,1,1,0,1,1} // 9
};
void setup() {
for(int i = 0; i < 7; i++)
pinMode(seg[i], OUTPUT);
}
void loop() {
for (int n = 0; n < 10; n++) {
for (int i = 0; i < 7; i++) {
digitalWrite(seg[i], digits[n][i]);
}
delay(1000);
}
}
Proje 5: RFID Kart ile Giriş Sistemi
Malzemeler:
MFRC522 RFID okuyucu
RFID kart ve/veya anahtarlık
Kütüphane:
MFRC522
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
void setup() {
[Link](9600);
[Link]();
rfid.PCD_Init();
}
void loop() {
if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial()) return;
rfid.PICC_HaltA();
}
Proje 6: Ses Sensörü ile Sesle Kontrol
int micPin = A0;
int ledPin = 13;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
int sound = analogRead(micPin);
if (sound > 500) {
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
}
}
Proje 7: Dijital Termometre
LCD veya seri monitör üzerinden sıcaklık değeri gösterilir.
(Tekrarlayan DHT11 örneğini kullanabilirsiniz.)
Proje 8: İki Arduino Arasında Seri Haberleşme
Alıcı Taraf (Arduino 1)
void setup() {
[Link](9600);
}
void loop() {
if ([Link]()) {
char veri = [Link]();
[Link]("Gelen veri: ");
[Link](veri);
}
}
Gönderici Taraf (Arduino 2)
void setup() {
[Link](9600);
}
void loop() {
[Link]('A');
delay(1000);
}
Proje 9: I2C ile Birden Fazla Cihaz Kontrolü
LCD, RTC, EEPROM gibi birden fazla cihaz aynı I2C hat üzerinden kontrol edilebilir.
#include <Wire.h>
void setup() {
[Link]();
[Link](9600);
[Link]("I2C hazır");
}
void loop() {
// Cihaz bazlı I2C kodları uygulanır.
}
Proje 10: Güvenlik Alarm Sistemi
İçerik:
PIR hareket sensörü
Buzzer
LED
int pir = 2;
int led = 13;
int buzzer = 8;
void setup() {
pinMode(pir, INPUT);
pinMode(led, OUTPUT);
pinMode(buzzer, OUTPUT);
}
void loop() {
if (digitalRead(pir) == HIGH) {
digitalWrite(led, HIGH);
digitalWrite(buzzer, HIGH);
} else {
digitalWrite(led, LOW);
digitalWrite(buzzer, LOW);
}
}
✔️Bu bölümle birlikte ileri seviye modülleri kullanmayı, haberleşme protokollerini ve sensör
verilerini işleyebilmeyi öğrendik.
6. 🛠️Hatalar ve Çözüm Önerileri
Arduino ile proje geliştirirken karşılaşılan bazı yaygın hatalar vardır. Bu bölümde bu hataları
nasıl tanıyabileceğini ve çözümlerini öğreneceksin.
7. 📚 Ekstra Kaynaklar
Arduino öğrenimini desteklemek için faydalanabileceğin bazı öneriler:
🖥️Online Simülatörler
Tinkercad Circuits
(Kod yaz, devre çiz, test et)
Wokwi
(Çok kapsamlı Arduino + ESP32 simülasyonu)
📘 Türkçe Kaynaklar
Kodlama Vakti - Arduino
YouTube’da "Arduino Türkçe Eğitim" araması
📗 İngilizce Kaynaklar
Arduino Resmi Sitesi
Instructables Arduino Projeleri
Adafruit Öğreticileri
🎓 Son Söz
Arduino dünyasına hoş geldin! Bu kitapçık sayesinde temel, orta ve ileri seviye projeleri
yapabilecek bilgiye sahip oldun. Şimdi sıra sende:
✔️Denemeler yap
✔️Projeleri birleştir
✔️Kendi fikirlerini hayata geçir
8.5 Buzzer
Ses çıkaran eleman.
Dijital pin ile kontrol edilir.
8.6 Sensörler
9.3 digitalRead(pin)
9.4 analogRead(pin)
9.5 delay(ms)
9.6 [Link](baudrate)
Arduino Uno
LED
220Ω direnç
Push button
Jumper kablolar
Breadboard
Devre Bağlantısı:
LED’in uzun bacağını 13 numaralı pine, kısa bacağını direnç üzerinden GND’ye bağla.
Butonun bir bacağını 2 numaralı pine, diğer bacağını GND’ye bağla.
Kod:
void setup() {
pinMode(13, OUTPUT);
pinMode(2, INPUT_PULLUP); // Buton için dahili pull-up direnci
}
void loop() {
int buttonState = digitalRead(2);
if (buttonState == LOW) { // Buton basılıysa
digitalWrite(13, HIGH);
} else {
digitalWrite(13, LOW);
}
}