int zaj=10;                             // a poti értékének (zajának) maximális ingadozása
int Poti;

void setup () {
pinMode(9, OUTPUT);
  analogReference(DEFAULT);             // "DEFAULT" : a Vcc (+5V) a referencia feszültség
  TCCR1A = 0x82;                        // pins 9 fast 16 bit
  TCCR1B = 0x1A; }                      // előosztó 8

void loop () {
int ujPoti=analogRead(A0);             // új Érték beolvasása
if(abs(Poti - ujPoti) > zaj)           // a különbség anszolutértéke nagyobb a zajnál, akkor
{
 Poti=ujPoti;                          // a Poti értéke legyen egyenlő az újPoti-val
} 
uint32_t u32_Poti=Poti;                // kibővítés 32 bitre, legyen a szám tartománya 0-1023, ami az ADC input tartománya ATMEGA328-on
uint32_t freq = 50 * u32_Poti + 100;   // Lineáris leképzés a 100->50000 tartományra úgy, hogy a részeredmények is elférnek u32 számábrázolásban
uint32_t T = (2000000ul) / freq;       // periódusidő: T=1/freq. 1 helyett a számláló frekvenciáját kell írni, ami 16MHz/8 = 2000000 (ul utótag: azt jelöljük vele, hogy ez egy 32 bites konstans)
ICR1 = (uint16_t)T;                     
OCR1A = (uint16_t)T/2;}                // 50% kitöltéssel
