u8g2 (бывшая u8glib) установка и русские шрифты

Sr.FatCat
Offline
Зарегистрирован: 19.02.2016

Для работы с LCD12864 (ST7920) и Oled 1.4" (SH1106) использую u8g2 (по SPI) и все отлично, но есть 2 вопроса.

1. Я так и не понял как "штатно" поставить библиотеку, чтобы она виделась из IDE именно библиотекой, обновлялась и т.д. Сейчас из скаченного архива копирую содержимое srcc и srccpp в папку с проектом и заменяю где ругается include <> на include ""- работает, но этоже не правильно?

2. В u8g2 всего 3 русских шрифта. Мелких вообще нет. Для u8glib - русских шрифтов - более чем достаточно нашел, но как их интегрировать в u8g2 - так и не понял. Как есть в инструкциях для u8glib не получается, а как добавлять/заменять шрифты в u8g2 - ни в руководстве, ни в обсуждениях не нашел.

Была мысль не гоняться за новизной и отказаться от использования u8g2 в пользу более не поддерживаемой u8glib, но там тоже с установкой неясно и решил посоветоваться со знающими.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Оптимальный вариант Ваших действий зависит исключительно от Вашей квалификации:

1. Не пользуетесь чужими библиотеками, все пишете сами.

2. Курочите библиотеки, как вздумается.

3. Пользуетесь готовым "как получится".

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

 

PS. Что-то я о том, чтобы библиотека сама "штатно обновлялась" не слышал. Притом ни для одной из библиотек. Более того, думаю, что как раз не зависящего от пользователя обновления делать ни в коем случае не следует. Подумайте сами: что Вы скажете, если то, что вчера компилировалось и работало, сегодя вдру перестанет. При всяком отсутствии изменений с Вашей стороны. Сколько Вам понадибиться времени, чтобы понять, что виновато "автоматическое" обновление библиотеки?

Sr.FatCat
Offline
Зарегистрирован: 19.02.2016

andriano пишет:

Оптимальный вариант Ваших действий зависит исключительно от Вашей квалификации:

1. Не пользуетесь чужими библиотеками, все пишете сами.

Я из этих сображений только и пользуюсь Arduino. На самую экзотичную переферию уже кто-то что-то написал. Лично мне гораздо веселее смотреть в чужие классы, чем в родной даташит, особенно для той переферии, которая по смыслу занимает в проекте 1%, а по трудоемкости, как интерфейс на графическом экране - 80%.

andriano пишет:

2. Курочите библиотеки, как вздумается.


Именно этим, при необходимости и занимаюсь - на SIM800L нормальную либу не нашел. Исправил, оптимизировал и довел до ума, что нашел.

andriano пишет:

3. Пользуетесь готовым "как получится".

Именно этим с g8u2 и занимаюсь.

andriano пишет:

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

Вот я и прошу совета у тех, кому "очевидно". Вопрос то несложный для тех кто хорошо себе представляет структуру библиотеки и/или изменения в структуре от u8glib к u8g2: как использовать шрифты из u8glib в u8g2. В конце концов - не получу ответа здесь, напишу автору - вроде нет с ним проблем.

andriano пишет:

PS. Что-то я о том, чтобы библиотека сама "штатно обновлялась" не слышал. Притом ни для одной из библиотек. Более того, думаю, что как раз не зависящего от пользователя обновления делать ни в коем случае не следует. Подумайте сами: что Вы скажете, если то, что вчера компилировалось и работало, сегодя вдру перестанет. При всяком отсутствии изменений с Вашей стороны. Сколько Вам понадибиться времени, чтобы понять, что виновато "автоматическое" обновление библиотеки?

Я может не совсем понятно выразился. Под штатным обновлением, я имел ввиду, что для библиотек, установленных в Arduino IDE через "Менеджер библиотек" можно видеть обновлении и при желании обновляться прям там, не заходя в гитхаб. Оппс :) Вопрос решился.

Осталось про шрифты узнать...

Sr.FatCat
Offline
Зарегистрирован: 19.02.2016

Кто-то вообще использует u8g2?

Sergey.Petrov.1972
Offline
Зарегистрирован: 07.12.2015

