Bueno, pues lo he hecho con la librería TimerOne,
( no se si lo he echo bien)pero funciona sin problemas.
Pero el objetivo de este post para mi, es aprender, y me guastaría saber hacerlo sin la librería.
#include <TimerOne.h>
const int pinPwm = 9;
int pinPote = A0;
int pote;
unsigned long periodo = 500; // (500us que son 2Khz)
int duty = 512; // 50%
void setup()
{
pinMode(pinPwm, OUTPUT);
pinMode(pinPote, INPUT);
Timer1.initialize(periodo);
Timer1.pwm(9, duty);
}
void loop()
{
pote = analogRead(pinPote);
Timer1.setPeriod(periodo = map(pote, 0, 1023, 500000, 500));
}