Added ability to set custom display address
This commit is contained in:
parent
948798cd3e
commit
2536c26f50
1
Config.h
1
Config.h
@ -408,6 +408,7 @@
|
|||||||
float battery_percent = 0.0;
|
float battery_percent = 0.0;
|
||||||
uint8_t battery_state = 0x00;
|
uint8_t battery_state = 0x00;
|
||||||
uint8_t display_intensity = 0xFF;
|
uint8_t display_intensity = 0xFF;
|
||||||
|
uint8_t display_addr = 0xFF;
|
||||||
bool display_diagnostics = true;
|
bool display_diagnostics = true;
|
||||||
bool device_init_done = false;
|
bool device_init_done = false;
|
||||||
bool eeprom_ok = false;
|
bool eeprom_ok = false;
|
||||||
|
18
Display.h
18
Display.h
@ -25,16 +25,20 @@
|
|||||||
#define DISP_ADDR 0x3C
|
#define DISP_ADDR 0x3C
|
||||||
#elif BOARD_MODEL == BOARD_TBEAM
|
#elif BOARD_MODEL == BOARD_TBEAM
|
||||||
#define DISP_RST 13
|
#define DISP_RST 13
|
||||||
#define DISP_ADDR 0x3D
|
#define DISP_ADDR 0x3C
|
||||||
// #define DISP_ADDR 0x3C
|
#define DISP_CUSTOM_ADDR true
|
||||||
#elif BOARD_MODEL == BOARD_HELTEC32_V2 || BOARD_MODEL == BOARD_LORA32_V1_0
|
#elif BOARD_MODEL == BOARD_HELTEC32_V2 || BOARD_MODEL == BOARD_LORA32_V1_0
|
||||||
#define DISP_RST 16
|
#define DISP_RST 16
|
||||||
#define DISP_ADDR 0x3C
|
#define DISP_ADDR 0x3C
|
||||||
#define SCL_OLED 15
|
#define SCL_OLED 15
|
||||||
#define SDA_OLED 4
|
#define SDA_OLED 4
|
||||||
|
#elif BOARD_MODEL == BOARD_RNODE_NG_21
|
||||||
|
#define DISP_RST -1
|
||||||
|
#define DISP_ADDR 0x3C
|
||||||
#else
|
#else
|
||||||
#define DISP_RST -1
|
#define DISP_RST -1
|
||||||
#define DISP_ADDR 0x3C
|
#define DISP_ADDR 0x3C
|
||||||
|
#define DISP_CUSTOM_ADDR true
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define SMALL_FONT &Org_01
|
#define SMALL_FONT &Org_01
|
||||||
@ -104,8 +108,16 @@ bool display_init() {
|
|||||||
digitalWrite(pin_display_en, HIGH);
|
digitalWrite(pin_display_en, HIGH);
|
||||||
Wire.begin(SDA_OLED, SCL_OLED);
|
Wire.begin(SDA_OLED, SCL_OLED);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if DISP_CUSTOM_ADDR == true
|
||||||
|
uint8_t display_address = EEPROM.read(eeprom_addr(ADDR_CONF_DADR));
|
||||||
|
if (display_address == 0xFF) display_address = DISP_ADDR;
|
||||||
|
#else
|
||||||
|
uint8_t display_address = DISP_ADDR;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
if(!display.begin(SSD1306_SWITCHCAPVCC, DISP_ADDR)) {
|
if(!display.begin(SSD1306_SWITCHCAPVCC, display_address)) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
set_contrast(&display, display_contrast);
|
set_contrast(&display, display_contrast);
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
#define CMD_FB_WRITE 0x43
|
#define CMD_FB_WRITE 0x43
|
||||||
#define CMD_FB_READL 0x44
|
#define CMD_FB_READL 0x44
|
||||||
#define CMD_DISP_INT 0x45
|
#define CMD_DISP_INT 0x45
|
||||||
|
#define CMD_DISP_ADDR 0x63
|
||||||
#define CMD_BT_CTRL 0x46
|
#define CMD_BT_CTRL 0x46
|
||||||
#define CMD_BT_PIN 0x62
|
#define CMD_BT_PIN 0x62
|
||||||
|
|
||||||
|
@ -898,6 +898,21 @@ void serialCallback(uint8_t sbyte) {
|
|||||||
di_conf_save(display_intensity);
|
di_conf_save(display_intensity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
} else if (command == CMD_DISP_ADDR) {
|
||||||
|
#if HAS_DISPLAY
|
||||||
|
if (sbyte == FESC) {
|
||||||
|
ESCAPE = true;
|
||||||
|
} else {
|
||||||
|
if (ESCAPE) {
|
||||||
|
if (sbyte == TFEND) sbyte = FEND;
|
||||||
|
if (sbyte == TFESC) sbyte = FESC;
|
||||||
|
ESCAPE = false;
|
||||||
|
}
|
||||||
|
display_addr = sbyte;
|
||||||
|
da_conf_save(display_addr);
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
1
ROM.h
1
ROM.h
@ -63,6 +63,7 @@
|
|||||||
#define ADDR_CONF_BT 0xB0
|
#define ADDR_CONF_BT 0xB0
|
||||||
#define ADDR_CONF_DSET 0xB1
|
#define ADDR_CONF_DSET 0xB1
|
||||||
#define ADDR_CONF_DINT 0xB2
|
#define ADDR_CONF_DINT 0xB2
|
||||||
|
#define ADDR_CONF_DADR 0xB3
|
||||||
|
|
||||||
#define INFO_LOCK_BYTE 0x73
|
#define INFO_LOCK_BYTE 0x73
|
||||||
#define CONF_OK_BYTE 0x73
|
#define CONF_OK_BYTE 0x73
|
||||||
|
@ -1212,6 +1212,10 @@ void di_conf_save(uint8_t dint) {
|
|||||||
eeprom_update(eeprom_addr(ADDR_CONF_DINT), dint);
|
eeprom_update(eeprom_addr(ADDR_CONF_DINT), dint);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void da_conf_save(uint8_t dadr) {
|
||||||
|
eeprom_update(eeprom_addr(ADDR_CONF_DADR), dadr);
|
||||||
|
}
|
||||||
|
|
||||||
bool eeprom_have_conf() {
|
bool eeprom_have_conf() {
|
||||||
if (EEPROM.read(eeprom_addr(ADDR_CONF_OK)) == CONF_OK_BYTE) {
|
if (EEPROM.read(eeprom_addr(ADDR_CONF_OK)) == CONF_OK_BYTE) {
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
Reference in New Issue
Block a user