Micromenu-v2 для LCD

Casper17
Offline
Зарегистрирован: 21.06.2013

Помогите пожалуйста разобраться и подключить данную библиотеку к ардуино. Библиотека лежит тут https://github.com/abcminiuser/micromenu-v2


extern "C"{
  #include "MicroMenu.h"
}


/*** DUMY CODE ***/
enum ButtonValues
{
  BUTTON_NONE,
  BUTTON_UP,
  BUTTON_DOWN,
  BUTTON_LEFT,
  BUTTON_RIGHT,
  BUTTON_ENTER,
};

enum ButtonValues GetButtonPress(void)
{  
  if (Serial.available()) { 
    Serial.println("Kew press");       
    int val = Serial.read();            
    if (val == 'w') { 
      Serial.println("w");                  
      return BUTTON_UP;
    }
    if (val == 's') {
      Serial.println("s");               
      return BUTTON_DOWN; 
    }
    if (val == 'a') {  
      Serial.println("a");            
      return BUTTON_LEFT;
    }
    if (val == 'd') {   
      Serial.println("d");            
      return BUTTON_RIGHT; 
    }
    if (val == 'q') {  
      Serial.println("q");             
      return BUTTON_ENTER; 
    }
  }
  else 
  {
    return BUTTON_NONE;
  }
};
/*** END DUMY CODE ***/


/** Example menu item specific enter callback function, run when the associated menu item is entered. */
static void Level1Item1_Enter(void)
{
  //puts("ENTER");
  Serial.println("ENTER");
}

/** Example menu item specific select callback function, run when the associated menu item is selected. */
static void Level1Item1_Select(void)
{
  //puts("SELECT");
  Serial.println("SELECT");
}

/** Generic function to write the text of a menu.
 *
 *  \param[in] Text   Text of the selected menu to write, in \ref MENU_ITEM_STORAGE memory space
 */
static void Generic_Write(const char* Text)
{
  if (Text)
    puts_P(Text);
}

MENU_ITEM(Menu_1, Menu_2, Menu_3, NULL_MENU, Menu_1_1 , Level1Item1_Select, Level1Item1_Enter, "1");
MENU_ITEM(Menu_2, Menu_3, Menu_1, NULL_MENU, NULL_MENU, NULL              , NULL             , "2");
MENU_ITEM(Menu_3, Menu_1, Menu_2, NULL_MENU, NULL_MENU, NULL              , NULL             , "3");

MENU_ITEM(Menu_1_1, Menu_1_2, Menu_1_2, NULL_MENU, NULL_MENU, NULL, NULL, "1.1");
MENU_ITEM(Menu_1_2, Menu_1_1, Menu_1_1, NULL_MENU, NULL_MENU, NULL, NULL, "1.2");

void setup() {
  Serial.begin(115200); 
  /* Set up the default menu text write callback, and navigate to an absolute menu item entry. */
  Menu_SetGenericWriteCallback(Generic_Write);
  Menu_Navigate(&Menu_1);
}

void loop() {
  
  switch (GetButtonPress())
    {
      case BUTTON_UP:
        Menu_Navigate(MENU_PREVIOUS);
        Serial.println("MENU_PREVIOUS");
        break;
      case BUTTON_DOWN:
        Menu_Navigate(MENU_NEXT);
        Serial.println("MENU_NEXT");
        break;
      case BUTTON_LEFT:
        Menu_Navigate(MENU_PARENT);
        Serial.println("MENU_PARENT");
        break;
      case BUTTON_RIGHT:
        Menu_Navigate(MENU_CHILD);
        Serial.println("MENU_CHILD");
        break;
      case BUTTON_ENTER:
        Menu_EnterCurrentItem();
        Serial.println("BUTTON_ENTER");
        break;
      default:
        break;
    }

}

Почему-то программа дальше строчки Menu_Navigate(&Menu_1); в Setup() не идет. И где функция, которая выводит название пунктов меню на экран? Пока что все это тестирую по Сериал порту...

nik182
Offline
Зарегистрирован: 04.05.2015

C V2 у меня не получилось. С первой версией стабильно работает.