Manolo gracias por la respuesta y por la molestia en ver los códigos adjuntados.
Respecto a tus comentarios:
Lo de la lectura de la EEprom en el setup, evidentemente tienes razón. Ya lo cambio para las próximas pruebas.
No obstante, dentro de la función de ajuste también se accede a la eeprom, en este caso para guardar los valores. Entiendo que sería bueno antes de empezar a grabar el deshabilitar las interrupciones y después del guardado pues volverlas a activar.
Respecto a llamar de forma continua a la función pwmout dentro del loop, la he dejado de este modo porque asi se encuentra en el fichero original el cual está funcionando correctamente.
Y para finalizar la comunicación I2C. Se están utilizando los pines A4(SDA) y A5(SCL) y está claro que consume tiempo el presentar los datos en la pantalla y que seguro que hay interrupciones en ese proceso. De ahí el problema que creo que no se actualiza correctamente el PID con los valores ajustados.
Lo que pienso es que dentro de la parte de la inicialización, después de dar unos valores fijos para kp,ki y kd se crea el objeto del PID con la linea: PID myPID(&input, &output, &setpoint, kp, ki, kd, DIRECT);
Asi que entiendo que es ahí donde se establecen los valores del pid y aunque después en el loop dentro de la función de ajuste se creen nuevos valores de acuerdo a lo leído de los potenciómetros pues ya no se actualiza el pid con lo nuevos valores.
¿Cómo se podrían actualizar esos valores? ¿Alguna idea?
Desde el punto de vista de casi novato que soy con Arduino, ¿Cómo puedo realizar esa labor de presentar los datos en la pantalla sin que interfiera en los valores del PID?
F.