Örnekler¶
Başlarken¶
Bu sayfa, probot-lib kütüphanesinin ana örneklerini tanıtır. Her örnek examples/ dizini altında bulunur.
Örnekleri denemeden önce:
- Kartınızı USB veya Wi-Fi üzerinden bağlayın
- Pin eşleşmelerini kendi donanımınıza göre güncelleyin
- PROBOT_WIFI_AP_PASSWORD makrosunu kendi şifrenizle değiştirin
Örnek Listesi¶
| Örnek | Konum | Açıklama |
|---|---|---|
| JoystickTest | examples/JoystickTest/ |
Joystick bağlantı ve eksen testi |
| MotorOpenLoopDemo | examples/MotorOpenLoopDemo/ |
Tek motor open-loop kontrol |
| IBT2MotorDemo | examples/IBT2MotorDemo/ |
IBT2 motor kontrolcü testi |
| TankDriveDemo | examples/command_based/TankDriveDemo/ |
Tank şasi sürüşü |
| MecanumDriveDemo | examples/command_based/MecanumDriveDemo/ |
Mecanum şasi sürüşü |
| AutonomousDemo | examples/command_based/AutonomousDemo/ |
Basit otonom akış |
| SliderDemo | examples/command_based/SliderDemo/ |
Slider mekanizma testi |
| ShooterDemo | examples/command_based/ShooterDemo/ |
Shooter mekanizma testi |
| TurretDemo | examples/command_based/TurretDemo/ |
Taret mekanizma testi |
JoystickTest¶
Ne yapar? Driver station bağlantısını ve joystick eksenlerini test eder.
Kullanım:
1. Kodu yükleyin
2. WiFi'ye bağlanın (Probot-XXXX)
3. http://192.168.4.1 adresinden joystick'i test edin
4. Serial monitörde eksen değerlerini görün
#define PROBOT_WIFI_AP_PASSWORD "TakimSifreniz"
#include <probot.h>
#include <probot/io/joystick_api.hpp>
void robotInit() {
Serial.begin(115200);
}
void teleopInit() {}
void teleopLoop() {
auto js = probot::io::joystick_api::makeDefault();
Serial.printf("LX:%.2f LY:%.2f RX:%.2f RY:%.2f\n",
js.getLeftX(), js.getLeftY(),
js.getRightX(), js.getRightY());
delay(100);
}
void autonomousInit() {}
void autonomousLoop() { delay(1000); }
MotorOpenLoopDemo¶
Ne yapar? Tek bir VNH5019 motor kontrolcüsünü joystick ile sürer.
Kullanım: 1. Motor pinlerini ayarlayın 2. Sol Y ekseni ile motoru kontrol edin
#define PROBOT_WIFI_AP_PASSWORD "TakimSifreniz"
#include <probot.h>
#include <probot/io/joystick_api.hpp>
#include <probot/devices/motors/boardoza_vnh5019_motor_controller.hpp>
static constexpr int INA = 1, INB = 2, PWM = 3;
static probot::motor::BoardozaVNH5019MotorController motor(INA, INB, PWM, -1, -1);
void robotInit() {
Serial.begin(115200);
motor.setPower(0.0f);
}
void teleopInit() {}
void teleopLoop() {
auto js = probot::io::joystick_api::makeDefault();
float power = js.getLeftY();
motor.setPower(power);
Serial.printf("Power: %.2f\n", power);
delay(20);
}
void autonomousInit() {}
void autonomousLoop() { delay(1000); }
TankDriveDemo¶
Ne yapar? İki motorlu tank şasisini joystick ile sürer.
Konum: examples/command_based/TankDriveDemo/
#define PROBOT_WIFI_AP_PASSWORD "TakimSifreniz"
#include <probot.h>
#include <probot/io/joystick_api.hpp>
#include <probot/command.hpp>
#include <probot/command/examples/tank_drive.hpp>
#include <probot/devices/motors/boardoza_vnh5019_motor_controller.hpp>
static constexpr int LEFT_INA = 1, LEFT_INB = 2, LEFT_PWM = 3;
static constexpr int RIGHT_INA = 4, RIGHT_INB = 5, RIGHT_PWM = 6;
static probot::motor::BoardozaVNH5019MotorController leftMotor(
LEFT_INA, LEFT_INB, LEFT_PWM, -1, -1);
static probot::motor::BoardozaVNH5019MotorController rightMotor(
RIGHT_INA, RIGHT_INB, RIGHT_PWM, -1, -1);
static probot::command::examples::TankDrive chassis(&leftMotor, &rightMotor);
void robotInit() {
Serial.begin(115200);
leftMotor.begin();
rightMotor.begin();
leftMotor.setBrakeMode(true);
rightMotor.setBrakeMode(true);
}
void teleopInit() {}
void teleopLoop() {
auto js = probot::io::joystick_api::makeDefault();
float left = js.getLeftY();
float right = js.getRightY();
chassis.drivePower(left, right);
Serial.printf("L:%.2f R:%.2f\n", left, right);
delay(20);
}
void autonomousInit() {}
void autonomousLoop() {
// Basit otonom: 2 saniye ileri, 1 saniye dönüş
static int state = 0;
static uint32_t t0 = millis();
uint32_t elapsed = millis() - t0;
switch (state) {
case 0:
chassis.drivePower(0.5f, 0.5f);
if (elapsed > 2000) { state = 1; t0 = millis(); }
break;
case 1:
chassis.drivePower(0.4f, -0.4f);
if (elapsed > 1000) { state = 2; }
break;
default:
chassis.stop();
break;
}
delay(20);
}
MecanumDriveDemo¶
Ne yapar? Dört motorlu mecanum şasisini joystick ile sürer.
Konum: examples/command_based/MecanumDriveDemo/
Özellikler: - Sol stick: İleri/geri ve yan kayma - Sağ stick X: Yerinde dönüş - Omnidirectional hareket
IBT2MotorDemo¶
Ne yapar? IBT2 (BTS7960) motor kontrolcüsünü test eder.
Konum: examples/IBT2MotorDemo/
IBT2, yüksek akım uygulamaları için uygundur. Pin bağlantısı VNH5019'dan farklıdır.
Sonraki Adımlar¶
- Temel örnekleri çalıştırarak bağlantıları doğrulayın
- Pin numaralarını kendi donanımınıza göre güncelleyin
- Mekanizma örneklerini (Slider, Shooter, Turret) inceleyin