....
// left wheel motor
pinMode(pinMotorEnable, OUTPUT);
digitalWrite(pinMotorEnable, gearsDriverChip.enableActive);
pinMode(pinMotorLeftPWM, OUTPUT);
pinMode(pinMotorLeftDir, OUTPUT);
pinMode(pinMotorLeftSense, INPUT);
pinMode(pinMotorLeftFault, INPUT);
pinMode(pinRemoteSwitch, OUTPUT); //Brake für JYQD 2021 bei 0% PWM
// right wheel motor
pinMode(pinMotorRightPWM, OUTPUT);
pinMode(pinMotorRightDir, OUTPUT);
pinMode(pinMotorRightSense, INPUT);
pinMode(pinMotorRightFault, INPUT);
pinMode(pinRemoteSpeed, OUTPUT); //Brake für JYQD 2021 bei 0% PWM
....
void AmMotorDriver::setMotorPwm(int leftPwm, int rightPwm, int mowPwm){
// remember speed sign during zero-transition
if (leftPwm < 0) leftSpeedSign = -1;
if (leftPwm > 0) leftSpeedSign = 1;
if (rightPwm < 0) rightSpeedSign = -1;
if (rightPwm > 0) rightSpeedSign = 1;
if (mowPwm < 0) mowSpeedSign = -1;
if (mowPwm > 0) mowSpeedSign = 1;
// limit pwm to ramp if required
if (gearsDriverChip.usePwmRamp){
int deltaLeftPwm = leftPwm-lastLeftPwm;
leftPwm = leftPwm + min(1, max(-1, deltaLeftPwm));
int deltaRightPwm = rightPwm-lastRightPwm;
rightPwm = rightPwm + min(1, max(-1, deltaRightPwm));
}
if (mowDriverChip.usePwmRamp){
int deltaMowPwm = mowPwm-lastMowPwm;
mowPwm = mowPwm + min(1, max(-1, deltaMowPwm));
}
// remember last PWM values
lastLeftPwm = leftPwm;
lastRightPwm = rightPwm;
lastMowPwm = mowPwm;
// apply motor PWMs
setMotorDriver(pinMotorLeftDir, pinMotorLeftPWM, leftPwm, gearsDriverChip, leftSpeedSign);
setMotorDriver(pinMotorRightDir, pinMotorRightPWM, rightPwm, gearsDriverChip, rightSpeedSign);
setMotorDriver(pinMotorMowDir, pinMotorMowPWM, mowPwm, mowDriverChip, mowSpeedSign);
// disable driver at zero speed (brake function)
bool enableGears = gearsDriverChip.enableActive;
bool enableMow = mowDriverChip.enableActive;
if (gearsDriverChip.disableAtPwmZeroSpeed){
if ((leftPwm == 0) && (rightPwm == 0)){
enableGears = !gearsDriverChip.enableActive;
}
digitalWrite(pinMotorEnable, enableGears);
}
if (mowDriverChip.disableAtPwmZeroSpeed){
if (mowPwm == 0) {
if (mowDriverChip.disableAtPwmZeroSpeed){
enableMow = !mowDriverChip.enableActive;
}
}
digitalWrite(pinMotorMowEnable, enableMow);
}
//Brake über RC Buchse für die JYQD 2021
if (leftPwm == 0) digitalWrite(pinRemoteSwitch, HIGH);
else digitalWrite(pinRemoteSwitch, LOW);
if (rightPwm == 0) digitalWrite(pinRemoteSpeed, HIGH);
else digitalWrite(pinRemoteSpeed, LOW);
//ENDE
}