Например TDA7294

Форум РадиоКот • Просмотр темы - micromenu-v2
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пт мар 06, 2026 13:52:59

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 74 ]    , 2, ,  
Автор Сообщение
 Заголовок сообщения: Re: micromenu-v2
СообщениеДобавлено: Пт окт 26, 2018 17:38:34 
Вымогатель припоя

Карма: 9
Рейтинг сообщений: 27
Зарегистрирован: Пт май 19, 2006 05:39:11
Сообщений: 576
Рейтинг сообщения: 0
Прокрутку в центре экрана, пробовал, по реализации намного проще. По времени выполнения кошмар, прорисовка всего экрана.
Поэтому самая трудная для меня функция была
void menu_make_screen(Menu_Item_t* const Menu, TSettingfontDot *sF)
где строится все меню.
Немного переписал "объяснение", больше для себя, боюсь сам забуду :))


Вернуться наверх
 
 Заголовок сообщения: Re: micromenu-v2
СообщениеДобавлено: Вт окт 30, 2018 12:17:51 
Вымогатель припоя

Карма: 9
Рейтинг сообщений: 27
Зарегистрирован: Пт май 19, 2006 05:39:11
Сообщений: 576
Рейтинг сообщения: 2
Добавлю картинку.
Изображение


Вложения:
readme.png [44.84 KiB]
Скачиваний: 1729
Вернуться наверх
 
 Заголовок сообщения: Re: micromenu-v2
СообщениеДобавлено: Вт окт 30, 2018 20:49:02 
Собутыльник Кота
Аватар пользователя

Карма: 21
Рейтинг сообщений: 252
Зарегистрирован: Ср янв 16, 2008 08:34:04
Сообщений: 2560
Откуда: KMV
Рейтинг сообщения: 0
спасибо! Продолжаю разбираться. Пока дело не очень быстро движется

_________________
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.


Вернуться наверх
 
 Заголовок сообщения: Re: micromenu-v2
СообщениеДобавлено: Ср ноя 14, 2018 19:25:58 
Родился

Зарегистрирован: Пн мар 21, 2011 08:32:21
Сообщений: 6
Рейтинг сообщения: 0
Вот здесь http://easyelectronics.ru/organizaciya- ... menyu.html это меню очень подробно разжёвано,тестировал на дисплее 128x 64...,всё работает


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
 Заголовок сообщения: Re: micromenu-v2
СообщениеДобавлено: Пт ноя 16, 2018 08:26:31 
Собутыльник Кота
Аватар пользователя

Карма: 21
Рейтинг сообщений: 252
Зарегистрирован: Ср янв 16, 2008 08:34:04
Сообщений: 2560
Откуда: KMV
Рейтинг сообщения: 0
Вот здесь

Разжевано для тех, кто владеет программированием. Я запустил тот код применительно к моему индикатору, но обращение к пункту меню путём прокрутки мне показалось неудобным. О чём я выше уже говорил и приводил данную ссылку.
PS. У меня пока разбор с меню застопорился из-за нехватки времени. Так что я пока никуда не продвинулся

_________________
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.


Вернуться наверх
 
 Заголовок сообщения: Re: micromenu-v2
СообщениеДобавлено: Сб ноя 21, 2020 04:33:13 
Первый раз сказал Мяу!

Зарегистрирован: Пн янв 09, 2017 06:50:37
Сообщений: 39
Откуда: Приморье
Рейтинг сообщения: 0
Собрал эту демку в студии для меги8. Все собирается вообще без проблем. Гдето косяки у вас при переносе этой библиотеки в свой проект. Смотрите еще раз внимательней

У меня тоже собралось без ошибок и варнингов. Хотел сделать модель в протеусе на LCD 1602 и Atmega8. Только ни как не могу догнать - как их сюда привязать! :shock: В исходниках нет ни библиотеки для дисплея ни упоминания о контроллере. Можете помочь?

_________________
Мир не без добрых людей!


Вернуться наверх
 
 Заголовок сообщения: Re: micromenu-v2
СообщениеДобавлено: Вт мар 29, 2022 16:15:02 
Прорезались зубы

