Редактор шрифтов Adafruit_GFX

Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить
Открыл глаза
Аватара пользователя
Сообщения: 40
Зарегистрирован: Пт авг 29, 2014 14:08:19

Сообщение mig958 »

Добрый день dankr.
К сожалению мало информации о проекте.
Если у Вас уже есть работающий скетч то в заголовке после #include <U8g2lib.h> вставте #include "Calibri10.h" (файл должен находится в том же каталоге что и скетч.
Перед непосредственным использованием шрифта (если используется несколько шрифтов) вставте u8g2.setFont(Calibri10) иначе можно и в setup.
Если у Вас Arduino IDE работает в UTF то понадобится вставить функцию из программы (кнопка вверху справа со знаком вопроса).
Усли проекта нет, проще всего открыть пример, найти свой дисплей и добиться вывода на экран.
К сожалению ни с esp32 ни с дисплеем st7565 не работал, так что что-то корректное написать не смогу.
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 55
Зарегистрирован: Вс сен 10, 2017 15:32:28
Откуда: Крым

Сообщение dankr »

Во!! Только вспомнил об авторе! :)

Добавлено after 7 minutes 3 seconds:
Уже есть от чего оттолкнуться. Как появится время, кинусь пробовать. Работающий скетч есть. А по поводу данных проекта проблем нет. Это обычные часы, как часть более крупного проекта. Всё стандартно и по минимуму. С небольшими нюансами. И большая вам благодарность за посильную помощь! И, главное, вовремя!!
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 40
Зарегистрирован: Пт авг 29, 2014 14:08:19

Сообщение mig958 »

Кстати я не уверен что эти шрифты работают с U8G2 я пробовал только с u8GLib.
Открыл глаза
Аватара пользователя
Сообщения: 55
Зарегистрирован: Вс сен 10, 2017 15:32:28
Откуда: Крым

Сообщение dankr »

Хотел уточнить. #include "Calibri10.h" вставить строчкой ниже #include <U8g2lib.h> или в одной строке они должны быть? Понимаю, вопрос абсолютного чайника, но хотелось бы однозначности.

Добавлено after 1 minute 2 seconds:
[uquote="mig958",url="/forum/viewtopic.php?p=4614648#p4614648"]Кстати я не уверен что эти шрифты работают с U8G2 я пробовал только с u8GLib.[/uquote] Вот я и попробую.
Реклама
Эиком - электронные компоненты и радиодетали
Открыл глаза
Аватара пользователя
Сообщения: 40
Зарегистрирован: Пт авг 29, 2014 14:08:19

Сообщение mig958 »

Ну в одной строчке не получится- компилятор не даст. Можно и не сразу за #include <U8g2lib.h> главное позже и до использования.
А вообще этот вопрос о языке C, C++.
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 55
Зарегистрирован: Вс сен 10, 2017 15:32:28
Откуда: Крым

Сообщение dankr »

Да, мне ребята выше сказали об этом, что это язык С...Просто навряд ли мне эти знания пригодятся в будущем. Я не программист и стать им скорее всего уже не успею. :0 :0
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 55
Зарегистрирован: Вс сен 10, 2017 15:32:28
Откуда: Крым

Сообщение dankr »

Выдало ошибку уже перед использованием. Я тут могу вам показать файл скорректированных шрифтов? При просмотре одни китайские (или не китайские) закорючки. Вы в статье писали о требованиях к наименованиям. Может у меня что не так с этим? У вас будет возможность глянуть?

Добавлено after 1 minute 13 seconds:
error: 'u8g2' was not declared in this scope; did you mean 'U8G2'?

Кое что я и так нахватался. ))) За лишнюю наводку спасибо. Лишним всё равно не будет.
Друг Кота
Аватара пользователя
Сообщения: 3519
Зарегистрирован: Вт окт 22, 2013 04:37:23
Откуда: Казань

Сообщение smacorp »

Вам сам компилятор подсказывает - переменная u8g2 не объявлена в прелах области видимости, может имелась ввиду переменная U8G2?

Измените регистр букв на верхний.
Последний раз редактировалось smacorp Вт авг 13, 2024 16:23:11, всего редактировалось 1 раз.
Платы для HLDI - установки лазерной засветки фоторезиста.
Фоторезист Ordyl Alpha 350
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльные маски XV501T-4 и KSM-S6189 (5 цветов).
Открыл глаза
Аватара пользователя
Сообщения: 55
Зарегистрирован: Вс сен 10, 2017 15:32:28
Откуда: Крым

