add first coarse stab at paddle anti-flicker

This commit is contained in:
thrust26 2019-05-08 20:12:48 +02:00
parent 7ed4105e79
commit 8e68a51ed4
1 changed files with 11 additions and 0 deletions

View File

@ -260,13 +260,24 @@ void Paddles::update()
bool sa_changed = false; bool sa_changed = false;
int sa_xaxis = myEvent.get(myP0AxisValue); int sa_xaxis = myEvent.get(myP0AxisValue);
int sa_yaxis = myEvent.get(myP1AxisValue); int sa_yaxis = myEvent.get(myP1AxisValue);
const double factor1 = 0.2; // TODO: configurable
const double factor2 = 1.0 / 256;
if(abs(myLastAxisX - sa_xaxis) > 10) if(abs(myLastAxisX - sa_xaxis) > 10)
{ {
// anti jitter
double dFactor = std::pow(factor1, 1 / (abs(sa_xaxis - myLastAxisX) * factor2));
sa_xaxis = sa_xaxis * dFactor + myLastAxisX * (1 - dFactor);
setPin(AnalogPin::Nine, Int32(MAX_RESISTANCE * ((32767 - Int16(sa_xaxis)) / 65536.0))); setPin(AnalogPin::Nine, Int32(MAX_RESISTANCE * ((32767 - Int16(sa_xaxis)) / 65536.0)));
sa_changed = true; sa_changed = true;
} }
if(abs(myLastAxisY - sa_yaxis) > 10) if(abs(myLastAxisY - sa_yaxis) > 10)
{ {
// anti jitter
double dFactor = std::pow(factor1, 1 / (abs(sa_yaxis - myLastAxisY) * factor2));
sa_yaxis = sa_yaxis * dFactor + myLastAxisY * (1 - dFactor);
setPin(AnalogPin::Five, Int32(MAX_RESISTANCE * ((32767 - Int16(sa_yaxis)) / 65536.0))); setPin(AnalogPin::Five, Int32(MAX_RESISTANCE * ((32767 - Int16(sa_yaxis)) / 65536.0)));
sa_changed = true; sa_changed = true;
} }