Энкодер с
Чип-ДипаЭнкодер включается в "rotator_features.h"
/* preset rotary encoder features and options */
#define FEATURE_AZ_PRESET_ENCODER // Uncomment for Rotary Encoder Azimuth Preset support
//#define FEATURE_EL_PRESET_ENCODER // Uncomment for Rotary Encoder Elevation Preset support (requires FEATURE_AZ_PRESET_ENCODER above)
#define OPTION_ENCODER_HALF_STEP_MODE
#define OPTION_ENCODER_ENABLE_PULLUPS // define to enable weak pullups on rotary encoder pins
#define OPTION_INCREMENTAL_ENCODER_PULLUPS // define to enable weak pullups on 3 phase incremental rotary encoder pins
#define OPTION_PRESET_ENCODER_RELATIVE_CHANGE // this makes the encoder(s) change the az or el in a relative fashion rather then store an absolute setting
#define OPTION_PRESET_ENCODER_0_360_DEGREES
Позволяет от текущего положения установить новое. Где-то через секунду после остановки вращения энкодера, начинается вращение на установленный азимут (пресет).
Так как включена эмуляция контроллера Yaesu GS-232B, то вся калибровка стандартными командами "O" и "F", по описанию GS-232B.
"Мертвая" точка у меня на 89 градусов, от нее начинается отсчет.
Почему-то возникла нелинейность в диапазоне 180-90 градусов. Разбегались показания на контроллере и на пульте. Скорректировал табличкой.
Включается здесь:
#define FEATURE_AZIMUTH_CORRECTION // correct the azimuth using a calibration table in rotator_settings.h
Табличка в rotator_settings.h:
#define AZIMUTH_CALIBRATION_FROM_ARRAY {0,91,120,150,178,211,238,266,296,326,355,386,417,448} /* these are in "raw" degrees, i.e. when going east past 360 degrees, add 360 degrees*/
#define AZIMUTH_CALIBRATION_TO_ARRAY {0,91,120,150,180,210,240,270,300,330,360,390,420,450}