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?
- Geleceğin Mesleği: Otomasyon ve yapay zeka çağına hazırlık
- Problem Çözme: Analitik düşünme yeteneğinizi geliştirir
- Elektronik Bilgisi: Temel devre elemanlarını öğrenirsiniz
- Yaratıcılık: Kendi icatlarınızı yapma özgürlüğü
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).
// 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
}
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ı
- VCC: 5V
- GND: GND
- Trig: Dijital Pin (örn. 9)
- Echo: Dijital Pin (örn. 10)
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
- Arduino UNO
- Motor Sürücü (L298N)
- 2 Adet DC Motor ve Tekerlek
- Çizgi Sensörü Seti (TCRT5000)
- Robot Şasesi ve Pil
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.
// 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);
}