Сообщение dankr »

"Как утверждают книжки, изучить С можно за 21 день... " На счёт С ничего не скажу, а вот цыплёнок из яйца вылупляется как раз за 21 день. )))
Открыл глаза
Аватара пользователя
Сообщения: 55
Зарегистрирован: Вс сен 10, 2017 15:32:28
Откуда: Крым

Сообщение dankr »

// Библиотеки
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <U8g2lib.h>
//#include "Calibri10.h"
#include "F:\ESP32_sketch\DS3231_Display_Zap_4_RTC\Calibri10.h"
#include <RTClib.h>

#define LCD_1_SCL 18
#define LCD_1_SI 32
#define LCD_1_CS 19
#define LCD_1_A0 16
#define LCD_1_RES 17
#define LCD_1_BL 4 // Подсветка через резистор 220 Ом

#define LCD_2_SCL 18
#define LCD_2_SI 32
#define LCD_2_CS 33
#define LCD_2_A0 16
#define LCD_2_RES 13
#define LCD_2_BL 4 // Подсветка через резистор 220 Ом

#define LCD_3_SCL 18
#define LCD_3_SI 32
#define LCD_3_CS 27
#define LCD_3_A0 16
#define LCD_3_RES 26
#define LCD_3_BL 4 // Подсветка через резистор 220 Ом

/***************************************************************************
Подбор шрифтов
****************************************************************************/
#define FONT_10x20 u8g2_font_10x20_t_cyrillic
#define FONT_9x15 u8g2_font_9x15_t_cyrillic
#define FONT_6x13 u8g2_font_6x13B_tf // Секунды..... эти
#define FONT_7x13 u8g2_font_7x13_m_symbols // Секунды
#define FONT_8x13 u8g2_font_8x13_t_cyrillic // Секунды
#define FONT_9x15 u8g2_font_haxrcorp4089_t_cyrillic // Месяц и День Недели. не поместилось пол буквы - к
#define FONT_9x15 u8g2_font_logisoso16_tr // Год. оптимально.
#define FONT_9x15 u8g2_font_fur35_tr // Число! fub на пиксель толще, но цифры неаккуратные.
#define FONT_9x15 u8g2_font_fur30_tf // Число
#define FONT_6x12 u8g2_font_logisoso32_tf // Число для числа слишком узкий шрифт
#define FONT_6x12 u8g2_font_inr33_mn // Число Х
#define FONT_6x12 u8g2_font_inr33_t_cyrillic // Число Х
#define FONT_6x12 u8g2_font_inb33_mf // Число перечёркнутый НОЛЬ Х
#define FONT_9x19 u8g2_font_logisoso28_tr // Часы. по возможности найти такие же узкие, но немного длиннее.
#define FONT_6x12 u8g2_font_logisoso22_tf // Часы.
#define FONT_9x18 u8g2_font_font_logisoso38_tf
#define FONT_9x17 u8g2_font_lubB14_tf // Точки
#define FONT_8x5 u8g2_font_Calibri10 // Месяц и День Недели. Вставлен My Shrift_Calibri10 ( 8 x 5)


RTC_DS3231 rtc;

// Объекты дисплея
U8G2_ST7565_ERC12864_F_4W_SW_SPI u8g2_1(U8G2_R3, LCD_1_SCL, LCD_1_SI, LCD_1_CS, LCD_1_A0, LCD_1_RES);
U8G2_ST7565_ERC12864_F_4W_SW_SPI u8g2_2(U8G2_R0, LCD_2_SCL, LCD_2_SI, LCD_2_CS, LCD_2_A0, LCD_2_RES);
U8G2_ST7565_ERC12864_F_4W_SW_SPI u8g2_3(U8G2_R3, LCD_3_SCL, LCD_3_SI, LCD_3_CS, LCD_3_A0, LCD_3_RES);

