New Motor Version
This commit is contained in:
1 parent
ddeba773a5
commit
39a14943b7
5 files changed
+307
-270
No files matched your search
+34
-2
@@ -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
@@ -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_;
|
||||
|
||||
Reference in new issue
Block a user