// 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() { }