Например TDA7294

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





Текущее время: Вс июл 20, 2025 03:31:51

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


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



Начать новую тему Ответить на тему  [ Сообщений: 68 ]    , , , 4
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Редактор шрифтов Adafruit_GFX
СообщениеДобавлено: Вт июн 24, 2025 10:02:56 
Родился

Зарегистрирован: Пт окт 02, 2020 17:57:01
Сообщений: 17
Рейтинг сообщения: 0
если я правильно понял, сначала я должен строку разделить на отдельные цифры. Потом сравнивать цифры которая была и которая выводится, если цифра отличается, то ее затираем и выводим новую?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Редактор шрифтов Adafruit_GFX
СообщениеДобавлено: Вт июн 24, 2025 13:33:19 
Первый раз сказал Мяу!
Аватар пользователя

Карма: 2
Рейтинг сообщений: 19
Зарегистрирован: Пт авг 29, 2014 14:08:19
Сообщений: 38
Рейтинг сообщения: 0
Вы зря не рассказываете что Вы делаете (какой экран, какая информация выводится..), подсказать было бы намного проще.
Анализировать каждую цифру очень геморно.
Вот отрывок из программы индикатора блока питания. Она вообще не использует шрифты и мерцание отсутствует на любых экранах. Попробуйте ее проанализировать.
Код:
#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library for ST7735

int X[2][7][6] = { {
   { 21, 22, 22, 20, 18, 18 },  // 40x22 X координаты вершин треугольников цифр
   { 20, 22, 22, 21, 18, 18 },   { 20, 19, 3, 2, 5, 17 },
   { 1, 0, 0, 2, 4, 4 },   { 2, 0, 0, 1, 4, 4 },
   { 2, 3, 19, 20, 17, 5 }, { 5, 17, 19, 17, 5, 3 }},
   {{ 11, 12, 12, 11, 10, 10 },  // 22x12
   { 11, 12, 12, 11, 10, 10 },   { 10, 9, 3, 2, 3, 9 },
   { 1, 0, 0, 1, 2, 2 },   { 1, 0, 0, 1, 2, 2 },
   { 2, 3, 9, 10, 9, 3 },   { 2, 3, 9, 10, 9, 3 }} };
int Y[2][7][6] = { {
   { 2, 3, 17, 19, 17, 5 },      // 40x22 Y координаты вершин треугольников цифр
   { 21, 23, 37, 38, 35, 23 },   { 39, 40, 40, 39, 36, 36 },
   { 38, 37, 23, 21, 23, 35 }, { 19, 17, 3, 2, 5, 17 },
   { 1, 0, 0, 1, 4, 4 },   { 18, 18, 20, 22, 22, 20 }},
   {{ 2, 3, 9, 10, 9, 3 },         // 22x12
   { 12, 13, 19, 20, 19, 13 },   { 21, 22, 22, 21, 20, 20 },
   { 20, 19, 13, 12, 13, 19 },   { 10, 9, 3, 2, 3, 9 },
   { 1, 0, 0, 1, 2, 2 }, { 11, 10, 10, 11, 12, 12 }} };
   // Коды цифр 0..9 и пробел
int seg[11] = { 63, 3, 109, 103, 83, 118, 126, 35, 127, 119, 0 };

Adafruit_ST7735 tft = Adafruit_ST7735(34/*TFT_CS*/, 38/*TFT_DC*/, 39/*TFT_RST*/);

void setup(void) {
   tft.initR(INITR_GREENTAB);      // Init ST7735S chip, black tab
   tft.fillScreen(BLACK);
   tft.setTextColor(WHITE, BLACK);
   tft.drawLine(0, 142, 128, 142, GREY);
}