void setup()
{
delay(1000); // ждём завершение переходных процессов связанных с подачей питания.
Wire.begin(); // инициируем работу с аппаратной шиной I2C.
u8g2_1.begin(); // старт дисплея 1
u8g2_2.begin(); // старт дисплея 2
u8g2_3.begin(); // старт дисплея 3
rtc.begin(&Wire); // старт датчика ds3231

//rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // установка времени и даты последней компиляции
//rtc.adjust(DateTime(2024, 8, 12, 17, 45, 0)); // Год, Месяц, Число, Час, Мин, Сек.

{
u8g2_1.setContrast(25); //Контрастность 1
u8g2_1.enableUTF8Print(); // Вывод текста 1

u8g2_2.setContrast(25); //Контрастность 2
u8g2_2.enableUTF8Print(); // Вывод текста 2


u8g2_3.setContrast(25); //Контрастность 3
u8g2_3.enableUTF8Print(); // Вывод текста 3

u8g2_1.clearBuffer(); // очистка буфера 1
u8g2_2.clearBuffer(); // очистка буфера 2
u8g2_3.clearBuffer(); // очистка буфера 3

/*
if (! rtc.begin()) // инициализация DS32331
u8g2_2.setFont(u8g2_font_8x13_t_cyrillic); // установка размера шрифта датчика
u8g2_2.setCursor(0, 45); // установка курсора
u8g2_2.print("RTC ошибка"); // проверка, подключен ли модуль
while (1);
*/
delay(3000); //Задержка для загрузки системы 3 сек
}
}

void loop()
{

{
u8g2_1.clearBuffer(); // очистка буфера 1
u8g2_1.setFont(u8g2.setFont(Calibri10); // установка размера шрифта датчика
u8g2_1.setCursor(0, 45); // установка курсора
u8g2_1.print("ПОНЕДЕЛЬНИК");
u8g2_1.sendBuffer(); // вывод на экран
}

} код не чищенный, много для простоты закомментированно. Но, работает.
Последний раз редактировалось dankr Вт авг 13, 2024 16:36:28, всего редактировалось 2 раза.
Друг Кота
Аватара пользователя
Сообщения: 3519
Зарегистрирован: Вт окт 22, 2013 04:37:23
Откуда: Казань

Сообщение smacorp »

Martian, да я не помню - пользовался этой шляпой пару раз и давно, неудобная она.
Платы для HLDI - установки лазерной засветки фоторезиста.
Фоторезист Ordyl Alpha 350
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльные маски XV501T-4 и KSM-S6189 (5 цветов).
Открыл глаза
Аватара пользователя
Сообщения: 55
Зарегистрирован: Вс сен 10, 2017 15:32:28
Откуда: Крым

Сообщение dankr »

Выдал ошибку в строке ошибок. Там конкретно что-то именно со строкой Font
Друг Кота
Аватара пользователя
Сообщения: 3519
Зарегистрирован: Вт окт 22, 2013 04:37:23
Откуда: Казань

Сообщение smacorp »

dankr, у Вас вообще нет u8g2, у Вас объекты u8g2_1, u8g2_2, u8g3_3. Вероятно ошибка где-то в подключаемых .h
Последний раз редактировалось smacorp Вт авг 13, 2024 16:35:34, всего редактировалось 4 раза.
Платы для HLDI - установки лазерной засветки фоторезиста.
Фоторезист Ordyl Alpha 350
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльные маски XV501T-4 и KSM-S6189 (5 цветов).
Открыл глаза
Аватара пользователя
Сообщения: 55
Зарегистрирован: Вс сен 10, 2017 15:32:28
Откуда: Крым

Сообщение dankr »

[uquote="smacorp",url="/forum/viewtopic.php?p=4614715#p4614715"]Вам сам компилятор подсказывает - переменная u8g2 не объявлена в прелах области видимости, может имелась ввиду переменная U8G2?

Измените регистр букв на верхний.[/uquote]
Компилятор подсказывает, что незадекларирована библиотека. Что-то с ним наверное. Не уверен, что правильно без ошибок создал шрифты.
Открыл глаза
Аватара пользователя
Сообщения: 55
Зарегистрирован: Вс сен 10, 2017 15:32:28
Откуда: Крым

Сообщение dankr »

Чем и как?
Открыл глаза
Аватара пользователя
Сообщения: 40
Зарегистрирован: Пт авг 29, 2014 14:08:19

Сообщение mig958 »

Ну в общем я попробовал компилировать шрифт в U8G2 и в U8GLib - не работает. Формат шрифта другой.
Могу посоветовать русские шрифты: русские шрифты
или использовать библиотеку Adafruit_GFX ST7565_LCD
Открыл глаза
Аватара пользователя
Сообщения: 55
Зарегистрирован: Вс сен 10, 2017 15:32:28
Откуда: Крым

Сообщение dankr »

Буду пробовать. Деваться некуда. Попробую скинуть фото экрана если тут на сайте получится.

Добавлено after 9 minutes 6 seconds:
Да, скобки там не хватало. Вы совершенно правы. Но, ошибка осталась. Какая-то хрень всё равно осталась незадекларированной. А что за вторая ошибка? Увидел! Исправлю.


Жаль фото не получается выставить. Для наглядности.

Добавлено after 35 minutes 50 seconds:
""Могу посоветовать русские шрифты: русские шрифты
или использовать библиотеку Adafruit_GFX ""
В первом случае речь идёт о u8g. Во втором русским духом и не пахнет. Если я правильно понял.


Буду искать другие варианты. Всем спасибо.
Открыл глаза
Аватара пользователя
Сообщения: 40
Зарегистрирован: Пт авг 29, 2014 14:08:19

Сообщение mig958 »

А во втором случае можно воспользоваться моей программой. :)) Она написана именно для Adafruit_GFX
Открыл глаза
Аватара пользователя
Сообщения: 55
Зарегистрирован: Вс сен 10, 2017 15:32:28
Откуда: Крым

