New Motor Version

This commit is contained in:
fatimaxsen committed 2025-05-18 13:38:58 +03:00
1 parent ddeba773a5
commit 39a14943b7
5 files changed
+307 -270

No files matched your search

+34 -2
View File
@@ -50,12 +50,18 @@ void I2CMotor::setMotorSpeed(uint8_t motor, uint8_t speed_percent) {
Wire.endTransmission();
}
void I2CMotor::emergencyStop() {
// Renamed from emergencyStop
void I2CMotor::allStop() {
Wire.beginTransmission(slave_addr_);
Wire.write(0x05);
Wire.endTransmission();
}
// New: Set address at runtime
void I2CMotor::setAddress(uint8_t addr) {
slave_addr_ = addr;
}
uint8_t I2CMotor::scanForMotorController() {
for (uint8_t addr = 1; addr < 127; addr++) {
Wire.beginTransmission(addr);
@@ -100,4 +106,30 @@ String I2CMotor::queryIdentification(uint8_t addr) {
Serial.println(response);
return response;
}
// --- New functions for L298N motor control ---
bool I2CMotor::motorControl(uint8_t motor, uint8_t speed_percent, uint8_t direction) {
if (!found()) return false;
Wire.beginTransmission(slave_addr_);
Wire.write(0x10); // CMD_MOTOR_CTRL
Wire.write(motor);
Wire.write(speed_percent);
Wire.write(direction);
return Wire.endTransmission() == 0;
}
bool I2CMotor::bothMotorsControl(uint8_t speedA, uint8_t dirA, uint8_t speedB, uint8_t dirB) {
if (!found()) return false;
Wire.beginTransmission(slave_addr_);
Wire.write(0x11); // CMD_BOTH_CTRL
Wire.write(speedA);
Wire.write(dirA);
Wire.write(speedB);
Wire.write(dirB);
return Wire.endTransmission() == 0;
}
void I2CMotor::stopAllMotors() {
bothMotorsControl(0, 0, 0, 0);
}
+9 -1
View File
@@ -16,7 +16,15 @@ public:
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 emergencyStop();
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_;