Карма: -5
Рейтинг сообщений: -18
Зарегистрирован: Ср янв 11, 2012 11:55:51
Сообщений: 217
Рейтинг сообщения: 0
Уважаемые, а может ли кто-то пояснить, за что в micromenu v2 отвечает вот эта часть?
Код:
extern enum ButtonValues
{
   BUTTON_NONE,
   BUTTON_UP,
   BUTTON_DOWN,
   BUTTON_LEFT,
   BUTTON_RIGHT,
};

enum ButtonValues GetButtonPress(void)
{
   return BUTTON_NONE;
};

с enum ButtonValues вроде понятно, это список переменных объявили. А вот enum ButtonValues GetButtonPress меня озадачивает. Ее надо вызывать после определения нажатой кнопки и передать ей значение нажатой кнопки?


Вернуться наверх
 
 Заголовок сообщения: Re: micromenu-v2
СообщениеДобавлено: Вт мар 29, 2022 20:52:57 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2122
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18482
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Land писал(а):
Ее надо вызывать после определения нажатой кнопки и передать ей значение нажатой кнопки?
надо эту функцию реализовать самостоятельно так, чтобы она возвращала одно из значений ButtonValues в зависимости от того, какая именно кнопка нажата. сейчас это просто заглушка, чтобы проект собирался.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
 Заголовок сообщения: Re: micromenu-v2
СообщениеДобавлено: Вт мар 29, 2022 21:35:08 
Прорезались зубы

Карма: -5
Рейтинг сообщений: -18
Зарегистрирован: Ср янв 11, 2012 11:55:51
Сообщений: 217
Рейтинг сообщения: 0
надо эту функцию реализовать самостоятельно так, чтобы она возвращала одно из значений ButtonValues в зависимости от того, какая именно кнопка нажата. сейчас это просто заглушка, чтобы проект собирался.

а, т.е. именно в ней должен быть обработчик нажатой кнопки? Спасибо вам большое.


Вернуться наверх
 
 Заголовок сообщения: Re: micromenu-v2
СообщениеДобавлено: Ср мар 30, 2022 04:16:44 
Это не хвост, это антенна

Карма: 4
Рейтинг сообщений: 139
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 1480
Рейтинг сообщения: 0
Нет. Обработчик кнопок отдельно. Это функция, которая возвращает из буфера обработки кнопок коды кнопок.


Вернуться наверх
 
 Заголовок сообщения: Re: micromenu-v2
СообщениеДобавлено: Ср мар 30, 2022 10:53:59 
Прорезались зубы

Карма: -5
Рейтинг сообщений: -18
Зарегистрирован: Ср янв 11, 2012 11:55:51
Сообщений: 217
Рейтинг сообщения: 0
я обработал нажатие кнопки, получил код кнопки и вызвал эту функцию, в качестве параметра передав код кнопки? но ведь функция пустая, она же не производит никаких действий над данными? Или я не правильно тут понимаю? Вот у меня в этом месте разрыв в понимании алгоритма получается. Как-то так?
Спойлер
Код:
      #include <avr/io.h>
   
#ifndef LIBRARY
   #define LIBRARY   
      #include "Button.h"
      #include "globals.h"
#endif   
   
   extern enum ButtonValues
   {
      BUTTON_NONE,
      BUTTON_UP,
      BUTTON_DOWN,
      BUTTON_LEFT,
      BUTTON_RIGHT,
   };   

uint8_t BtnAntdr[COUNT_KEY][2];
extern uint8_t BUTTON;
const uint8_t KeyPause[]={210,180,160,140,115,90,70,44,35,20,5};

//[0]антидрб [1]повторы
static void antdr_key(uint8_t Pin, uint8_t *p, uint8_t bit){
   if (Pin==0){
      if ( ++p[0] == KEY_SHORT_TIME){//антидрб
         BUTTON = bit;
         if (p[1]<sizeof(KeyPause)-1) p[1]++;//повторы   
         }
      if (p[0] == KeyPause[p[1]])
         p[0]=0;//антидрб убыстрение
      }
   else{
      p[0]=0;
      p[1]=0;
      }
   GetButtonPress();
}

void skan_key(void){//вызывать через 1мс
   BUTTON &= BUTTON_NONE;//сбросить все кроме KEY_EXIT
   antdr_key(BUTTON_UP_STATE, &BtnAntdr[BUTTON_UP][0], 1);
   antdr_key(BUTTON_DOWN_STATE, &BtnAntdr[BUTTON_DOWN][0], 2);
   antdr_key(BUTTON_LEFT_STATE, &BtnAntdr[BUTTON_LEFT][0],  3);
   antdr_key(BUTTON_RIGHT_STATE,&BtnAntdr[BUTTON_RIGHT][0],  4);
}