Сообщение dankr »

Есть ещё другой вопрос не менее заковыристый. Как сделать мигающие разделительные точки в часах? Сейчас в сети гуляют четыре разновидности дисплеев и кодов: 7-ми сегментные светодиодные индикаторы, OLED, 2-х строчные и маленькие цветные. Под средние ЖК почти ничего нет. Варианты, которые мне попадались не являлись прямым аналогом под мой дисплей и библиотеку RTClib. Переделки под мои комплектующие не для моих знаний. Если у кого есть рабочий вариант мигающих точек на ЖК дисплее st7565 подбросьте. Если нужен будет мой скетч в районе часов - скину.


""можно воспользоваться моей программой... "" Тогда у меня просьба. Вы бы могли сделать мне 3 буквы :shock: Не волнуйтесь. Хорошие буквы. 8 х 5 заглавную Д, Ц (чтоб хвостик в 5 пикселей поместился ) и Ь (8 х 4). Мне надо освободить 3 пиксела. Самое главное, как их можно задействовать с другими буквами? Если это гемор, то вопрос закрыт.
Открыл глаза
Аватара пользователя
Сообщения: 40
Зарегистрирован: Пт авг 29, 2014 14:08:19

Сообщение mig958 »

Вывод моргающих точек не зависит от дисплея и от библиотеки. Нужно только обеспечить раз в пол секунды печать или ":" или " " (пробела).
вот например рабочий скетч вывода часов с мигающей точкой.

Код: Выделить всё

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SH110X.h>

#define i2c_Address 0x3c //initialize with the I2C addr 0x3C Typically eBay OLED's

Adafruit_SH1106G display = Adafruit_SH1106G(128,64, &Wire, -1);

uint32_t tm;
uint8_t s;
uint8_t m;
uint8_t h;
bool dot;

void setup()   {
  display.begin(i2c_Address, true); // Address 0x3C default
  display.setTextColor(1);
  display.setTextSize(2);

}

void loop() {
  if (millis() - tm > 500) {  
		tm = millis();
    dot=!dot;
    if (dot){
		  if((++s)>59) {
        s=0;
        if((++m)>59) {
          m=0;
          if((++h)>23) h=0;
        }
      }
    }
  }
	DrawScreen();
}

void DrawScreen() {
  display.clearDisplay();
  display.setCursor(10, 10);
  if (h < 10) display.print(F("0"));
  display.print(h);
  if (dot) display.print(F(":"));
  else display.print(" ");
  if (m < 10) display.print(F("0"));
  display.print(m);
  display.print(F(" "));
  if (s < 10) display.print(F("0"));
  display.print(s);
  display.display();
}
Добавлено after 5 minutes 30 seconds:
По поводу 3 букв.
Если это шрифт совместимый с Adafruit_GFX вставте файл шрифта в сообщение и скажите что и как исправить. Я исправлю и верну Вам.
Ответить

Вернуться в «Arduino»