Implemented 31kHz PWM output

This commit is contained in:
Aditya Pulipaka
2025-11-22 14:44:25 -06:00
parent 5c9a67e1d3
commit 28e33651a3
12 changed files with 51 additions and 14 deletions

View File

@@ -30,11 +30,22 @@ void PseudoSensorController::zeroPWMs() {
void PseudoSensorController::sendOutputs() {
if (!outputOn) zeroPWMs();
for (uint8_t i = 0; i < 4; i++) {
// The following assumes 0 direction drives repulsion and 1 direction drives attraction.
digitalWrite(pinMap[i].dir, PWMs[i] < 0);
analogWrite(pinMap[i].pwm, abs(PWMs[i]));
}
// Using direct register writes to maintain fast PWM mode set by setupFastPWM()
// FL: Pin 11 -> Timer 2A
digitalWrite(dirFL, PWMs[0] < 0);
OCR2A = abs(PWMs[0]);
// FR: Pin 3 -> Timer 2B
digitalWrite(dirFR, PWMs[1] < 0);
OCR2B = abs(PWMs[1]);
// BL: Pin 9 -> Timer 1A
digitalWrite(dirBL, PWMs[2] < 0);
OCR1A = abs(PWMs[2]);
// BR: Pin 10 -> Timer 1B
digitalWrite(dirBR, PWMs[3] < 0);
OCR1B = abs(PWMs[3]);
}
void PseudoSensorController::control() {