Neden Kod? Diller Arduino Lab Quiz
💻 Ders 6 — Kodlama

Robotikten Koda Geçiş

Artık robotu kodla kontrol etmeyi öğreniyorsun! Sensörden motora, if-else'ten döngüye — her şey bir satır kodla başlar.

robot_kontrol.ino
// Robot Kontrol Programı
int mesafe = 0;
void setup() {
  Serial.begin(9600);
}
void loop() {
  mesafe = olcMesafe();
  if (mesafe < 30) motorDur();
  else ilerle();
}

Neden Kod Yazmalıyız?

Robot düğmeyle kontrol edilemez — her koşulda bağımsız karar vermesi için programa ihtiyaç duyar.

🧠

Fikir

"Robot engel görünce dursun" — akılda bir hedef.

✏️

Algoritma

if(mesafe<30) dur else ilerle — mantıksal adımlar.

💻

Kod

Arduino / Python ile algoritma gerçek koda dönüşür.

⚙️

Derleme

Kod makine diline çevrilir (0 ve 1'lere).

🤖

Çalışma

Mikrodenetleyici kodu saniyede milyonlarca kez çalıştırır.

🎛️ Olmadan: Manuel Kontrol

Her hareketi insan tuşlara basarak yönetir. Robot bağımsız karar veremez. Tehlikeli ortamlarda veya hız gerektiren durumlarda yetersizdir.

🚀 Kodla: Otonom Kontrol

Robot kendi sensörlerini okur, algoritmasına göre karar verir ve harekete geçer. İnsan müdahalesine gerek kalmaz. Gerçek yapay zeka bu temelden başlar.

Robotik Programlama Dilleri

Her platform için farklı bir dil, ama hepsi aynı mantıkla çalışır.

C / C++ (Arduino)

Gömülü sistemlerin temel dili. Düşük bellek tüketimi, doğrudan donanım erişimi. Arduino IDE ile başlangıç için en popüler seçimdir. 8-bit ve 32-bit mikrodenetleyicilerde çalışır.

🐍

Python (MicroPython / ROS)

Raspberry Pi ve ROS (Robot Operating System) için ideal. Okunabilir sözdizimi, zengin kütüphaneler. Makine öğrenmesi ve görüntü işleme için tercih edilir.

Java (ROS / FRC)

FIRST Robotics Competition'ın resmi dilidir. Nesne yönelimli yapısı karmaşık robot yazılımlarını organize etmeyi kolaylaştırır. WPILib kütüphanesiyle kullanılır.

🔷

Scratch / Blockly

Blok tabanlı görsel programlama. Kod yazmaya başlamadan önce algoritma mantığını öğrenmek için harika. mBlock, MIT App Inventor ile robotları kontrol edebilirsin.

📊

MATLAB / Simulink

Endüstriyel robot sistemleri ve kontrol mühendisliğinde kullanılır. PID kontrolcü tasarımı, fizik simülasyonu ve veri analizi için güçlü araçlar sunar.

🔩

Assembly / HDL

En düşük seviye programlama. Doğrudan CPU komutları veya FPGA üzerinde donanım tanımlaması. Ultra hızlı ve küçük bellek. Uzman geliştiriciler için.

Arduino ile Robot Kodlamak

Arduino, başlangıç için en uygun platformdur. USB ile bilgisayara bağlanır, C++ tabanlı kolay sözdizimi ile saniyeler içinde çalışır.

🔧 setup() — Bir Kez Çalışır

Program açıldığında yalnızca bir kez çalışır. Pin modlarını, seri haberleşmeyi ve başlangıç değerlerini burada ayarlarsın.

void setup() { pinMode(13, OUTPUT); Serial.begin(9600); // Motor pinlerini ayarla pinMode(9, OUTPUT); pinMode(10, OUTPUT); }

🔁 loop() — Sürekli Döner

Program çalıştığı sürece sürekli tekrar eder. Sensör okuma, karar verme ve motor kontrolü hep burada gerçekleşir.

void loop() { // Sensörü oku int d = olcMesafe(); // Karar ver if (d < 30) dur(); else ilerle(); delay(50); }

Arduino Pin Türleri

📍 Dijital Pinler (D0–D13)

Sadece iki değer alır: HIGH (5V) veya LOW (0V). LED yakmak, motor yönü, buton okumak için kullanılır.

digitalWrite(13, HIGH); digitalRead(7);

📊 Analog Pinler (A0–A5)

0–1023 arası değer okur (10-bit ADC). Potansiyometre, ışık sensörü, sıcaklık sensörü için kullanılır.

int deger = analogRead(A0); // 0 – 1023 arası

⚡ PWM Pinler (~3,5,6,9,10,11)

0–255 arası değer yazar. Motor hız kontrolü, LED parlaklığı, servo açısı için kullanılır.

analogWrite(9, 128); // %50 hız (0–255)

🤖 Tam Çalışan Robot Kodu (Engel Kaçınan)

// ─── Pin Tanımları ─── #define TRIG_PIN 7 // Ultrasonik tetik #define ECHO_PIN 6 // Ultrasonik yankı #define MOT_A_EN 9 // Sol motor PWM #define MOT_A_IN1 3 // Sol motor yön 1 #define MOT_A_IN2 4 // Sol motor yön 2 #define MOT_B_EN 10 // Sağ motor PWM #define MOT_B_IN1 5 // Sağ motor yön 1 #define MOT_B_IN2 8 // Sağ motor yön 2 const int ENGEL_ES = 30; // cm — güvenli mesafe int hiz = 180; // 0–255 arası hız void setup() { Serial.begin(9600); pinMode(TRIG_PIN, OUTPUT); pinMode(ECHO_PIN, INPUT); motorKur(); Serial.println("Robot hazir!"); } void loop() { int mesafe = olcMesafe(); Serial.print("Mesafe: "); Serial.println(mesafe); if (mesafe < 15) { geriGit(); delay(400); sagaDon(); delay(600); } else if (mesafe < ENGEL_ES) { yavasCalis(); } else { ilerle(); } delay(50); } // ─── Fonksiyonlar ─── long olcMesafe() { digitalWrite(TRIG_PIN, LOW); delayMicroseconds(2); digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); long sure = pulseIn(ECHO_PIN, HIGH); return sure * 0.034 / 2; // cm } void ilerle() { analogWrite(MOT_A_EN, hiz); analogWrite(MOT_B_EN, hiz); digitalWrite(MOT_A_IN1, HIGH); digitalWrite(MOT_A_IN2, LOW); digitalWrite(MOT_B_IN1, HIGH); digitalWrite(MOT_B_IN2, LOW); }

Uygulama Laboratuvarı 💻

Kodu değiştir, robotu simüle et, sonuçları anlık gör.

⚡ Robot Kod Simülatörü — Senaryo Seç ve Çalıştır

80
1000
25
75
Çalışan Kod
// Senaryo yükleniyor...
Robot Çıktısı (Serial Monitor)
Senaryo seç, sonra kaydırıcıları hareket ettir.

📍 Arduino Pin Yapılandırıcı

Bir pine tıkla → fonksiyonunu değiştir → setup() kodu otomatik oluşsun.

Oluşturulan setup() Kodu
void setup() {\n // Pin seç...

🔁 analogWrite() Motor Simülatörü

128
128
Hesaplanıyor...

📟 Serial Monitor Simülatörü

Serial.println() ile robot ne gönderir? Simüle et.

50
512
Serial Monitor

⏱ delay() ve Zamanlama

1000ms
500ms
Kaydırıcıları hareket ettir.

Platform Karşılaştırma Tablosu

PlatformDilZorlukMaliyetHızBellekİdeal Kullanım
⚡ Arduino UnoC/C++Başlangıç~15$16 MHz32 KBSensör, motor, LED projeleri
🚀 Arduino MegaC/C++Başlangıç~40$16 MHz256 KBÇok pinli büyük projeler
🐍 Raspberry Pi 4Python/COrta~60$1.5 GHz1-8 GB RAMGörüntü işleme, ROS, AI
🔷 ESP32C/MicroPythonBaşlangıç~10$240 MHz4 MBWiFi/BT, IoT robot projeleri
🧩 STM32C/C++ (HAL)İleri~15$72-480 MHz512KB-2MBEndüstriyel, yüksek hızlı

Gerçek Projelerde Kullanılan Kodlar

🚗

Otonom Araba (ROS/Python)

Lidar verisini Python ile işler, yol planı üretir, CAN-bus üzerinden motor kontrolü yapar.

🦾

Endüstriyel Kol (C++/MATLAB)

Kinematik hesaplamalar C++ ile, PID kontrolcü MATLAB/Simulink'te tasarlanır, gerçek zamanlı çalışır.

🚁

Drone (C/ArduPilot)

Uçuş kontrolcüsü C ile yazılmış ArduPilot firmware üzerinde çalışır, 400 Hz döngüyle IMU okur.

🐕

Quadruped Robot (C++/ROS2)

Her bacak için ayrı yürüyüş algoritması, ROS2 topic'leriyle koordinasyon, 1kHz kontrol döngüsü.

🏭

AGV (Java/PLC)

Fabrika içi otonom taşıma. Java tabanlı planlama yazılımı + PLC ile gerçek zamanlı motor kontrolü.

🔬

Mikro Robot (Assembly)

Tıbbi mikro robotlar saniyede milyarlarca işlem yapan assembly kodu ile nanometre hassasiyette hareket eder.

Bilgi Testi 💻

Kodlama ve mikrodenetleyici temellerini ne kadar anladın?

📝 Robotikten Koda Geçiş Mini Sınavı

1. Arduino'da setup() fonksiyonu ne zaman çalışır?

2. analogWrite(9, 255) komutu ne anlama gelir?

3. Arduino'da analog pin okumak için hangi fonksiyon kullanılır ve ne aralığında değer döndürür?

4. Görüntü işleme ve yapay zeka destekli robot projeleri için hangi platform daha uygundur?

5. delay(1000) komutu ne işe yarar?

6. Aşağıdaki Arduino kodu ne yapar?

pinMode(13, OUTPUT); digitalWrite(13, HIGH); delay(500); digitalWrite(13, LOW); delay(500);

Puan: 0 / 6