+ if (differences[n] > 16)
+ new_pwm -= 2;
+ else if (differences[n] > 4)
+ new_pwm--;
+ else if (differences[n] < -16)
+ new_pwm += 2;
+ else if (differences[n] < -4)
+ new_pwm++;
+ // new_pwm -= differences[n] >> 3;
+
+ if (new_pwm == old_pwm)
+ return;
+
+ differences[n] = 0;
+
+ if (new_pwm > (int16_t)pwm_max[n]) {
+ // FIXME: disconnected?