Widget Rehberleri

Joystick Widget Kullanım Rehberi

MicroControlPanel Joystick widget'ı ile 2 eksenli kontrol yapın. Robot araba, pan-tilt kamera, XY motor kontrolü ve oyun kumandası senaryoları.

admin@microcontrolpanel.com 10 Temmuz 2025 6 görüntülenme

🕹️ Joystick Widget Nedir?

Joystick widget'ı, 2 eksenli (X ve Y) analog kontrol sağlar. Dokunmatik bir dairesel alan üzerinde parmağınızı kaydırarak -255 ile +255 arasında iki eksen değeri gönderir. Robot arabalar, pan-tilt kameralar ve motorlu sistemler için idealdir.

⚙️ Yapılandırma

AlanAçıklamaVarsayılan
minMinimum eksen değeri-255
maxMaksimum eksen değeri255
autoReturnBırakınca merkeze döntrue
deadzoneMerkezdeki ölü bölge yarıçapı10

Enerji maliyeti: 400⚡ | Kategori: Kontrol

📡 Veri Formatı

Joystick, X ve Y değerlerini birleşik string olarak gönderir: "X,Y"

Örnek değerler:
"0,0"       → Merkez (boşta)
"255,0"     → Tam sağ
"-255,0"    → Tam sol
"0,255"     → Tam yukarı
"128,-128"  → Sağ-aşağı çapraz

💻 Firmware Örneği — Robot Araba

#define MOTOR_L_FWD D1
#define MOTOR_L_BWD D2
#define MOTOR_R_FWD D3
#define MOTOR_R_BWD D4

MCP_WRITE(V0)
{
    String raw = param.asStr();
    int comma = raw.indexOf(',');
    int x = raw.substring(0, comma).toInt();   // Sol-Sağ
    int y = raw.substring(comma + 1).toInt();   // İleri-Geri

    // Diferansiyel sürüş hesaplama
    int leftSpeed  = constrain(y + x, -255, 255);
    int rightSpeed = constrain(y - x, -255, 255);

    // Sol motor
    if (leftSpeed > 0) {
        analogWrite(MOTOR_L_FWD, leftSpeed);
        analogWrite(MOTOR_L_BWD, 0);
    } else {
        analogWrite(MOTOR_L_FWD, 0);
        analogWrite(MOTOR_L_BWD, abs(leftSpeed));
    }

    // Sağ motor
    if (rightSpeed > 0) {
        analogWrite(MOTOR_R_FWD, rightSpeed);
        analogWrite(MOTOR_R_BWD, 0);
    } else {
        analogWrite(MOTOR_R_FWD, 0);
        analogWrite(MOTOR_R_BWD, abs(rightSpeed));
    }

    Serial.printf("Joy X:%d Y:%d | L:%d R:%d\n", x, y, leftSpeed, rightSpeed);
}

💻 Firmware Örneği — Pan-Tilt Kamera

#include <Servo.h>
Servo panServo, tiltServo;

MCP_WRITE(V0)
{
    String raw = param.asStr();
    int comma = raw.indexOf(',');
    int x = raw.substring(0, comma).toInt();
    int y = raw.substring(comma + 1).toInt();

    // -255..255 aralığını 0..180 dereceye dönüştür
    int pan  = map(x, -255, 255, 0, 180);
    int tilt = map(y, -255, 255, 0, 180);

    panServo.write(pan);
    tiltServo.write(tilt);
}

💡 Kullanım Senaryoları

  • Robot araba: İleri/geri/sağ/sol diferansiyel sürüş
  • Pan-tilt kamera: 2 eksenli kamera hareketi
  • Robotik kol: X-Y düzleminde hareket kontrolü
  • Drone: Yaw ve throttle kontrolü
💡 İpucu: autoReturn: true ayarı ile parmağınızı bıraktığınızda joystick merkeze döner ve "0,0" gönderir — böylece robot otomatik durur. deadzone değerini artırarak merkezde küçük titremeleri filtreleyebilirsiniz.

#Joystick #Widget #Robot #Motor #Kamera #Kontrol #MicroControlPanel #IoT #ESP8266 #ESP32