Buenas a todos,
Ya que estaba curioseando el firmware Marlin para corregir un problema que tenía con la configuración de las temperaturas máximas y en encoder, me he puesto a curiosear porqué cuando giro un click del encoder el firmware me cambia en dos unidades la variable que estoy corrigiendo.
Me explico, si entro en la temperatura del nozzle y giro un click el encoder, me sube/baja 2ºC.
Lo mismo me pasaba cuando intentaba mover un eje, ajustar el feed rate o navegaba entre las opciones del menú (aunque en este último caso tenía que girar varios clicks del encoder para conseguir cambiar al siguiente ítem de menú.
Lo que he corregido es lo siguiente:
1º Hacer que el encoder cambie una unidad a cado paso que dá:
- Se añade esta línea en la fila 80 del archivo ultralcd.cpp:
#define ENCODER_SCALE 2
- Se va a la línea 892 (ahora 893, después de haber añadido la línea anterior) y se cambia:
encoderPosition += encoderDiff;
por:
encoderPosition += encoderDiff/ENCODER_SCALE;
Esto he tenido que hacerlo así puesto que el encoder de mi LCD avanza dos pasos cada click que hace.
2º Hacer que pase a la siguiente opción de menú con tan sólo un click del encoder:
- Se cambia el valor de la variable que hay en la línea 82 (ahora 82, después de haber añadido la línea de más arriba al código)
#define ENCODER_STEPS_PER_MENU_ITEM 1
Este valor lo podemos ajustar de forma se lo incrementamos disminuimos la sensibilidad para que haya que dar varios clicks para cambiar de línea de menú.
Espero que le sirva a más gente.
Un saludo,