enum ButtonValues GetButtonPress(void)
{
   return BUTTON;
}


Вернуться наверх
 
 Заголовок сообщения: Re: micromenu-v2
СообщениеДобавлено: Чт мар 31, 2022 05:39:33 
Это не хвост, это антенна

Карма: 4
Рейтинг сообщений: 139
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 1480
Рейтинг сообщения: 0
Это называется инкапсуляция. Проект делится на логические модули. Обработка кнопок отдельно, меню отдельно. То есть, в разных файлах. И чтобы не делать переменные глобальными, пишется эта функция, да, она просто возвращает код кнопки к примеру. Но зато, к этой функции мы можем обратиться из любого места в проекте. Грубо, примерно, как то так.


Вернуться наверх
 
 Заголовок сообщения: Re: micromenu-v2
СообщениеДобавлено: Чт мар 31, 2022 08:24:50 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2122
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18482
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Land писал(а):
я обработал нажатие кнопки, получил код кнопки и вызвал эту функцию, в качестве параметра передав код кнопки? но ведь функция пустая, она же не производит никаких действий над данными? Или я не правильно тут понимаю?
суть вот в чем: микроменю отрисовывает структуру меню по своей логике. но логика эта построена на использовании двух функций, которые реализовать должен пользователь, то есть вы: это функция ВЫВОДА, которая отвечает за "изображение" пункта меню, и функция ВВОДА, которая отвечает за то, как пользователь воздействует на органы управления для перемещений по меню. так вот, рассматриваемая вами функция - это ВВОД. она обязана вернуть коды, которые готова принять система микроменю. как эта функуия получит эти коды - системе микроменю не важно: эти коды могут прийти по интернету, получиться из нажатий кнопок или вращения энкодера - это ВАШЕ ДЕЛО. но так или иначе выдать на выход функция должна один из наперед заданных кодов - для перемещения вперед-назад и вглубь-наверх по системе меню.
получается, вы сами эту функцию вызывать не должны, вы должны её сделать и все, эта функция УЖЕ ВЫЗЫВАЕТСЯ откуда-то изнутри микроменю.

во всяком случае, я именно так понял суть, сама реализация микроменю мне не очень понравилась, и я ею не пользуюсь.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
 Заголовок сообщения: Re: micromenu-v2
СообщениеДобавлено: Чт мар 31, 2022 09:19:36 
Прорезались зубы

Карма: -5
Рейтинг сообщений: -18
Зарегистрирован: Ср янв 11, 2012 11:55:51
Сообщений: 217
Рейтинг сообщения: 0
да, я уже разобрался, что она вызывается из микроменю, а ей надо только код кнопки передать, который она уже дальше в микроменю транслирует. Спасибо еще раз.


Вернуться наверх
 
 Заголовок сообщения: Re: micromenu-v2
СообщениеДобавлено: Чт мар 31, 2022 09:22:47 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2122
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18482
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Land писал(а):
а ей надо только код кнопки передать
ей не надо, это она должна этот код родить!

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
 Заголовок сообщения: Re: micromenu-v2
СообщениеДобавлено: Чт мар 31, 2022 10:39:56 
Прорезались зубы

Карма: -5
Рейтинг сообщений: -18
Зарегистрирован: Ср янв 11, 2012 11:55:51
Сообщений: 217
Рейтинг сообщения: 0
Хорошо, я вас понял. Главное, чтобы она вернула код кнопки.


Вернуться наверх
 
 Заголовок сообщения: Re: micromenu-v2
СообщениеДобавлено: Чт мар 31, 2022 11:46:04 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15499
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Как вариант заготовки (правда под адуринку)
viewtopic.php?p=4203257#p4203257
:roll:


Вернуться наверх
 
 Заголовок сообщения: Re: micromenu-v2
СообщениеДобавлено: Чт мар 31, 2022 17:02:41 
Это не хвост, это антенна

Карма: 4
Рейтинг сообщений: 139
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 1480
Рейтинг сообщения: 0
Получается, что я неправильно понял вопрос. Ладно, по функции, которая возвращает код кнопки, я все равно правильно написал.
По поводу проекта micromenu. В этом проекте показана идея. Как реализовать меню для мк. Пример структур данных меню и простенький пример реализации. Просто показывается, как эта идея работает. Нравится кому, не нравится, дело десятое и личное.
Вывод информации может быть на разные дисплеи, по интерфейсу. В качестве кода кнопок могут быть символы по интерфейсам. Типа уарта и так далее.


