mirror of
https://github.com/k3ng/k3ng_rotator_controller.git
synced 2025-01-23 21:08:04 +00:00
2017.08.14.01
Added \+ command which switched LCD azimuth display mode between normal, raw, and +overlap modes
This commit is contained in:
parent
31662cbc40
commit
9785ea8eca
@ -304,6 +304,9 @@
|
||||
2017.08.02.01
|
||||
FEATURE_AUTOPARK created and documented here https://github.com/k3ng/k3ng_rotator_controller/wiki/705-Park-and-AutoPark
|
||||
|
||||
2017.08.14.01
|
||||
Added \+ command which switched LCD azimuth display mode between normal, raw, and +overlap modes
|
||||
|
||||
All library files should be placed in directories likes \sketchbook\libraries\library1\ , \sketchbook\libraries\library2\ , etc.
|
||||
Anything rotator_*.* should be in the ino directory!
|
||||
|
||||
@ -313,7 +316,7 @@
|
||||
|
||||
*/
|
||||
|
||||
#define CODE_VERSION "2017.08.02.01"
|
||||
#define CODE_VERSION "2017.08.14.01"
|
||||
|
||||
#include <avr/pgmspace.h>
|
||||
#include <EEPROM.h>
|
||||
@ -542,6 +545,7 @@ struct config_t {
|
||||
float clock_timezone_offset;
|
||||
byte autopark_active;
|
||||
unsigned int autopark_time_minutes;
|
||||
byte azimuth_display_mode;
|
||||
} configuration;
|
||||
|
||||
|
||||
@ -3256,11 +3260,31 @@ void update_display(){
|
||||
#if defined(OPTION_DISPLAY_HEADING)
|
||||
#if !defined(FEATURE_ELEVATION_CONTROL) // ---------------- az only -----------------------------------
|
||||
strcpy(workstring,AZIMUTH_STRING);
|
||||
dtostrf(azimuth / LCD_HEADING_MULTIPLIER, 1, LCD_DECIMAL_PLACES, workstring2);
|
||||
switch(configuration.azimuth_display_mode){
|
||||
case AZ_DISPLAY_MODE_NORMAL:
|
||||
case AZ_DISPLAY_MODE_OVERLAP_PLUS:
|
||||
dtostrf(azimuth / LCD_HEADING_MULTIPLIER, 1, LCD_DECIMAL_PLACES, workstring2);
|
||||
break;
|
||||
case AZ_DISPLAY_MODE_RAW:
|
||||
dtostrf(raw_azimuth / LCD_HEADING_MULTIPLIER, 1, LCD_DECIMAL_PLACES, workstring2);
|
||||
break;
|
||||
}
|
||||
#ifdef OPTION_LCD_HEADING_FIELD_FIXED_DECIMAL_PLACE
|
||||
if ((azimuth/ LCD_HEADING_MULTIPLIER) < 100){strcat(workstring," ");}
|
||||
if ((azimuth/ LCD_HEADING_MULTIPLIER) < 10){strcat(workstring," ");}
|
||||
#endif //OPTION_LCD_HEADING_FIELD_FIXED_DECIMAL_PLACE
|
||||
switch(configuration.azimuth_display_mode){
|
||||
case AZ_DISPLAY_MODE_NORMAL:
|
||||
case AZ_DISPLAY_MODE_OVERLAP_PLUS:
|
||||
if ((azimuth/ LCD_HEADING_MULTIPLIER) < 100){strcat(workstring," ");}
|
||||
if ((azimuth/ LCD_HEADING_MULTIPLIER) < 10){strcat(workstring," ");}
|
||||
break;
|
||||
case AZ_DISPLAY_MODE_RAW:
|
||||
if ((raw_azimuth/ LCD_HEADING_MULTIPLIER) < 100){strcat(workstring," ");}
|
||||
if ((raw_azimuth/ LCD_HEADING_MULTIPLIER) < 10){strcat(workstring," ");}
|
||||
break;
|
||||
}
|
||||
#endif //OPTION_LCD_HEADING_FIELD_FIXED_DECIMAL_PLACE
|
||||
if ((configuration.azimuth_display_mode == AZ_DISPLAY_MODE_OVERLAP_PLUS) && ((raw_azimuth/LCD_HEADING_MULTIPLIER) > ANALOG_AZ_OVERLAP_DEGREES)){
|
||||
strcat(workstring,"+");
|
||||
}
|
||||
strcat(workstring,workstring2);
|
||||
strcat(workstring,DISPLAY_DEGREES_STRING);
|
||||
k3ngdisplay.print_center_fixed_field_size(workstring,LCD_HEADING_ROW-1,LCD_HEADING_FIELD_SIZE);
|
||||
@ -3274,11 +3298,31 @@ void update_display(){
|
||||
#else
|
||||
strcpy(workstring,AZ_SPACE_STRING);
|
||||
#endif // efined(FEATURE_ONE_DECIMAL_PLACE_HEADINGS) || defined(FEATURE_TWO_DECIMAL_PLACE_HEADINGS)
|
||||
dtostrf(azimuth/ LCD_HEADING_MULTIPLIER, 3, LCD_DECIMAL_PLACES, workstring2);
|
||||
switch(configuration.azimuth_display_mode){
|
||||
case AZ_DISPLAY_MODE_NORMAL:
|
||||
case AZ_DISPLAY_MODE_OVERLAP_PLUS:
|
||||
dtostrf(azimuth / LCD_HEADING_MULTIPLIER, 3, LCD_DECIMAL_PLACES, workstring2);
|
||||
break;
|
||||
case AZ_DISPLAY_MODE_RAW:
|
||||
dtostrf(raw_azimuth / LCD_HEADING_MULTIPLIER, 3, LCD_DECIMAL_PLACES, workstring2);
|
||||
break;
|
||||
}
|
||||
#ifdef OPTION_LCD_HEADING_FIELD_FIXED_DECIMAL_PLACE
|
||||
if ((azimuth/ LCD_HEADING_MULTIPLIER) < 100){strcat(workstring," ");}
|
||||
if ((azimuth/ LCD_HEADING_MULTIPLIER) < 10){strcat(workstring," ");}
|
||||
switch(configuration.azimuth_display_mode){
|
||||
case AZ_DISPLAY_MODE_NORMAL:
|
||||
case AZ_DISPLAY_MODE_OVERLAP_PLUS:
|
||||
if ((azimuth/ LCD_HEADING_MULTIPLIER) < 100){strcat(workstring," ");}
|
||||
if ((azimuth/ LCD_HEADING_MULTIPLIER) < 10){strcat(workstring," ");}
|
||||
break;
|
||||
case AZ_DISPLAY_MODE_RAW:
|
||||
if ((raw_azimuth/ LCD_HEADING_MULTIPLIER) < 100){strcat(workstring," ");}
|
||||
if ((raw_azimuth/ LCD_HEADING_MULTIPLIER) < 10){strcat(workstring," ");}
|
||||
break;
|
||||
}
|
||||
#endif //OPTION_LCD_HEADING_FIELD_FIXED_DECIMAL_PLACE
|
||||
if ((configuration.azimuth_display_mode == AZ_DISPLAY_MODE_OVERLAP_PLUS) && ((raw_azimuth/LCD_HEADING_MULTIPLIER) > ANALOG_AZ_OVERLAP_DEGREES)){
|
||||
strcat(workstring,"+");
|
||||
}
|
||||
strcat(workstring,workstring2);
|
||||
#if !defined(FEATURE_ONE_DECIMAL_PLACE_HEADINGS) && !defined(FEATURE_TWO_DECIMAL_PLACE_HEADINGS)
|
||||
if (LCD_COLUMNS > 14) {
|
||||
@ -3323,11 +3367,31 @@ void update_display(){
|
||||
// OPTION_DISPLAY_HEADING_AZ_ONLY - show heading ***********************************************************************************
|
||||
#if defined(OPTION_DISPLAY_HEADING_AZ_ONLY)
|
||||
strcpy(workstring,AZIMUTH_STRING);
|
||||
dtostrf(azimuth / LCD_HEADING_MULTIPLIER, 1, LCD_DECIMAL_PLACES, workstring2);
|
||||
switch(configuration.azimuth_display_mode){
|
||||
case AZ_DISPLAY_MODE_NORMAL:
|
||||
case AZ_DISPLAY_MODE_OVERLAP_PLUS:
|
||||
dtostrf(azimuth / LCD_HEADING_MULTIPLIER, 1, LCD_DECIMAL_PLACES, workstring2);
|
||||
break;
|
||||
case AZ_DISPLAY_MODE_RAW:
|
||||
dtostrf(raw_azimuth / LCD_HEADING_MULTIPLIER, 1, LCD_DECIMAL_PLACES, workstring2);
|
||||
break;
|
||||
}
|
||||
#ifdef OPTION_LCD_HEADING_FIELD_FIXED_DECIMAL_PLACE
|
||||
if ((azimuth/ LCD_HEADING_MULTIPLIER) < 100){strcat(workstring," ");}
|
||||
if ((azimuth/ LCD_HEADING_MULTIPLIER) < 10){strcat(workstring," ");}
|
||||
#endif //OPTION_LCD_HEADING_FIELD_FIXED_DECIMAL_PLACE
|
||||
switch(configuration.azimuth_display_mode){
|
||||
case AZ_DISPLAY_MODE_NORMAL:
|
||||
case AZ_DISPLAY_MODE_OVERLAP_PLUS:
|
||||
if ((azimuth/ LCD_HEADING_MULTIPLIER) < 100){strcat(workstring," ");}
|
||||
if ((azimuth/ LCD_HEADING_MULTIPLIER) < 10){strcat(workstring," ");}
|
||||
break;
|
||||
case AZ_DISPLAY_MODE_RAW:
|
||||
if ((raw_azimuth/ LCD_HEADING_MULTIPLIER) < 100){strcat(workstring," ");}
|
||||
if ((raw_azimuth/ LCD_HEADING_MULTIPLIER) < 10){strcat(workstring," ");}
|
||||
break;
|
||||
}
|
||||
#endif //OPTION_LCD_HEADING_FIELD_FIXED_DECIMAL_PLACE
|
||||
if ((configuration.azimuth_display_mode == AZ_DISPLAY_MODE_OVERLAP_PLUS) && ((raw_azimuth/LCD_HEADING_MULTIPLIER) > ANALOG_AZ_OVERLAP_DEGREES)){
|
||||
strcat(workstring,"+");
|
||||
}
|
||||
strcat(workstring,workstring2);
|
||||
strcat(workstring,DISPLAY_DEGREES_STRING);
|
||||
k3ngdisplay.print_center_fixed_field_size(workstring,LCD_AZ_ONLY_HEADING_ROW-1,LCD_AZ_ONLY_HEADING_FIELD_SIZE);
|
||||
@ -3374,7 +3438,18 @@ void update_display(){
|
||||
strcpy(workstring,CCW_STRING);
|
||||
}
|
||||
strcat(workstring," ");
|
||||
dtostrf(target_azimuth / LCD_HEADING_MULTIPLIER, 1, LCD_DECIMAL_PLACES, workstring2);
|
||||
switch(configuration.azimuth_display_mode){
|
||||
case AZ_DISPLAY_MODE_NORMAL:
|
||||
case AZ_DISPLAY_MODE_OVERLAP_PLUS:
|
||||
dtostrf(target_azimuth / LCD_HEADING_MULTIPLIER, 1, LCD_DECIMAL_PLACES, workstring2);
|
||||
break;
|
||||
case AZ_DISPLAY_MODE_RAW:
|
||||
dtostrf(target_raw_azimuth / LCD_HEADING_MULTIPLIER, 1, LCD_DECIMAL_PLACES, workstring2);
|
||||
break;
|
||||
}
|
||||
if ((configuration.azimuth_display_mode == AZ_DISPLAY_MODE_OVERLAP_PLUS) && ((raw_azimuth/LCD_HEADING_MULTIPLIER) > ANALOG_AZ_OVERLAP_DEGREES)){
|
||||
strcat(workstring,"+");
|
||||
}
|
||||
strcat(workstring,workstring2);
|
||||
strcat(workstring,DISPLAY_DEGREES_STRING);
|
||||
} else {
|
||||
@ -3463,7 +3538,18 @@ void update_display(){
|
||||
strcat(workstring,CCW_STRING);
|
||||
}
|
||||
strcat(workstring," ");
|
||||
dtostrf(target_azimuth / LCD_HEADING_MULTIPLIER, 1, LCD_DECIMAL_PLACES, workstring2);
|
||||
switch(configuration.azimuth_display_mode){
|
||||
case AZ_DISPLAY_MODE_NORMAL:
|
||||
case AZ_DISPLAY_MODE_OVERLAP_PLUS:
|
||||
dtostrf(target_azimuth / LCD_HEADING_MULTIPLIER, 1, LCD_DECIMAL_PLACES, workstring2);
|
||||
break;
|
||||
case AZ_DISPLAY_MODE_RAW:
|
||||
dtostrf(target_raw_azimuth / LCD_HEADING_MULTIPLIER, 1, LCD_DECIMAL_PLACES, workstring2);
|
||||
break;
|
||||
}
|
||||
if ((configuration.azimuth_display_mode == AZ_DISPLAY_MODE_OVERLAP_PLUS) && ((raw_azimuth/LCD_HEADING_MULTIPLIER) > ANALOG_AZ_OVERLAP_DEGREES)){
|
||||
strcat(workstring,"+");
|
||||
}
|
||||
strcat(workstring,workstring2);
|
||||
strcat(workstring,DISPLAY_DEGREES_STRING);
|
||||
row_override[LCD_STATUS_ROW] = 1;
|
||||
@ -4070,6 +4156,8 @@ void read_settings_from_eeprom(){
|
||||
debug.print(configuration.autopark_active);
|
||||
debug.print("autopark_time_minutes:");
|
||||
debug.print(configuration.autopark_time_minutes);
|
||||
debug.print("azimuth_display_mode:");
|
||||
debug.print(configuration.azimuth_display_mode);
|
||||
debug.println("");
|
||||
}
|
||||
#endif // DEBUG_EEPROM
|
||||
@ -4160,6 +4248,7 @@ void initialize_eeprom_with_defaults(){
|
||||
configuration.clock_timezone_offset = 0;
|
||||
configuration.autopark_active = 0;
|
||||
configuration.autopark_time_minutes = 0;
|
||||
configuration.azimuth_display_mode = AZ_DISPLAY_MODE_NORMAL;
|
||||
|
||||
#ifdef FEATURE_ELEVATION_CONTROL
|
||||
configuration.last_elevation = elevation;
|
||||
@ -10912,6 +11001,24 @@ byte process_backslash_command(byte input_buffer[], int input_buffer_index, byte
|
||||
break;
|
||||
#endif
|
||||
|
||||
case '+':
|
||||
if (configuration.azimuth_display_mode == AZ_DISPLAY_MODE_OVERLAP_PLUS){
|
||||
configuration.azimuth_display_mode = AZ_DISPLAY_MODE_NORMAL;
|
||||
strcpy(return_string, "Azimuth Display Mode: Normal");
|
||||
} else {
|
||||
if (configuration.azimuth_display_mode == AZ_DISPLAY_MODE_RAW){
|
||||
configuration.azimuth_display_mode = AZ_DISPLAY_MODE_OVERLAP_PLUS;
|
||||
strcpy(return_string, "Azimuth Display Mode: +Overlap");
|
||||
} else {
|
||||
if (configuration.azimuth_display_mode == AZ_DISPLAY_MODE_NORMAL){
|
||||
configuration.azimuth_display_mode = AZ_DISPLAY_MODE_RAW;
|
||||
strcpy(return_string, "Azimuth Display Mode: Raw Degrees");
|
||||
}
|
||||
}
|
||||
}
|
||||
configuration_dirty = 1;
|
||||
break;
|
||||
|
||||
// zzzzzzz
|
||||
|
||||
// TODO : one big status query command
|
||||
|
@ -163,5 +163,9 @@
|
||||
#define AUTOCORRECT_WATCHING_AZ 3
|
||||
#define AUTOCORRECT_WATCHING_EL 4
|
||||
|
||||
#define AZ_DISPLAY_MODE_NORMAL 0
|
||||
#define AZ_DISPLAY_MODE_RAW 1
|
||||
#define AZ_DISPLAY_MODE_OVERLAP_PLUS 2
|
||||
|
||||
/* ------end of macros ------- */
|
||||
|
||||
|
@ -16,8 +16,8 @@
|
||||
#define FEATURE_YAESU_EMULATION // uncomment this for Yaesu GS-232 emulation on control port
|
||||
// #define FEATURE_EASYCOM_EMULATION // Easycom protocol emulation on control port (undefine FEATURE_YAESU_EMULATION above)
|
||||
|
||||
#define FEATURE_MOON_TRACKING
|
||||
#define FEATURE_SUN_TRACKING
|
||||
// #define FEATURE_MOON_TRACKING
|
||||
// #define FEATURE_SUN_TRACKING
|
||||
#define FEATURE_CLOCK
|
||||
#define FEATURE_GPS
|
||||
#define FEATURE_RTC_DS1307
|
||||
@ -133,16 +133,16 @@
|
||||
// #define OPTION_DISPLAY_HHMM_CLOCK // display HH:MM clock (set position with #define LCD_HHMM_CLOCK_POSITION)
|
||||
// #define OPTION_DISPLAY_HHMMSS_CLOCK // display HH:MM:SS clock (set position with #define LCD_HHMMSS_CLOCK_POSITION)
|
||||
// #define OPTION_DISPLAY_ALT_HHMM_CLOCK_AND_MAIDENHEAD // display alternating HH:MM clock and maidenhead on LCD row 1 (set position with #define LCD_HHMMCLOCK_POSITION)
|
||||
// #define OPTION_DISPLAY_CONSTANT_HHMMSS_CLOCK_AND_MAIDENHEAD // display constant HH:MM:SS clock and maidenhead on LCD row 1 (set position with #define LCD_CONSTANT_HHMMSSCLOCK_MAIDENHEAD_POSITION)
|
||||
#define OPTION_DISPLAY_BIG_CLOCK // display date & time clock (set row with #define LCD_BIG_CLOCK_ROW)
|
||||
#define OPTION_DISPLAY_CONSTANT_HHMMSS_CLOCK_AND_MAIDENHEAD // display constant HH:MM:SS clock and maidenhead on LCD row 1 (set position with #define LCD_CONSTANT_HHMMSSCLOCK_MAIDENHEAD_POSITION)
|
||||
// #define OPTION_DISPLAY_BIG_CLOCK // display date & time clock (set row with #define LCD_BIG_CLOCK_ROW)
|
||||
//#define OPTION_CLOCK_ALWAYS_HAVE_HOUR_LEADING_ZERO
|
||||
#define OPTION_DISPLAY_GPS_INDICATOR // display GPS indicator on LCD - set position with LCD_GPS_INDICATOR_POSITION and LCD_GPS_INDICATOR_ROW
|
||||
#define OPTION_DISPLAY_MOON_TRACKING_CONTINUOUSLY
|
||||
// #define OPTION_DISPLAY_MOON_TRACKING_CONTINUOUSLY
|
||||
//#define OPTION_DISPLAY_DIRECTION_STATUS // N, W, E, S, NW, etc. direction indicator
|
||||
// #define OPTION_DISPLAY_SUN_TRACKING_CONTINUOUSLY
|
||||
//#define OPTION_DISPLAY_MOON_OR_SUN_TRACKING_CONDITIONAL
|
||||
#define OPTION_DISPLAY_VERSION_ON_STARTUP //code provided by Paolo, IT9IPQ
|
||||
//#define OPTION_LCD_HEADING_FIELD_FIXED_DECIMAL_PLACE
|
||||
#define OPTION_LCD_HEADING_FIELD_FIXED_DECIMAL_PLACE
|
||||
|
||||
//#define FEATURE_POWER_SWITCH
|
||||
//#define OPTION_EXTERNAL_ANALOG_REFERENCE //Activate external analog voltage reference (needed for RemoteQTH.com unit)
|
||||
|
@ -153,7 +153,7 @@ You can tweak these, but read the online documentation!
|
||||
#define BRAKE_ACTIVE_STATE HIGH
|
||||
#define BRAKE_INACTIVE_STATE LOW
|
||||
|
||||
#define EEPROM_MAGIC_NUMBER 108
|
||||
#define EEPROM_MAGIC_NUMBER 109
|
||||
#define EEPROM_WRITE_DIRTY_CONFIG_TIME 30 //time in seconds
|
||||
|
||||
|
||||
|
@ -149,7 +149,7 @@ You can tweak these, but read the online documentation!
|
||||
#define BRAKE_ACTIVE_STATE HIGH
|
||||
#define BRAKE_INACTIVE_STATE LOW
|
||||
|
||||
#define EEPROM_MAGIC_NUMBER 108
|
||||
#define EEPROM_MAGIC_NUMBER 109
|
||||
#define EEPROM_WRITE_DIRTY_CONFIG_TIME 30 //time in seconds
|
||||
|
||||
|
||||
|
@ -149,7 +149,7 @@ You can tweak these, but read the online documentation!
|
||||
#define BRAKE_ACTIVE_STATE HIGH
|
||||
#define BRAKE_INACTIVE_STATE LOW
|
||||
|
||||
#define EEPROM_MAGIC_NUMBER 108
|
||||
#define EEPROM_MAGIC_NUMBER 109
|
||||
#define EEPROM_WRITE_DIRTY_CONFIG_TIME 30 //time in seconds
|
||||
|
||||
|
||||
|
@ -163,7 +163,7 @@ You can tweak these, but read the online documentation!
|
||||
#define BRAKE_ACTIVE_STATE HIGH
|
||||
#define BRAKE_INACTIVE_STATE LOW
|
||||
|
||||
#define EEPROM_MAGIC_NUMBER 108
|
||||
#define EEPROM_MAGIC_NUMBER 109
|
||||
#define EEPROM_WRITE_DIRTY_CONFIG_TIME 30 //time in seconds
|
||||
|
||||
|
||||
|
@ -150,7 +150,7 @@ You can tweak these, but read the online documentation!
|
||||
#define BRAKE_ACTIVE_STATE HIGH
|
||||
#define BRAKE_INACTIVE_STATE LOW
|
||||
|
||||
#define EEPROM_MAGIC_NUMBER 108
|
||||
#define EEPROM_MAGIC_NUMBER 109
|
||||
#define EEPROM_WRITE_DIRTY_CONFIG_TIME 30 //time in seconds
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user