TFT HX3847D вывод переменных и очистка экрана
- Войдите на сайт для отправки комментариев
Чт, 19/09/2019 - 10:55
Добрый день.
На arduino MEga (так же ранее на UNO тестировал) поставил шилд 2.8inc TFT Touch Shield
Пробовал на разных драйверах но запустилось только на этом
Хотел вывести переменную, но не получается через void TFT::lcd_display_string
Обычный вывод:
Tft.lcd_display_string(60, 120, (const uint8_t *)"1Hello, world !", FONT_1608, RED);
А вот с
String str1="asdf"; Tft.lcd_display_string(60, 120, str1, world !", FONT_1608, RED);
Не получается.
Пожалуйста помогите разобраться с этими драйверами, что бы нормально работать с этим экраном.
PS: Гуглил. Пытался запустить на других библиотеках, но не получилось - белый экран
1. Вас не смущает незакрытая кавычка во втором примере? А вот компилятор она, наверняка, смущает.
2. Ничего, что в первом примере методу lcd_display_string передаётся пять параметров, а во втором примере - шесть?
1. Вас не смущает незакрытая кавычка во втором примере? А вот компилятор она, наверняка, смущает.
2. Ничего, что в первом примере методу lcd_display_string передаётся пять параметров, а во втором примере - шесть?
Странно очень скопировалось, в первом посте это неправильное копирование
Вот что выдает компилятор:
Вот вырезка из библиотеки LCD.cpp
дак он тебе и говорит, что
const
uint8_t *pchString,
и String &
это совсем-совсем, с его точки зрения, разные типы
объяви вместо
String
as
=
"asd"
;
const char *as = "asd";
и ты удивишься.
Вот что выдает компилятор:
И что Вас смущает? Функция ожидает типа "
const
uint8_t*
" а Вы ей пихаете "String&". Вот она и не понимает что ей делать. Передавайте ей константный указатель на uint8_t, и будет Вам счастье. Ну или добавьте метод, принимающий String&, и тогда передавайте что хотите.объяви вместо
String
as
=
"asd"
;
const char *as = "asd";
и ты удивишься.
Спасибо! удивился!
А как можно вывести переменную типа int? и с плавающей точкой?
И что Вас смущает? Функция ожидает типа "
const
uint8_t*
" а Вы ей пихаете "String&". Вот она и не понимает что ей делать. Передавайте ей константный указатель на uint8_t, и будет Вам счастье. Ну или добавьте метод, принимающий String&, и тогда передавайте что хотите.А как это сделать?
объяви вместо
String
as
=
"asd"
;
const char *as = "asd";
и ты удивишься.
Строковые константы, записанные в "двойных кавычка" интерпретируются компилятором как массив символов, а не объект класса String.
Я сделал чтоб можно было выводить численную переменную
Хотел вывести русскими буквами, а кодировка не поддерживается, может кто подскажет каким образом можно руссифицировать? Очистку экрана тоже не нашел
Tft.lcd_display_string(60, 152,
"Привет"
, FONT_1608, RED);
// Нормально
И что Вас смущает? Функция ожидает типа "
const
uint8_t*
" а Вы ей пихаете "String&". Вот она и не понимает что ей делать. Передавайте ей константный указатель на uint8_t, и будет Вам счастье. Ну или добавьте метод, принимающий String&, и тогда передавайте что хотите.А как это сделать?
как передать указатель на uint8_t - показал DetSimen на пару сообщений выше. А как добавить метод - вам пока обьяснить будет не проще, чем обьяснить блондинке, как перебрать коробку передач лексуса :)
читайте учебники и начните с чего-нибудь простого.
Я сделал чтоб можно было выводить численную переменную
Хотел вывести русскими буквами, а кодировка не поддерживается
что именно вы хотели вывести русскими буквами в числовой переменной? :)
А как можно вывести переменную типа int? и с плавающей точкой?
А библиотеку открывали? Смотрели? Название функции "lcd_display_num" ничего не навеяло?
Но Вы же сейчас спросите "а как?". Ответ простой, запостить запрос в разделе "Ищу исполнителя", заплатить и Вам сделают.
Строковые константы, записанные в "двойных кавычка" интерпретируются компилятором как массив символов, а не объект класса String.
ты тоже удивишься, но тут неявно вызывается конструктор String с параметром const char *
Помогите пожалуйста очистить экран
жидкость купи для очистки экранов, стоит недорого.
ну, или найди функцию clear() или clrscr() в своей библиотеке
Помогите пожалуйста очистить экран
Простите, Вы издеваетесь и троллите всех? В посте #11 я Вас спросил
А библиотеку открывали? Смотрели?
Неужели даже после этого Вы не открыли и не посмотрели её? А если смотрели, то как Вы умудрились не заметить там метода "void lcd_clear_screen(uint16_t hwColor)"?
Выведи прямоугольник залитый нужным цветом.
Помогите пожалуйста очистить экран
блин, ну откройте уже библиотеку и почитайте названия функций! Ведь так и назыывается - "очистка экрана". только по ангельски
Помогите пожалуйста очистить экран
Простите, Вы издеваетесь и троллите всех? В посте #11 я Вас спросил
А библиотеку открывали? Смотрели?
Неужели даже после этого Вы не открыли и не посмотрели её? А если смотрели, то как Вы умудрились не заметить там метода "void lcd_clear_screen(uint16_t hwColor)"?
Прошу прощение если сморозил глупость или что то еще по незнанке
Я пробовал
Выдавал ошибку что ненайдена функция.
Сейчас сделал
И все ГУД.
Спасибо большое за информацию!!
Помогите пожалуйста очистить экран
А мы уже думали вылетать на помощь. Ключевое слово прозвучало
Я пробовал
Выдавал ошибку что ненайдена функция.
Сейчас сделал
И все ГУД.
Я так понял, программирование выполняется методом тыка. Никакого понимания что означает "lcd." нет.
При таком подходе у Вас будут возникать проблемы на каждом шагу. А самое страшное, открою Вам большой секрет, нередко бывает, что компилятор всё съедает и не ругается, а программа работает совсем не так, как хотелось.
Хотите нормально жить, возьмите всё же хорошую книжку по языку и изучите.
мите всё же хорошую книжку по языку и изучите.
Хорошо, буду изучать!
Прошу подсказать, в данной библиотеке не нашел поворот экрана, это нужно изучать документацию на чип экрана?
Кончайте придираться к начинающим. Тут вон великие профи запросы памяти методом тыка вставляют, по принципу "только бы скомпилировать, а там хоть всю память засри", а вы на новичка наезжаете.
Прошу подсказать, в данной библиотеке не нашел поворот экрана, это нужно изучать документацию на чип экрана?
должен быть метод, содержащий "rotate" в названии. Ищи.
должен быть метод, содержащий "rotate" в названии. Ищи.
К сожалению его нету, несколько раз просмотрел библиотеку *.h и *.cpp
Приложил бы к приложению, но не знаю как, а полностью код если выложу боюсь меня тут вообще линчуют)
К сожалению его нету, несколько раз просмотрел библиотеку *.h и *.cpp
В этой библиотеке вывод производится по одной точке за раз, то есть для поворота достаточно поменять height и width дисплея и х и у точки в паре мест
В этой библиотеке вывод производится по одной точке за раз, то есть для поворота достаточно поменять height и width дисплея и х и у точки в паре мест
Пожалуйста подскажите подробнее
Ну, я же Вам сказал, начните с чтения книжки. Вы плюёте на советы и отсюда у Вас проблемы не ровном месте.
В библиотеке есть запись в регистры. А регистрами настраивается всё, в том числе и поворот изображения (причём даже не всего, а можно по частям.
Как именно настраивается и что писать в какие регистры написано в даташите в разделе 6. Там даже картинки есть лежащих на боку и перевёрнутых букв.
Но Вы это не реализуете пока у Вас проблема функции нормальный типа передать.
Начните с учёбы, а не со сложного проекта. Наоборот не работает. Даже если кто и подскажет как написать букву А, у Вас тут же новый вопрос появится про букву Б (как в этой теме - "надо вывести строку, ой - и число, ой - и повернуть, ой ...) . В итоге, Вас просто начнут посылать.
В этой библиотеке вывод производится по одной точке за раз, то есть для поворота достаточно поменять height и width дисплея и х и у точки в паре мест
Пожалуйста подскажите подробнее
в библиотеке есть метод, который рисует на экране одну точку с координатами х и у, называется, по-моему, draw_pixel(). Попробуйте в этой функции просто поменять х и у местами, сохраните ее в библиотеке и выведите на экран како-нить текст. Если я не ошибаюсь - текст выведется в вертикальном направлении, правда отзеркаленный по оси у. Если получится - можно будет дальше думать, как оформить поворот экрана в виде удобной функции.
Все это я пишу только потому, что считаю некрасивым сказать А и не сказать Б, раз уж начал. А так в принципе я полностью согласен с Евгением - без базовых знаний никакие подсказки типа этой не помогут вам довести проект до конца.