Вернуться наверх
 
 Заголовок сообщения: Re: micromenu-v2
СообщениеДобавлено: Пт апр 01, 2022 12:35:16 
Прорезались зубы

Карма: -5
Рейтинг сообщений: -18
Зарегистрирован: Ср янв 11, 2012 11:55:51
Сообщений: 217
Рейтинг сообщения: 0
еще раз спасибо всем откликнувшимся )


Вернуться наверх
 
 Заголовок сообщения: Re: micromenu-v2
СообщениеДобавлено: Сб апр 02, 2022 09:42:05 
Прорезались зубы

Карма: -5
Рейтинг сообщений: -18
Зарегистрирован: Ср янв 11, 2012 11:55:51
Сообщений: 217
Рейтинг сообщения: 0
А вот еще вопрос. Не совсем про меню, хотя как посмотреть.
не могу сделать вывод на экран по sprintf :cry:
Есть сформированный список меню:
Код:
//         NAME   NEXT(DOWN)   PREVIOS(UP)      PARENT(LEFT)   CHILD(RIGHT)   SELECT      ENTER      TEXT:
MENU_ITEM(   Menu_1,      Menu_2,      Menu_6,      NULL_MENU,   Menu_1_1,   NULL            , NULL         , "SET_DATE");
MENU_ITEM(   Menu_2,      Menu_3,      Menu_1,      NULL_MENU,   Menu_2_1,   NULL               , NULL             , "SET_TIME");
MENU_ITEM(   Menu_3,      Menu_4,      Menu_2,      NULL_MENU,   Menu_3_1,   NULL               , NULL             , "SET_OPEN");
MENU_ITEM(   Menu_4,      Menu_5,      Menu_3,      NULL_MENU,   Menu_4_1,   NULL               , NULL             , "SET_CLOSE");
MENU_ITEM(   Menu_5,      Menu_6,      Menu_4,      NULL_MENU,   Menu_5_1,   NULL               , NULL             , "SET_TEMPR");
MENU_ITEM(   Menu_6,      Menu_7,      Menu_5,      NULL_MENU,   Menu_6_1,   NULL               , NULL             , "SET_BRIGHTNES");
MENU_ITEM(     Menu_7,      Menu_1,      Menu_6,      NULL_MENU,   Menu_7_1,   NULL          , NULL             ,"SAVE&EXIT");

Есть функция, которая должна вывести на экран текст (Text) названия выбранного меню:
Код:
static void Generic_Write(const char* Text)
{
   if (Text)
      
      lcd_clear();      
      sprintf(string_M, "%s", Text);
      lcd_gotoxy(0,0);;   
      lcd_str_out(string_M);
}

само-собой переменная string_M опеределена
Код:
char string_M[14] = {0};

как и переменная Text
Код:
const char Text[];

и конечно есть определение MENU_ITEM
Код:
#define MENU_ITEM(Name, Next, Previous, Parent, Child, SelectFunc, EnterFunc, Text) \
      extern Menu_Item_t MENU_ITEM_STORAGE Next;     \
      extern Menu_Item_t MENU_ITEM_STORAGE Previous; \
      extern Menu_Item_t MENU_ITEM_STORAGE Parent;   \
      extern Menu_Item_t MENU_ITEM_STORAGE Child;  \
      Menu_Item_t MENU_ITEM_STORAGE Name = {&Next, &Previous, &Parent, &Child, SelectFunc, EnterFunc, Text}

И результате всего я при выводе на экран получаю какую-то хрень. Конкретно при нажатии кнопки UP, на экран выводится "RENT" Это даже не огрызок какого-то текста, а вообще совершенно не понятно откуда взявшийся набор символов. При этом в другом месте проекта, в другом файле, sprintf работает прекрасно и выводит то, что надо, как пример, вывод времени:
Код:
// Вывести время
   sprintf(string, "%02i:%02i:%02i", time[0], time[1], time[2]);
   lcd_gotoxy(0,0);
   lcd_str_out(string);

да, вывод смотрю в Proteus 8.10


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 74 ]    , 2, ,  

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y