Robotik Kodlama ve Arduino

Robotik kodlama, mekanik sistemlere "ruh" veren yazılımları oluşturma sanatıdır. Bu derste Arduino platformunu kullanarak kendi robotlarınızı nasıl yapacağınızı öğreneceksiniz.

Neden Robotik Öğrenmelisiniz?

Arduino Nedir?

Arduino, kullanımı kolay donanım ve yazılım üzerine kurulmuş açık kaynaklı bir elektronik platformdur. Etkileşimli projeler geliştirmek için tasarlanmıştır.

Arduino UNO Özellikleri

Özellik Değer
Mikrodenetleyici ATmega328P
Çalışma Voltajı 5V
Dijital I/O Pinleri 14 (6'sı PWM)
Analog Giriş Pinleri 6
Flash Hafıza 32 KB
Saat Hızı 16 MHz

İlk Program: LED Yakma

Arduino dünyasının "Merhaba Dünya"sı LED yakıp söndürmektir (Blink).

Blink.ino

// Pin 13'te dahili LED vardır
const int ledPin = 13;

void setup() {
  // Pin modunu çıkış olarak ayarla
  pinMode(ledPin, OUTPUT);
}

void loop() {
  digitalWrite(ledPin, HIGH);  // LED'i yak
  delay(1000);                 // 1 saniye bekle
  digitalWrite(ledPin, LOW);   // LED'i söndür
  delay(1000);                 // 1 saniye bekle
}
                
🔹 İpucu: setup() fonksiyonu enerji verildiğinde bir kez çalışır, loop() fonksiyonu ise sonsuz döngüde sürekli çalışır.

Sensör Kullanımı

Robotların çevreyi algılaması için sensörler kullanılır. En popüler sensörlerden biri HC-SR04 Ultrasonik Mesafe Sensörüdür.

Mesafe Sensörü Bağlantısı

MesafeOlcer.ino

const int trigPin = 9;
const int echoPin = 10;
long sure;
int mesafe;

void setup() {
  pinMode(trigPin, OUTPUT); // Ses dalgası gönderir
  pinMode(echoPin, INPUT);  // Yansıyan dalgayı alır
  Serial.begin(9600);       // Seri haberleşme başlat
}

void loop() {
  // Trig pinini temizle
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  
  // 10 mikrosaniye ses dalgası gönder
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  
  // Dalgayı oku (süre cinsinden)
  sure = pulseIn(echoPin, HIGH);
  
  // Mesafeyi hesapla (cm)
  mesafe = sure * 0.034 / 2;
  
  Serial.print("Mesafe: ");
  Serial.print(mesafe);
  Serial.println(" cm");
  
  delay(100);
}
                

Proje: Çizgi İzleyen Robot

Çizgi izleyen robot, zemindeki (genellikle siyah) çizgiyi takip eden otonom bir robottur.

Gerekli Malzemeler

Motor Sürücü Mantığı

Motor sürücü, Arduino'dan gelen düşük akımlı sinyalleri kullanarak motorları sürecek yüksek akımı sağlar. Ayrıca motorların yönünü kontrol etmemize yarar.

CizgiIzleyen.ino

// Motor Pinleri
int in1 = 5;
int in2 = 6;
int in3 = 9;
int in4 = 10;

// Sensör Pinleri
int solSensor = 2;
int sagSensor = 3;

void setup() {
  // Motor pinleri çıkış
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
  
  // Sensör pinleri giriş
  pinMode(solSensor, INPUT);
  pinMode(sagSensor, INPUT);
}

void loop() {
  int solDeger = digitalRead(solSensor);
  int sagDeger = digitalRead(sagSensor);
  
  // İki sensör de çizgiyi görüyor (Siyah=1)
  if(solDeger == 1 && sagDeger == 1) {
    ileriGit();
  }
  // Sağ sensör çizgiden çıktı (Beyaz=0), sola dön
  else if(solDeger == 1 && sagDeger == 0) {
    solaDon();
  }
  // Sol sensör çizgiden çıktı, sağa dön
  else if(solDeger == 0 && sagDeger == 1) {
    sagaDon();
  }
  // İkisi de dışarıda, dur
  else {
    dur();
  }
}

void ileriGit() {
  digitalWrite(in1, HIGH); digitalWrite(in2, LOW);
  digitalWrite(in3, HIGH); digitalWrite(in4, LOW);
}

void sagaDon() {
  digitalWrite(in1, HIGH); digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);  digitalWrite(in4, LOW);
}

void solaDon() {
  digitalWrite(in1, LOW);  digitalWrite(in2, LOW);
  digitalWrite(in3, HIGH); digitalWrite(in4, LOW);
}

void dur() {
  digitalWrite(in1, LOW); digitalWrite(in2, LOW);
  digitalWrite(in3, LOW); digitalWrite(in4, LOW);
}
                
🔹 Dikkat: Motor sürücüyü bağlarken pil kutuplarına (+/-) çok dikkat edin. Yanlış bağlantı kartı yakabilir!