Вывод значения переменной на экран при помощи библиотеки U8glib

alexnf
Offline
Зарегистрирован: 13.03.2015

Не могу сообразить, как оптимальнее и правильнее организовать вывод на экран.

У меня организованно меню настроек, каждый пункт настраивает разные параметры, причем разного типа, вот пример значения различных пунктов:

1 ON / OFF

2 10 / 20 / 30 ..... /100

3 1800 / 1850 / 1900

Есть функция вывода:

void displayMenu() {

   u8g.firstPage();
  do {
    // предустановка параметров рисования
    u8g.setFont(u8g_font_6x10);
    u8g.setFontRefHeightExtendedText();
    u8g.setDefaultForegroundColor();
    u8g.setFontPosTop();
   
    //Вывод значения текущего пункта
    if (edit_param ==1) {
    u8g.setPrintPos(0, 40);
    u8g.print(cur_param); //Вывод значения текущего пункта меню
    }

  } while ( u8g.nextPage() );

}

cur_param - как раз и должен содержать выводимое значение (on, off, 10, 20, 1800.......), в зависимости от текущего пункта меню.

Вопрос:

Какой тип назначить переменной cur_param ?

Пробовал объявить и присвоить значение вот так: 

char cur_param; 
cur_param = "ON";

а выводить вот так:

u8g.print(cur_param); 

и вот так:


    String message =  String(cur_param);  
    u8g.print(message); 

в обоих случаях пустой экран.

Подозреваю что ошибся в чем то очень простом, прошу вашей помощи.

Или может я вообще использую кординально не правильный подход?

alexnf
Offline
Зарегистрирован: 13.03.2015

В общем получилось только через массив вывести, в начале объявляем:

char* cur_param[]={"ON","OFF"};

а потом соответственно ее выводим:

void displayMenu() {

   u8g.firstPage();
  do {
    // предустановка параметров рисования
    u8g.setFont(u8g_font_6x10);
    u8g.setFontRefHeightExtendedText();
    u8g.setDefaultForegroundColor();
    u8g.setFontPosTop();
   
    //Вывод значения текущего пункта
    if (edit_param ==1) {
    u8g.setPrintPos(0, 40);
    u8g.print(cur_param[0]); //Вывод значения текущего пункта меню
    }

  } while ( u8g.nextPage() );

}

Мой первоначальный вариант может как то работать, или все же только через массив?

 

alexnf
Offline
Зарегистрирован: 13.03.2015

Вообще суть такая:

пункты меню вызывают свои функции, которые выдают определенные значения: on, off, 10, 20 (примеры представлены в первом сообщении), я хотел эти значения присваивать переменной и передавать в в функцию вывода на экран.

Видимо так сделать нельзя. И вместо одной переменной, мне понадобится три: 1-массив текстовых значений, 2-числа, 3- указатель типа, а в функции вывода на экран добавить проверку на значение этой последней переменной, и в зависимости от нее выводить либо элемент массива 1 (если это текст), либо число (переменная 2).

Я вообще не программист - все на уровне хобби. Если видите, в чем я ошибаюсь, поправьте пожалуйста.