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ı.
🕹️ 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
| Alan | Açıklama | Varsayılan |
|---|---|---|
min | Minimum eksen değeri | -255 |
max | Maksimum eksen değeri | 255 |
autoReturn | Bırakınca merkeze dön | true |
deadzone | Merkezdeki ö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: trueayarı ile parmağınızı bıraktığınızda joystick merkeze döner ve"0,0"gönderir — böylece robot otomatik durur.deadzonedeğerini artırarak merkezde küçük titremeleri filtreleyebilirsiniz.
#Joystick
#Widget
#Robot
#Motor
#Kamera
#Kontrol
#MicroControlPanel
#IoT
#ESP8266
#ESP32