#ifndef I2C_MOTOR_H #define I2C_MOTOR_H #include #include class I2CMotor { public: I2CMotor(); I2CMotor(uint8_t sda = 8, uint8_t scl = 3, uint32_t freq = 100000); void begin(); bool found(); uint8_t address(); String identify(); void setDeviceName(const char* newname); void setMinMax(uint8_t min_pwm, uint8_t max_pwm); void setMotorDirection(uint8_t motor, uint8_t dir); void setMotorSpeed(uint8_t motor, uint8_t speed_percent); void allStop(); // Renamed from emergencyStop // New: Set address at runtime void setAddress(uint8_t addr); // --- New functions for L298N motor control --- bool motorControl(uint8_t motor, uint8_t speed_percent, uint8_t direction); bool bothMotorsControl(uint8_t speedA, uint8_t dirA, uint8_t speedB, uint8_t dirB); void stopAllMotors(); private: uint8_t sda_, scl_; uint32_t freq_; uint8_t slave_addr_; uint8_t scanForMotorController(); String queryIdentification(uint8_t addr); }; #endif