Skip to content

switch_focus doesn't work on ESP32 #118

@kelray

Description

@kelray

Is there an existing issue for this?

  • I have searched the existing issues.

Library version

Yes, from Arduino library manager.

Bug description

switch_focus() and set_focusedLine() functions do not work on ESP32 platform, though the code compiles fine without any issue.

`#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <LiquidMenu.h>
#include <Button.h>

// The I2C LCD object
LiquidCrystal_I2C lcd(0x27, 16, 2);

// Button objects instantiation
const bool pullup = true;
Button left(17);
Button right(16);
Button up(19);
Button down(18);
Button enter(23);

bool focus = false;

LiquidLine welcome_line1(1, 0, "LiquidMenu Q", LIQUIDMENU_VERSION);
LiquidLine welcome_line2(1, 1, "Hello Menu I2C");
LiquidScreen welcome_screen(welcome_line1, welcome_line2);

LiquidLine analogReading_line(1, 0, "Analog: ", analogReading);
LiquidLine DigitalReading_line(1, 1, "Digital: ");
LiquidScreen secondary_screen(analogReading_line, DigitalReading_line);
LiquidMenu menu(lcd);

void setup() {
Serial.begin(115200);

pinMode(analogPin, INPUT);

left.begin();
right.begin();
up.begin();
down.begin();
enter.begin();

lcd.init();
lcd.backlight();

welcome_screen.set_focusPosition(Position::LEFT);
secondary_screen.set_focusPosition(Position::LEFT);
menu.init();

menu.add_screen(welcome_screen);
menu.add_screen(secondary_screen);

menu.update();
Serial.println(menu.get_focusedLine());
}

void loop()
{
if (enter.released()) {
Serial.println("ENTER button pressed");
focus = !focus;
menu.switch_focus(focus);
Serial.print("focus line: "); Serial.println(menu.get_focusedLine());
Serial.print("focus: ");Serial.println(focus);
}
if (left.released()) {
Serial.println("LEFT button pressed");
menu.previous_screen();
}
}
`

Compiler output

WARNING: library LiquidCrystal I2C claims to run on avr architecture(s) and may be incompatible with your current board which runs on esp32 architecture(s).
WARNING: library LiquidMenu claims to run on avr architecture(s) and may be incompatible with your current board which runs on esp32 architecture(s).
In file included from C:\Users\karim\Documents\Arduino\ESP32_I2C_menu_buttons\ESP32_I2C_menu_buttons.ino:32:
C:\Users\karim\Documents\Arduino\libraries\LiquidMenu\src/LiquidMenu.h:55:122: note: '#pragma message: LiquidMenu: Selected 'LiquidCrystal_I2C' (I2C) library. Edit 'LiquidMenu_config.h' file to change it.'
   55 | # pragma message ("LiquidMenu: Selected 'LiquidCrystal_I2C' (I2C) library. Edit 'LiquidMenu_config.h' file to change it.")
      |                                                                                                                          ^
In file included from C:\Users\karim\Documents\Arduino\libraries\LiquidMenu\src\LiquidSystem.cpp:30:
C:\Users\karim\Documents\Arduino\libraries\LiquidMenu\src\LiquidMenu.h:55:122: note: '#pragma message: LiquidMenu: Selected 'LiquidCrystal_I2C' (I2C) library. Edit 'LiquidMenu_config.h' file to change it.'
   55 | # pragma message ("LiquidMenu: Selected 'LiquidCrystal_I2C' (I2C) library. Edit 'LiquidMenu_config.h' file to change it.")
      |                                                                                                                          ^
In file included from C:\Users\karim\Documents\Arduino\libraries\LiquidMenu\src\recognizeType.cpp:7:
C:\Users\karim\Documents\Arduino\libraries\LiquidMenu\src\LiquidMenu.h:55:122: note: '#pragma message: LiquidMenu: Selected 'LiquidCrystal_I2C' (I2C) library. Edit 'LiquidMenu_config.h' file to change it.'
   55 | # pragma message ("LiquidMenu: Selected 'LiquidCrystal_I2C' (I2C) library. Edit 'LiquidMenu_config.h' file to change it.")
      |                                                                                                                          ^
In file included from C:\Users\karim\Documents\Arduino\libraries\LiquidMenu\src\LiquidScreen.cpp:30:
C:\Users\karim\Documents\Arduino\libraries\LiquidMenu\src\LiquidMenu.h:55:122: note: '#pragma message: LiquidMenu: Selected 'LiquidCrystal_I2C' (I2C) library. Edit 'LiquidMenu_config.h' file to change it.'
   55 | # pragma message ("LiquidMenu: Selected 'LiquidCrystal_I2C' (I2C) library. Edit 'LiquidMenu_config.h' file to change it.")
      |                                                                                                                          ^
In file included from C:\Users\karim\Documents\Arduino\libraries\LiquidMenu\src\LiquidMenu.cpp:30:
C:\Users\karim\Documents\Arduino\libraries\LiquidMenu\src\LiquidMenu.h:55:122: note: '#pragma message: LiquidMenu: Selected 'LiquidCrystal_I2C' (I2C) library. Edit 'LiquidMenu_config.h' file to change it.'
   55 | # pragma message ("LiquidMenu: Selected 'LiquidCrystal_I2C' (I2C) library. Edit 'LiquidMenu_config.h' file to change it.")
      |                                                                                                                          ^
In file included from C:\Users\karim\Documents\Arduino\libraries\LiquidMenu\src\LiquidLine.cpp:30:
C:\Users\karim\Documents\Arduino\libraries\LiquidMenu\src\LiquidMenu.h:55:122: note: '#pragma message: LiquidMenu: Selected 'LiquidCrystal_I2C' (I2C) library. Edit 'LiquidMenu_config.h' file to change it.'
   55 | # pragma message ("LiquidMenu: Selected 'LiquidCrystal_I2C' (I2C) library. Edit 'LiquidMenu_config.h' file to change it.")
      |                                                                                                                          ^
Sketch uses 303925 bytes (23%) of program storage space. Maximum is 1310720 bytes.
Global variables use 21136 bytes (6%) of dynamic memory, leaving 306544 bytes for local variables. Maximum is 327680 bytes.

Metadata

Metadata

Assignees

No one assigned

    Labels

    type: bugSomething isn't working.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions