3'ü 1 Arada Çok Fonksiyonlu Robot Araba Kiti, aynı şasi üzerinde üç projeyi birleştirir: Bluetooth ile telefondan kontrol, IR kumandayla kontrol ve ultrasonik sensörle engelden kaçma. Bu yazıda tek bağlantı şeması ve üç modu da içeren tek bir kod paylaşıyoruz.
Bağlantı Şeması
L298N: IN1→D5, IN2→D6, IN3→D9, IN4→D10. HC-06: TXD→D0, RXD→D1 (kod yüklerken çıkarın). IR alıcı OUT→D11. HC-SR04: TRIG→A0, ECHO→A1. Servo sinyal→D3. Modüller Arduino 5V'tan, Arduino pilden VIN ile beslenir; GND'ler ortak.
Standart set (4'lü AA pil kutusu, 6V):

18650 pil yuvalı set (2x18650, 7,4V):

Mod Seçimi Nasıl Çalışır?
- Telefon (Bluetooth): F/B/L/R/S karakterleri robotu sürer; A karakteri otonom modu açar, M kapatır.
- Kumanda (IR): yön tuşları robotu sürer; OK tuşu otonom modu açar/kapatır.
- Otonom: HC-SR04 ile mesafe ölçülür, engel görününce servo sağa-sola bakıp boş tarafa döner.
Arduino Kodu
Önce Kitap Yöneticisi'nden "IRremote" kütüphanesini kurun. Kumanda tuş kodlarını Seri Monitör'den okuyup KOD_* satırlarını güncelleyin.
// 3'ü 1 Arada Robot - Bluetooth + IR + Engelden Kaçma
// Atölye Elektronik
#include <IRremote.h>
#include <Servo.h>
#define IN1 5
#define IN2 6
#define IN3 9
#define IN4 10
#define IR_PIN 11
#define TRIG A0
#define ECHO A1
#define SERVO_PIN 3
#define KOD_ILERI 0xFF18E7
#define KOD_GERI 0xFF4AB5
#define KOD_SOL 0xFF10EF
#define KOD_SAG 0xFF5AA5
#define KOD_DUR 0xFF38C7 // OK tusu: otonom ac/kapat
IRrecv irrecv(IR_PIN);
decode_results results;
Servo kafa;
bool otonom = false;
void ileri() { digitalWrite(IN1,HIGH); digitalWrite(IN2,LOW); digitalWrite(IN3,HIGH); digitalWrite(IN4,LOW); }
void geri() { digitalWrite(IN1,LOW); digitalWrite(IN2,HIGH); digitalWrite(IN3,LOW); digitalWrite(IN4,HIGH); }
void sola() { digitalWrite(IN1,LOW); digitalWrite(IN2,HIGH); digitalWrite(IN3,HIGH); digitalWrite(IN4,LOW); }
void saga() { digitalWrite(IN1,HIGH); digitalWrite(IN2,LOW); digitalWrite(IN3,LOW); digitalWrite(IN4,HIGH); }
void dur() { digitalWrite(IN1,LOW); digitalWrite(IN2,LOW); digitalWrite(IN3,LOW); digitalWrite(IN4,LOW); }
long mesafe() {
digitalWrite(TRIG, LOW); delayMicroseconds(2);
digitalWrite(TRIG, HIGH); delayMicroseconds(10);
digitalWrite(TRIG, LOW);
long sure = pulseIn(ECHO, HIGH, 30000);
return sure == 0 ? 400 : sure * 0.034 / 2;
}
void komut(char c) {
switch (c) {
case 'F': ileri(); break;
case 'B': geri(); break;
case 'L': sola(); break;
case 'R': saga(); break;
case 'S': dur(); break;
case 'A': otonom = true; break;
case 'M': otonom = false; dur(); break;
}
}
void setup() {
Serial.begin(9600);
pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT);
pinMode(TRIG, OUTPUT); pinMode(ECHO, INPUT);
irrecv.enableIRIn();
kafa.attach(SERVO_PIN); kafa.write(90);
dur();
}
void loop() {
if (Serial.available()) komut(Serial.read());
if (irrecv.decode(&results)) {
switch (results.value) {
case KOD_ILERI: otonom = false; ileri(); break;
case KOD_GERI: otonom = false; geri(); break;
case KOD_SOL: otonom = false; sola(); break;
case KOD_SAG: otonom = false; saga(); break;
case KOD_DUR: otonom = !otonom; dur(); break;
}
irrecv.resume();
}
if (otonom) {
if (mesafe() > 25) { ileri(); return; }
dur(); delay(150); geri(); delay(300); dur();
kafa.write(150); delay(350); long sol = mesafe();
kafa.write(30); delay(350); long sag = mesafe();
kafa.write(90); delay(250);
if (sol > sag) sola(); else saga();
delay(400); dur();
}
}
İpuçları
- HC-06 D0/D1'e bağlıyken kod yüklenmez — önce kabloları çıkarın, yükleyin, sonra takın.
- IR alıcı doğrudan güneş ışığında yanıltıcı sinyal alabilir; iç mekanda deneyin.
- Motor ters dönerse ilgili OUT uçlarını yer değiştirin.
Kitin içinde 2WD gövde, Arduino Uno, L298N, HC-06, IR kumanda seti, HC-SR04, SG90 servo, pil yuvası ve jumper kablolar dahil. Satın almak için 3'ü 1 Arada Robot Araba Kiti veya 18650 Pil Yuvalı versiyonu sayfasına göz atın.