Micromenu-v2 для LCD
- Войдите на сайт для отправки комментариев
Чт, 27/04/2017 - 09:58
Помогите пожалуйста разобраться и подключить данную библиотеку к ардуино. Библиотека лежит тут 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() не идет. И где функция, которая выводит название пунктов меню на экран? Пока что все это тестирую по Сериал порту...
C V2 у меня не получилось. С первой версией стабильно работает.