Здравствуйте, помогите начинающему, в сети не нашел решения.
Скачал библиотеку для tft экранов Arduino_GFX_Library, примеры работают. Но мне надо разнести программу по файлам
В основном файле есть обьявление
Arduino_GFX gfx = new Arduino_ILI9341(bus, DF_GFX_RST, 0 / rotation /, false / IPS */);
Как в другом файле мне использовать объект gfx?
Пробовал добавлять
При этом компиляция происходит с кучей ошибок, заметил, что если оставить только #include <Arduino_GFX_Library.h>, то происходит тоже самое. Получается, что нельзя инклюдить <Arduino_GFX_Library.h> в нескольких файлах? Я немного знаю язык си, там это обычная практика, как делается в с++?
“Другой” файл должен быть не ino, а cpp. Заметь не .c, а .cpp! Так вот устроена подготовка проекта у Ардуино.
Это как “сол, бол и канифол - пишуццо с мягким знаком, а тарэлька - без! Понять нельзя - нужно запомнить!” ;)))
ЗЫ: А то не поймешь. Остальное. как обычно. Инклюд в оба. В одном объявление, в другом - extern.
Благодарю! Позвольте еще один вопрос. Я хочу подключить файлы написанные на си, но весь интерфейс работы с жки в них, перевести на функции Arduino_GFX , есть способ это сделать?
У ТСа там тоже есть звёздочка, просто строка вставлена как текст, а не как код, и форумный движок посчитал её за управляющий символ перевода текста на курсив.
Если текст выделить звёздочками (по одной с двух сторон) - получим курсив, по две - жирный, по три - жирный курсив. Аналогично работают подчёркивания. По две тильды превращают текст в перечёркнутый.
В общем, строка по задумке ТСа должна выглядеть так
По теме вопроса реально помог WladDrakula, указав на ошибку инклюде. С плюсами раньше не имел дела, на си можно реализовать через callback , примерно так:
//..код в .h файле
#ifdef __cplusplus
extern "C"
{
#endif
extern void (*lcd_spi_wr_data)(uint8_t data);//указатель на функцию
void lcd_set_spi_callback(void (*spi)(uint8_t data));
#ifdef __cplusplus
}
#endif
//..код в .с файле библиотеки
void func(uint8_t d)
{
//остальной код
lcd_spi_wr_data(d);//вызов callback функции
}
//************************************
//..код в main.сpp файле
#include <.h>
void spi_wr8b(uint8_t d)//эта функция будет вызываться из си файла
{
tft.writedata(d);
}
void setup(void)
{
lcd_set_spi_callback(spi_wr8b);//назначение callback функции
}
Интересны еще варианты реализации, но я предполагаю что их нет. Проще переписать библиотеку на плюсах. Спасибо за помощь.