Добрый день! Я пытаюсь использовать u8g2, потому что у меня на Win7x64 библиотека u8glib вообще не компилируется. Что-то пишет про несоответствие платформ. Хотя на работе под Win10x64 компилируются обе библиотеки. Так вот, дома вынужден использовать u8g2. Тут же встал вопрос русских шрифтов. В интернете ничего не нашел, кроме Ваших постов. Если Вам удалось разобраться с русскими шрифтами (кроме встроенных трех) для u8g2 - большая просьба, напишите мне (пока не умею здесь посылать приватные сообщения). Также я хочу сократить библиотеку u8g2 до разумного минимума, а то ради одного русского слова на экране отдавать всю память nano328 совсем неинтересно...

Fremen72
Offline
Зарегистрирован: 03.04.2016

Цитата:

Подумайте сами: что Вы скажете, если то, что вчера компилировалось и работало, сегодя вдру перестанет. При всяком отсутствии изменений с Вашей стороны. Сколько Вам понадибиться времени, чтобы понять, что виновато "автоматическое" обновление библиотеки?

Авто-обновление библиотек в IDE ARDUINO мне уже не раз доказывало, что лень самому скачать последнюю библиотеку, потетить ее и только потом использовать в проектах приводит к катострафическим последствиям.

Неоднократно пытался вынести все библиотеки в отдельный каталог, но тем неменее автообновление умудряется все испортить. Вывод один. Только ручная подкладка библиотек - выход для стабильной разработки. Особенно если тянете несколько проектов.

Дим
Offline
Зарегистрирован: 05.05.2017

Sr.FatCat пишет:
В u8g2 всего 3 русских шрифта.

Какие? Ни как не могу написать кириллицей.

b707
Offline
Зарегистрирован: 26.05.2017

Fremen72 пишет:

Неоднократно пытался вынести все библиотеки в отдельный каталог, но тем неменее автообновление умудряется все испортить. Вывод один. Только ручная подкладка библиотек - выход для стабильной разработки. Особенно если тянете несколько проектов.

Полностью поддерживаю. И не только в ардуино. В любой системе - в ПК, в смартфоне, в телевизоре - первым делом выключаю автообновление. И отлично живу без "апдейтов". нужных только их авторам.

Genri5
Offline
Зарегистрирован: 31.05.2016

Sr.FatCat, у меня на домашнем ПК 7 Windows, на работе досих пор XP, библиотеки стоят "штатно" и видятся из IDE именно библиотекой. Может нужно ее было откорректировать так, что бы она установилась как надо - "штатно".

sav liana
Offline
Зарегистрирован: 28.11.2016
Очень медленная компиляция! Пример GraphicsTest (u8glib) компилируется:
IDE 1.6.4, WIN XP, Mega, компиляция=36 сек.  (ноут Lenovo 3000 G410)
 
А какая у вас скотость компиляции GraphicsTest (u8g2) (сек)?

 

 
b707
Offline
Зарегистрирован: 26.05.2017

sav liana пишет:

 
WIN XP (ноут Lenovo 3000 G410)

Что вы хотели - ваш конфиг уже лет 10 как устарел. 32битная ХР крайне сложно работает с современными программами из-за ограничения размера RAM в 3 Гб.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

b707 пишет:

Что вы хотели - ваш конфиг уже лет 10 как устарел. 32битная ХР крайне сложно работает с современными программами из-за ограничения размера RAM в 3 Гб.

Дык автообновление же выключено :)

b707
Offline
Зарегистрирован: 26.05.2017

brokly пишет:

b707 пишет:

Что вы хотели - ваш конфиг уже лет 10 как устарел. 32битная ХР крайне сложно работает с современными программами из-за ограничения размера RAM в 3 Гб.

Дык автообновление же выключено :)

А что, оно типа  сделало бы из 3 Гб RAM - 8? Или старый хард вдруг обновился бы в SSD? :)

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

А что, а вдруг !

passkal
Offline
Зарегистрирован: 05.04.2013

У меня так выходит: (oled 128x32 )

 

#include <Arduino.h>
#include <U8g2lib.h>

#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif


U8G2_SSD1306_128X32_UNIVISION_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE, /* clock=*/ SCL, /* data=*/ SDA);   // pin remapping with ESP8266 HW I2C

void setup(void) {
  u8g2.begin();
  u8g2.enableUTF8Print();		// enable UTF8 support for the Arduino print() function
}

void loop(void) {

  u8g2.setFont(u8g2_font_unifont_t_cyrillic);  // 
  u8g2.setFontDirection(0);
  u8g2.firstPage();
  do {
    u8g2.setCursor(20, 10);
    u8g2.print("Привет decoder");
    } while ( u8g2.nextPage() );
  delay(1000);
}