#ifndef MOTOR_CONTROL_H
#define MOTOR_CONTROL_H

#include "config.h"
#include <Arduino.h>

// 如果使用ESP32的ledcWrite功能进行PWM调速
#if defined(ESP32)
#include <ESP32Servo.h>
#define PWM_CHANNEL_LEFT 0  // ESP32 LEDC通道 0-15
#define PWM_CHANNEL_RIGHT 1 // ESP32 LEDC通道
#define PWM_FREQUENCY 5000  // PWM频率 (Hz)
#define PWM_RESOLUTION 8    // PWM分辨率 (8位: 0-255)
#else // 其他板子可能使用 analogWrite
#include <Servo.h>
#endif

void motor_setup();

// 基本电机控制
void motor_move_forward(int speed); // speed: 0-255 for PWM
void motor_move_backward(int speed);
void motor_stop();

// 转向控制 (TT电机差速 + 舵机辅助)
// speed: 基础速度, turn_intensity: 转向强度/差速程度 (0-1.0), steer_angle: 舵机角度
void motor_turn_left(int speed, float turn_intensity, int steer_angle);
void motor_turn_right(int speed, float turn_intensity, int steer_angle);
void motor_set_raw_speeds(int left_speed, int right_speed); // 直接设置左右轮速度（可以是负数表示反转）

// 舵机控制
void servo_attach();
void servo_set_angle(int angle); // angle: 通常0-180度
void servo_center();
void servo_detach();

#endif // MOTOR_CONTROL_H 