// file: test_151020.ino
//
// po castech linearni funkce
// pro 'i' z rozsahu 0..1023 prideli hodnoty 5..2997
//
// velice uzitecne s potenciometrem a casovacem 20ms dava zpozdeni
// 100ms..1min
// tested: n/*y

uint16_t calculate( uint16_t x)
{
  uint16_t result;

  x &= 0x3ff;

  if (x < 256)
  {
    result = ((x << 4) + (x << 2) + 1280) >> 8; //(20*x + 1280)/256
  }
  else if (x < 768)
  {
    result = ((x << 4) - (x << 1) - 2800) >> 5; //(14*x - 2800)/32
  }
  else
  {
    result = ((x << 6) - (x << 4) - (x << 2) - x - 32000) >> 2; //(43*x - 32000)/4
  }

  return (result);
}

uint16_t i, y;

void setup()
{
  Serial.begin(9600);
  for(i = 0; i < 1024; i++)
  {
    y = calculate( i);
    Serial.print(i);
    Serial.print(" ");
    Serial.print(y);
    Serial.println();
  }
}

void loop()
{
}
