Как сделать собственный символ на ЖК-дисплее TFT? (128x128)
В настоящее время я использую библиотеку ucglib. Я новичок в arduino и хочу просто отобразить ЖК-смайлик, который я сделал с помощью генератора байтов. У меня все еще есть кое-что из оригинального шрифта «привет мир», но мне любопытно, как заставить мой символ работать.
Я хочу сделать разные смайлики разных цветов, но не знаю, как это сделать, поскольку каждое руководство находится на ЖК-дисплее 16x2, а не на tft-формате. У меня есть Arduino Nano, которая просто подключена к этому ЖК-дисплею. Я собираюсь заставить нажатие кнопок менять смайлик после того, как разберусь, как на самом деле вставить в него смайлик. Надеюсь, кто-нибудь сможет помочь.
* LED = 3.3V
* SCK = 13
* SDA = 11
* A0 = 8
* RESET = 9
* CS = 10
* GND = GND
* VCC = 5V
#include "Ucglib.h" // Включаем библиотеку Ucglib для управления дисплеем
// Создаем дисплей и определяем пины:
Ucglib_ST7735_18x128x160_HWSPI ucg(8, 10, 9);
int smiley = byte customChar[] = {
B00000,
B01010,
B01010,
B00000,
B10001,
B10001,
B11111,
B00000
};
void setup(void) // Начало установки
{
//ucg.begin(UCG_FONT_MODE_TRANSPARENT); // Он не перезаписывает фон, так что это беспорядок для текста, который меняется
ucg.begin(UCG_FONT_MODE_SOLID); // Он записывает фон для текста. Это рекомендуемый вариант
ucg.clearScreen(); // Очистить экран
ucg.setRotate180(); // Введите 90, 180 или 270 или прокомментируйте, чтобы оставить значение по умолчанию
ucg.setColor(0, 255, 255, 255); // Установить цвет (0,R,G,B)
ucg.setColor(1, 0, 0, 0); // Установить цвет фона текста (1,R,G,B)
ucg.setPrintPos(0,24); // Установить позицию (х, у)
ucg.print("Welcome"); // Печать текста или значения
// Рисуем смайлик:
ucg.setColor(0, 255, 255); // Установить цвет (0,R,G,B)
ucg.drawFrame(0, 58, 60, 30); // Начать с верхнего левого пикселя (x,y,with,height)
void loop(void) // Начало цикла
{
Variable1++; // Увеличиваем переменную на 1
if(Variable1 > 150) // Если Variable1 больше 150
{
Variable1 = 0; // Установить переменную 1 в 0
}
// Преобразование Variable1 в строку, чтобы мы могли изменить выравнивание текста вправо:
// Его также можно использовать для добавления или удаления десятичных чисел.
char string[10]; // Создаем массив символов из 10 символов
// Преобразование числа с плавающей запятой в строку:
dtostrf(Variable1, 3, 0, string); // (<переменная>,<количество цифр, которые мы собираемся использовать>,<количество десятичных цифр>,<имя строки>)
// Мы собираемся вывести на дисплей все, что находится в динамике в цикле, чтобы постоянно обновлять:
// Записываем на дисплей Variable1 с выравниванием текста по левому краю:
ucg.setFont(ucg_font_inb16_mr); // Установить шрифт
ucg.setColor(0, 255, 255, 0); // Установить цвет (0,R,G,B)
ucg.setColor(1, 0, 0, 0); // Установить цвет фона текста (1,R,G,B)
ucg.setPrintPos(9,81); // Установить позицию (х, у)
ucg.print(Variable1); // Печать текста или значения
// Есть проблема, когда мы переходим, например, от 100 к 99, потому что он не записывает автоматически фон на
// последнюю цифру больше не обновляем. Нам нужно проверить, сколько цифр и заполнить оставшееся место.
if(Variable1 < 10) // Если Variable1 меньше 10...
{
// Залейте другую цифру фоновым цветом:
ucg.print(" ");
}
if(Variable1 < 100) // Если Variable1 меньше 100...
{
// Залейте другую цифру фоновым цветом:
ucg.print(" ");
}
// Выводим на дисплей строку с выравниванием текста по правому краю:
ucg.setFont(ucg_font_inb16_mr); // Установить шрифт
ucg.setColor(0, 0, 255, 0); // Установить цвет (0,R,G,B)
ucg.setColor(1, 0, 0, 0); // Установить цвет фона текста (1,R,G,B)
ucg.setPrintPos(76,81); // Установить позицию (х, у)
ucg.print(string); // Печать текста или значения
} // Конец цикла
1 ответ
Лучший ответ:
Просто: нет.
Вам нужно создать "пользовательский символ" только на символьных дисплеях (где вы активно программируете новый символ во внутренний набор символов дисплея).
С графическим дисплеем нет "символа" - только графика. В графической библиотеке есть шрифты, которые затем используются для преобразования текста в графику.
Чтобы отобразить что-то, чего нет в выбранном шрифте, просто нарисуйте его. Это может быть растровая графика (примеры будут в выбранной вами графической библиотеке) или использование примитивов, таких как круги и линии.
- Низкая частота обновления 1,8-дюймового TFT-дисплея
- Увеличьте или уменьшите яркость дисплея Nextion
- Не удалось выделить SSD1306 при добавлении константы
- Нужна помощь с библиотекой U8GLIB
- SSD1306 распознается сканером I2C, но не может его отобразить
- TFT-дисплей ST7789 показывает правильное изображение только при нажатой кнопке сброса Arduino - Почему?
- Альтернативы дисплею Nextion
- Аппаратный SPI Arduino NANO не работает
ах, я вижу, мой плохой. Тогда я постараюсь найти его. Я предполагаю, что могу просто «печатать» :), и это будет отображаться на экране, хорошо?, @Ijustneedtopassprobs
Вы можете изменить шрифт, которым вы печатаете. Сделать собственный шрифт. Не знаю, как вы это сделаете с выбранной вами библиотекой. Там могут быть примеры и учебные пособия, а может и не быть..., @Majenko
Я более чем счастлив использовать другую библиотеку, эта мне показалась идеальной для того, что я хотел. Я думаю, что у них есть целый список шрифтов, поэтому я могу просто выбрать пиксельный и попробовать все, что в моих силах. Я знаю, что это другая тема, но если моя Arduino полностью отключена от макетной платы и подключена к ЖК-дисплею, могу ли я использовать кнопку на макетной плате и просто подключить к ней провод или лучше подключить Arduino Nano к сам макет, чтобы кнопки работали?, @Ijustneedtopassprobs
Не имеет значения., @Majenko
Спасибо Маженко. Если вы все еще здесь, на экране 128 x 128, какие оси y и x будут средними? Я пробовал несколько, но я думаю, что текст все еще за пределами экрана? Проблемы с этим, @Ijustneedtopassprobs
64x64 - это середина экрана 128x128., @Majenko
о это половина. Ха, должно быть, я идиот. Спасибо, вы сделали мой вечер намного легче! Я оставлю тебя в покое =). Еще раз спасибо, @Ijustneedtopassprobs