void loop() {
   if (millis() - timind > 1000) {
   izm();   // Измерение
   ind();   // Индикация
   timind += 1000;
}
//---------- Индикация ----------
static void ind(void) {
   PrintV(clc * 10, uo * 10);
   PrintA(clc);
   PrintP(clc, uo);
   PrintC(clc, uo);
   uo = clc;
}
//---------- Рисуем цифру ----------
static void digitDraw(int h, int x, int y, int d /*Цифра*/, unsigned int Color) {
   for (int s = 0; s < 7; s++) {  // Рисуем сегменты из треугольников
      int c = Color;
      if (!bitRead(seg[d], s)) c = BLACK;
      int x0 = x + X[h][s][0];      int y0 = y + Y[h][s][0];
      tft.fillTriangle(x0, y0, x + X[h][s][1], y + Y[h][s][1], x + X[h][s][2], y + Y[h][s][2], c);
      tft.fillTriangle(x0, y0, x + X[h][s][2], y + Y[h][s][2], x + X[h][s][3], y + Y[h][s][3], c);
      tft.fillTriangle(x0, y0, x + X[h][s][3], y + Y[h][s][3], x + X[h][s][4], y + Y[h][s][4], c);
      tft.fillTriangle(x0, y0, x + X[h][s][4], y + Y[h][s][4], x + X[h][s][5], y + Y[h][s][5], c);
   }
}
//---------- Индикация V ----------
static void PrintV(int u, int uo) {
   if (u >= 10000) {  // Если больше четырех знаков
      u /= 10;
      if (uo < 10000) {
         digitDraw(0, 45, 9, (u % 1000) / 100, BLACK);
         tft.fillCircle(33, 46, 3, 0);
      }
      digitDraw(0, 30, 9, (u % 1000) / 100, GREEN);
      tft.fillCircle(63, 46, 3, GREEN);
   }
   else {
      if (uo >= 10000) {
         digitDraw(0, 30, 9, (u % 1000) / 100, BLACK);
         tft.fillCircle(63, 46, 3, 0);
      }
      digitDraw(0, 45, 9, (u % 1000) / 100, GREEN);
      tft.fillCircle(33, 46, 3, GREEN);
   }
   int i = u % 1000;
   digitDraw(0, 0, 9, u / 1000, GREEN);
   i = u % 100;
   digitDraw(0, 75, 9, i / 10, GREEN);
   digitDraw(0, 105, 9, i % 10, GREEN);
}
//---------- Индикация A ----------
static void PrintA(unsigned int u) {
   digitDraw(0, 0, 63, u / 1000, CYAN);
   int i = u % 1000;
   digitDraw(0, 45, 63, i / 100, CYAN);
   i = u % 100;
   digitDraw(0, 75, 63, i / 10, CYAN);
   digitDraw(0, 105, 63, i % 10, CYAN);
   tft.fillCircle(33, 100, 3, CYAN);
}



Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Редактор шрифтов Adafruit_GFX
СообщениеДобавлено: Вс июл 06, 2025 21:31:26 
Родился

Зарегистрирован: Пн авг 31, 2020 11:00:02
Сообщений: 4
Рейтинг сообщения: 0
Челом бью! Низчайший поклон!!!!! Спасибо! Потрясающий труд и полезный!!!!! КУда кидать донаты???


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Редактор шрифтов Adafruit_GFX
СообщениеДобавлено: Вс июл 13, 2025 18:37:39 
Родился

Зарегистрирован: Пт окт 02, 2020 17:57:01
Сообщений: 17
Рейтинг сообщения: 0
А можешь скинуть, кусок кода там где выводил сегментные цифры?


Вернуться наверх
 
Выбираем индустриальные и медицинские источники питания MEAN WELL в открытом исполнении

Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Редактор шрифтов Adafruit_GFX
СообщениеДобавлено: Вт июл 15, 2025 17:39:02 
Первый раз сказал Мяу!
Аватар пользователя

Карма: 2
Рейтинг сообщений: 19
Зарегистрирован: Пт авг 29, 2014 14:08:19
Сообщений: 38
Рейтинг сообщения: 0
Я не понимаю что тебя интересует.
Конкретно какой процессор? Какой экран? Какую информацию выводить?(целые числа/вещественные, точность, сколько цифр, через шрифт или через рисование). У меня десятки программ и во всех разные методы вывода. Все зависит от задач. Например нужно выводить измеренное напряжение с АЦП. в диапазоне 0-23в с точностью 2 цифры после запятой на цветной ЖКИ ST7789 MK: LGT8F328, размер прямоугольника вывода: ~70x20 pixel. Еще и от графической библиотеки зависит!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Редактор шрифтов Adafruit_GFX
СообщениеДобавлено: Ср июл 16, 2025 13:26:46 
Родился

Зарегистрирован: Пт окт 02, 2020 17:57:01
Сообщений: 17
Рейтинг сообщения: 0
Дисплей ili9341 микроконтроллер atmega328 пока. Делаю БК для авто, пока вывожу напряжение питания, одна цифра после запятой , давление масла 2 цифры после запятой и температура двигателя, одна цифра после запятой. Все это четко работает на стандартном шрифте адафруит, но не очень красиво. Хочется что бы выглядело примерно так , как у тебя в статье и без мерцания в будущем может перейду на другой процессор и добавлю ещё датчиков. У меня тоже есть ST7789, возможно тоже на него перейду.


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Редактор шрифтов Adafruit_GFX
СообщениеДобавлено: Ср июл 16, 2025 22:33:43 
Первый раз сказал Мяу!
Аватар пользователя

Карма: 2
Рейтинг сообщений: 19
Зарегистрирован: Пт авг 29, 2014 14:08:19
Сообщений: 38
Рейтинг сообщения: 0
Так как экран для этого микропроцессора слишком большой (не хватает быстродействия, да и шрифт будет прилично занимать память) без мерцания можно выводить только одним методом: треугольников.
По той же причине (дифициту памяти) желательно не использовать вещественные переменные. В аттаче работоспособный (реально проверенный) пример с приемлимыми параметрами.


Вложения:
Комментарий к файлу: Пример вывода 3х параметров
ILI9341.ZIP [6.11 KiB]
Скачиваний: 4
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Редактор шрифтов Adafruit_GFX
СообщениеДобавлено: Чт июл 17, 2025 18:21:46 
Родился

Зарегистрирован: Пт окт 02, 2020 17:57:01
Сообщений: 17
Рейтинг сообщения: 0
Спасибо большое. Попробую разобраться.
Не могу только понять когда меняю под свою плату cs10, DC9, rst8
Экран не работает


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

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


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


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

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


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