Arduino ve Drone Programlaması: İlk Hareketleriniz
FC, kendi havası olan bir sistem. Ama siz de Arduino veya başka mikrodenetleyici ile sensör okuyabilir, servo kontrol edebilirsiniz.
İÇİNDEKİLER
Arduino ile Drone Sensör Okuma
Basit PWM okuma örneği:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#define RC_PIN 3 void setup() { Serial.begin(9600); pinMode(RC_PIN, INPUT); } void loop() { unsigned long pulseWidth = pulseIn(RC_PIN, HIGH); Serial.println(pulseWidth); // 1000-2000 microseconds delay(50); } |
Bu kod, RC verici sinyalini 1000-2000 microsecond aralığında okur.
Servo Kontrol (Motor PWM)
ESC’ye PWM sinyali göndermek:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include <Servo.h> Servo motor1; void setup() { motor1.attach(9); // Pin 9 motor1.writeMicroseconds(1000); // Min throttle } void loop() { // Throttle 1000-2000 aralığında motor1.writeMicroseconds(1500); // 50% hızı delay(1000); } |
İleri: IMU Sensör Okuma
MPU6050 (gyro + accelerometer):
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include "MPU6050.h" MPU6050 mpu; void setup() { Serial.begin(115200); mpu.initialize(); } void loop() { int16_t ax, ay, az; int16_t gx, gy, gz; mpu.getAcceleration(&ax, &ay, &az); mpu.getRotation(&gx, &gy, &gz); Serial.print("Accel: "); Serial.println(ax); } |
Basit PID Kontrol
İleri seviye, ama yapı basit:
|
1 2 3 4 5 6 7 8 |
float error = setpoint - measured; float p = Kp * error; float i = Ki * (i + error); float d = Kd * (error - lastError); float output = p + i + d; lastError = error; |
Uyarılar
⚠️ Başlangıçta, FC firmware’i (Betaflight) yeterlidir. ⚠️ Arduino ile kendi kontrol yazmak ileri seviye. ⚠️ Hata yaparsan drone kontrol kaybedebilir.
🎯 Özet
✅ PWM okuma: pulseIn() ✅ Motor kontrol: Servo library ✅ IMU okuma: MPU6050 library ✅ PID: Manual implementasyon

Geri bildirim: Sıfırdan İHA Yapımı: Tam Başlangıç Rehberi (2026) - MÜHENDİSİN EVİ