Работа с цветными графическими дисплеями TFT (библиотека UTFT)

Библиотека

Для работы с дисплеями Цветной графический дисплей 2.8 TFT 320x240Цветной графический дисплей 2.8 TFT 320x240 UNOЦветной графический дисплей 3.2 TFT 480x320 MEGAЦветной графический дисплей 2.4 TFT 240×320Цветной графический дисплей 2.2 TFT 320×240 отлично подойдет библиотека UTFT. Библиотеку необходимо скачать с нашего сайта, так как в неё добавлена поддержка дисплеев 2.8 TFT 320x240 UNO, 3.95 TFT 480x320 UNO, 3.2 TFT 480x320 MEGA.

Поддерживаемые дисплеи

Дисплеи Инициализация
Цветной графический дисплей 2.8 TFT 320х240

Данный дисплей совместим с любыми Arduino.

UTFT myGLCD(TFT01_24SP, 6, 5, 4, 3, 2);

Дисплей можно подключать к любым выводам Arduino указав № выводов при объявлении объекта myGLCD библиотеки UTFT:
UTFT myGLCD(TFT01_24SP, SDI/MOSI, SCK, CS, RESET, DC/RS);

На дисплее установлен преобразователь уровней, так что его можно подключать и к 3В и к 5В логике.

Описание работы с сенсорным экраном находится в разделе Wiki работа с TouchScreen

Цветной графический дисплей 3.5 TFT 480x320 MEGA

Цветной графический дисплей 3.2 TFT 480x320 MEGA.

Данный дисплей совместим только с Arduino Mega.

UTFT myGLCD(TFT32MEGA, 38, 39, 40, 41); // дисплей на чипе ILI9341.
или
UTFT myGLCD(TFT32MEGA_2, 38, 39, 40, 41); // дисплей на чипе HX8357C.

Дисплеи поставляются на базе чипа ILI9341 или HX8357C. Если изображение на дисплее отображается зеркально, то измените тип дисплея: укажите либо TFT32MEGA, либо TFT32MEGA_2.

Если Вы не планируете использовать SD карту, то выводы 50-53 можно использовать для подключения других модулей.

Выводы не подписанные на рисунке, не используются дисплеем.

Распиновка дисплея 3,2 TFT 480 x 320

Цветной графический дисплей 2.8 TFT 320x240 UNO
Данный дисплей совместим только с Arduino Uno.

UTFT myGLCD(TFT28UNO, A2, A1, A3, A4, A0);

Если Вы не планируете использовать SD карту, то выводы 10-13 можно использовать для подключения других модулей.

Выводы не подписанные на рисунке, не используются дисплеем.

Описание работы с сенсорным экраном находится в разделе Wiki работа с TouchScreen

Распиновка дисплея 2,8 TFT 320 x 240
Цветной графический дисплей 2.4 TFT 240×320
Данный дисплей совместим с любыми Arduino.

UTFT myGLCD(TFT01_24SP, 5, 4, 8, 7, 6);

Дисплей можно подключать к любым выводам Arduino указав № выводов при объявлении объекта myGLCD библиотеки UTFT:
UTFT myGLCD(TFT01_24SP, SDI/MOSI, SCK, CS, RESET, DC/RS);

Уровень логической «1» на входах дисплея ≤ 3,3 В.
Если Вы используете 5 В логику, то подключайте входы дисплея через делители:

Подключение 2,4 дюймового TFT дисплея 240x320 к Arduino

При питании от 3,3 В необходимо замкнуть перемычку J1 на обратной стороне платы дисплея.

Если Вы желаете использовать SD-карту, то выводы SD_CS, SD_MOSI, SD_MISO и SD_SCK необходимо подключить к Arduino по аппаратной шине SPI:

Если аппаратный вывод CS(SS) Arduino занят, то вывод SD_CS можно подключить к любому другому выводу Arduino, указав его номер в скетче (см пример в файле image_SD библиотеки UTFT).

TouchScreen можно подключать к любым выводам Arduino указав № выводов при объявлении объекта myTouch библиотеки URTouch:
URTouch myTouch( T_CLK, T_CS, T_DIN, T_OUT, T_IRQ);
Например: URTouch myTouch(13, 12, 11, 10, 9);

Указанные в примере выводы Arduino для подключения TouchScreen пересекаются с выводами аппаратной шины SPI на платах Arduino Uno, Pro Mini, Nano и т.д. Если Вы желаете использовать на этих платах и TouchScreen, и SD-карту, то для TouchScreen нужно выбрать другие выводы Arduino, например, аналоговые выводы A0-A4, указав их в скетче при объявлении объекта:
URTouch myTouch(A0, A1, A2, A3, A4);

Описание работы с сенсорным экраном со встроенным контроллером функций TouchScreen находится в разделе Wiki работа с TouchScreen по последовательной шине данных.

Цветной графический дисплей 2.2 TFT 320×240



Цветной графический дисплей 1.8 TFT 128x160

Данный дисплей совместим с любыми Arduino.

UTFT myGLCD(TFT01_22SP, 5, 4, 8, 7, 6);

UTFT myGLCD(TFT18SHLD, 5, 4, 8, 7, 6);

Дисплей можно подключать к любым выводам Arduino указав № выводов при объявлении объекта myGLCD библиотеки UTFT:
UTFT myGLCD(TFT01_22SP, SDI/MOSI, SCK, CS, RESET, DC/RS);

Уровень логической «1» на входах дисплея ≤ 3,3 В.
Если Вы используете 5 В логику, то подключайте входы дисплея через делители:

Подключение 2,2 дюймового TFT дисплея 320x240 к Arduino

Если Вы желаете использовать SD-карту, то выводы SD_CS, SD_MOSI, SD_MISO и SD_SCK необходимо подключить к Arduino по аппаратной шине SPI:

Если аппаратный вывод CS(SS) Arduino занят, то вывод SD_CS можно подключить к любому другому выводу Arduino, указав его номер в скетче (см пример в файле image_SD библиотеки UTFT).

Если Вы собираетесь использовать библиотеку UTFT для работы с другими дисплеями, то закомментируйте строку с названием Вашего дисплея в файле «memorysaver.h». А для экономии памяти, раскомментируйте остальные строки кода файла «memorysaver.h».

#1 Пример

Выводим на дисплей текст тремя базовыми шрифтами:

#include <UTFT.h>                                      // подключаем библиотеку UTFT
extern uint8_t SmallFont[];                            // подключаем маленький шрифт
extern uint8_t BigFont[];                              // подключаем большой шрифт
extern uint8_t SevenSegNumFont[];                      // подключаем цифровой шрифт
// UTFT myGLCD(TFT395UNO,   A2,A1,A3,A4,A0);           // тип дисплея 3,95 UNO  (480x320 chip ILI9327)
// UTFT myGLCD(TFT32MEGA,   38,39,40,41);              // тип дисплея 3,2  MEGA (480x320 chip ILI9481)
// UTFT myGLCD(TFT32MEGA_2, 38,39,40,41);              // тип дисплея 3,2  MEGA (480x320 chip HX8357C)
   UTFT myGLCD(TFT28UNO,    A2,A1,A3,A4,A0);           // тип дисплея 2,8  UNO  (320x240 chip ILI9341)
// UTFT myGLCD(TFT01_24SP,  5,4,8,7,6);                // тип дисплея 2,8  TFT  (240×320 chip ILI9341)
// UTFT myGLCD(TFT01_24SP,  5,4,8,7,6);                // тип дисплея 2,4  TFT  (240×320 chip ILI9341)
// UTFT myGLCD(TFT01_22SP,  5,4,8,7,6);                // тип дисплея 2,2  TFT  (320×240 chip ILI9340)
// UTFT myGLCD(TFT18SHLD,   5,4,8,7,6);                // тип дисплея 1,8  TFT  (128x160 chip ST7735S)
void setup()
{
  myGLCD.InitLCD();                                    // инициируем дисплей (в качестве параметра данной функции можно указать ориентацию дисплея: PORTRAIT или LANDSCAPE), по умолчанию LANDSCAPE - горизонтальная ориентация
}
void loop()
{
//Стираем все с экрана
  myGLCD.clrScr();                                     // стираем всю информацию с дисплея
  myGLCD.setFont(SmallFont);                           // устанавливаем маленький шрифт
  myGLCD.setColor(VGA_WHITE);                          // устанавливаем цвет текста
  myGLCD.print("iarduino.ru | SmallFont", CENTER, 50); // выводим текст на дисплей
  myGLCD.setFont(BigFont);                             // устанавливаем большой шрифт
  myGLCD.setColor(VGA_BLUE);                           // устанавливаем цвет текста
  myGLCD.print("BigFont", CENTER, 100);                // выводим текст на дисплей
  myGLCD.print("iarduino.ru", CENTER, 115);            // выводим текст на дисплей
  myGLCD.setFont(SevenSegNumFont);                     // устанавливаем цифровой шрифт
  myGLCD.setColor(VGA_FUCHSIA);                        // устанавливаем цвет текста
  myGLCD.print("1234567890", CENTER, 150);             // выводим текст на дисплей
  delay(20000);
}

#2 Пример

Заливаем весь дисплей различными цветами:

#include <UTFT.h>                                      // подключаем библиотеку UTFT
// UTFT myGLCD(TFT395UNO,   A2,A1,A3,A4,A0);           // тип дисплея 3,95 UNO  (480x320 chip ILI9327)
// UTFT myGLCD(TFT32MEGA,   38,39,40,41);              // тип дисплея 3,2  MEGA (480x320 chip ILI9481)
// UTFT myGLCD(TFT32MEGA_2, 38,39,40,41);              // тип дисплея 3,2  MEGA (480x320 chip HX8357C)
   UTFT myGLCD(TFT28UNO,    A2,A1,A3,A4,A0);           // тип дисплея 2,8  UNO  (320x240 chip ILI9341)
// UTFT myGLCD(TFT01_24SP,  5,4,8,7,6);                // тип дисплея 2,8  TFT  (240×320 chip ILI9341)
// UTFT myGLCD(TFT01_24SP,  5,4,8,7,6);                // тип дисплея 2,4  TFT  (240×320 chip ILI9341)
// UTFT myGLCD(TFT01_22SP,  5,4,8,7,6);                // тип дисплея 2,2  TFT  (320×240 chip ILI9340)
// UTFT myGLCD(TFT18SHLD,   5,4,8,7,6);                // тип дисплея 1,8  TFT  (128x160 chip ST7735S)
void setup()
{
  myGLCD.InitLCD();                                    // инициируем дисплей (в качестве параметра данной функции можно указать ориентацию дисплея: PORTRAIT или LANDSCAPE), по умолчанию LANDSCAPE - горизонтальная ориентация
  myGLCD.clrScr();                                     // стираем всю информацию с дисплея
}
void loop()
{
  myGLCD.fillScr(VGA_RED   ); delay(1000);             // заливаем экран красным     цветом
  myGLCD.fillScr(VGA_GREEN ); delay(1000);             // заливаем экран зелёным     цветом
  myGLCD.fillScr(VGA_BLUE  ); delay(1000);             // заливаем экран синим       цветом
  myGLCD.fillScr(VGA_SILVER); delay(1000);             // заливаем экран серебристым цветом
  myGLCD.fillScr(VGA_MAROON); delay(1000);             // заливаем экран бордовым    цветом
  myGLCD.fillScr(VGA_NAVY  ); delay(1000);             // заливаем экран тем. синим  цветом
}

#3 Пример

Рисуем различные графические элементы:

#include <UTFT.h>                                       // подключаем библиотеку UTFT
// UTFT myGLCD(TFT395UNO,   A2,A1,A3,A4,A0);            // тип дисплея 3,95 UNO  (480x320 chip ILI9327)
// UTFT myGLCD(TFT32MEGA,   38,39,40,41);               // тип дисплея 3,2  MEGA (480x320 chip ILI9481)
// UTFT myGLCD(TFT32MEGA_2, 38,39,40,41);               // тип дисплея 3,2  MEGA (480x320 chip HX8357C)
   UTFT myGLCD(TFT28UNO,    A2,A1,A3,A4,A0);            // тип дисплея 2,8  UNO  (320x240 chip ILI9341)
// UTFT myGLCD(TFT01_24SP,  5,4,8,7,6);                // тип дисплея 2,8  TFT  (240×320 chip ILI9341)
// UTFT myGLCD(TFT01_24SP,  5,4,8,7,6);                 // тип дисплея 2,4  TFT  (240×320 chip ILI9341)
// UTFT myGLCD(TFT01_22SP,  5,4,8,7,6);                 // тип дисплея 2,2  TFT  (320×240 chip ILI9340)
// UTFT myGLCD(TFT18SHLD,   5,4,8,7,6);                 // тип дисплея 1,8  TFT  (128x160 chip ST7735S)
void setup()
{
  myGLCD.InitLCD();                                    // инициируем дисплей (в качестве параметра данной функции можно указать ориентацию дисплея: PORTRAIT или LANDSCAPE), по умолчанию LANDSCAPE - горизонтальная ориентация
}
void loop()
{
  myGLCD.clrScr();                                     // стираем всю информацию с дисплея
  myGLCD.setColor(VGA_RED);                            // Устанавливаем красный цвет
  myGLCD.drawLine(10,10,150,10);                       // рисуем линию (через точки с координатами 10x10 - 150x10)
  myGLCD.drawRect(10,20,150,80);                       // рисуем прямоугольник (с противоположными углами в координатах 10x20 - 150x80)
  myGLCD.drawRoundRect(10,90,150,160);                 // рисуем прямоугольник со скруглёнными углами (с противоположными углами в координатах 10x90 - 150x160)
  myGLCD.fillRect(10,170,150,230);                     // рисуем закрашенный прямоугольник (с противоположными углами в координатах 10x170 - 150x230)
  myGLCD.drawCircle(260,60,40);                        // рисуем окружность (с центром в точке 260x60 и радиусом 40)
  myGLCD.fillCircle(260,160,40);                       // рисуем закрашенную окружность (с центром в точке 260x160 и радиусом 40)
  delay(20000);
}


Базовые функции:

Все функции:

  • InitLCD([положение]); – Инициирует начало работы с дисплеем. Необязательный параметр может принимать одно из двух значений: PORTRAIT (вертикальная ориентация) или LANDSCAPE (горизонтальная ориентация - по умолчанию).
  • clrScr(); – Очищает дисплей, стирая всю отображаемую на дисплее информацию и заливая дисплей черным цветом.
  • fillScr(color); – Очищает дисплей, стирая всю отображаемую на дисплее информацию и заливая его указанным в качестве параметра цветом фона.
  • getDisplayXSize(); – Возвращает количество пикселей дисплея по горизонтали, число типа int.
  • getDisplayYSize(); – Возвращает количество пикселей дисплея по вертикали, число типа int.
  • setColor(color); – Выбор цвета для текста и фигур, выводимых после данной функции.
  • getColor(); – Возвращает установленный цвет для текста и фигур в формате RGB565, число типа word.
  • setBackColor(color); – Выбор цвета для фона текста, выводимого после данной функции.
  • getBackColor(); – Возвращает установленный цвет для фона текста в формате RGB565, число типа word.
  • setFont(fontName); – Выбор шрифта для текста выводимого после данной функции.
  • getFont(); – Возвращает указатель на выбранный шрифт.
  • getFontXsize(); – Возвращает количество пикселей в одном символе шрифта, по ширине.
  • getFontYsize(); – Возвращает количество пикселей в одном символе шрифта, по высоте.
  • print(str,x,y[,r]); – Вывод на дисплей строк или содержимого строковых переменных.
  • printNumI(int,x,y[,len[,sym]]); – Вывод на дисплей целого числа или содержимого целочисленной переменной.
  • printNumF(float,dec,x,y[,sym1[,len[,sym2]]]); – Вывод на дисплей вещественного числа или содержимого переменной вещественного типа
  • drawPixel(x,y); – Вывод на дисплей точки. Цвет точки определяется текущим значением цвета, устанавливаемым командой setColor().
  • drawLine(x1,y1,x2,y2); – Вывод на дисплей линии, заданной координатами двух точек.
  • drawRect(x1,y1,x2,y2); – Вывод на дисплей прямоугольника, противоположные углы которого заданы координатами двух точек.
  • drawRoundRect(x1,y1,x2,y2); – Вывод на дисплей прямоугольника со скругленными углами.
  • fillRect(x1,y1,x2,y2); – Вывод на дисплей закрашенного прямоугольника.
  • drawCircle(x,y,R); – Вывод на дисплей окружности, определяемую координатами центра и радиусом.
  • fillCircle(x,y,R); – Вывод на дисплей закрашенной окружности.
  • drawBitmap(x1,y1,x2,y2,data[,scale]); – Вывод на дисплей картинки из массива.
  • Для вывода на дисплей картинки из файла с SD-карты нужно вызвать функцию load(x1,y1,x2,y2,data); объекта библиотеки UTFT_SdRaw.
    Для работы функции load, нужно установить и подключить библиотеки: UTFT_SdRaw и SdFat.

Инициализация работы с дисплеем:

InitLCD( [положение] );
Инициализация работы с дисплеем, с указанием его положения.


InitLCD(PORTRAIT); // инициализация (вертикальное положение)

Параметр:
    Положение может быть горизонтальным или вертикальным:
  • положение: PORTRAIT - вертикальное
  • положение: LANDSCAPE - горизонтальное (по умолчанию)
void setup(){ myGLCD.InitLCD(); }                      // инициируем дисплей без параметра, значит он горизонтально ориентирован (как если бы в качестве параметра было указано LANDSCAPE)

Очистка экрана:

clrScr();
Очистка экрана с заливкой дисплея чёрным цветом
Параметр: Без параметров.
fillScr( color );
Очистка экрана с заливкой заданным цветом.


fillScr(VGA_RED); // красный цвет

Параметр:
    Цет можно задать тремя способами:
  • color: По названию цвета - VGA_RED
  • color: В формате RGB565 - 0x001F
  • color: В формате RGB - 255,100,0
myGLCD.clrScr();                                       // очистка экрана с заливкой черным цветом
myGLCD.fillScr(VGA_RED);                               // заливаем весь экран красным цветом
myGLCD.fillScr(0xF800);                                // заливаем весь экран красным цветом (формат RGB565)
myGLCD.fillScr(255,0,0);                               // заливаем весь экран красным цветом (формат RGB)

Выбор цвета:

setColor( color );
Выбор цвета для текста и фигур, выводимых после данной функции.


setColor(0,0,255); // синий цвет

Параметр:
    Цет можно задать тремя способами:
  • color: По названию цвета - VGA_RED
  • color: В формате RGB565 - 0x001F
  • color: В формате RGB - 255,100,0
setBackColor( color );
Выбор цвета для фона текста, выводимого после данной функции.


setBackColor(2016); // зелёный цвет

Параметр:
    Цет можно задать тремя способами:
  • color: По названию цвета - VGA_RED
  • color: В формате RGB565 - 0x001F
  • color: В формате RGB - 255,100,0
myGLCD.setColor(VGA_BLUE);                             // устанавливаем синий цвет для текста и фигур
myGLCD.setBackColor(VGA_WHITE);                        // устанавливаем белый цвет заливки текста
// выводим текст или фигуру                            // выводимые фигуры будут синими, а текст синим на белом фоне

Удобнее всего устанавливать цвет по его названию:
Полный перечень цветов: VGA_BLACK, VGA_WHITE, VGA_RED, VGA_GREEN, VGA_BLUE, VGA_SILVER, VGA_GRAY, VGA_MAROON, VGA_YELLOW, VGA_OLIVE, VGA_LIME, VGA_AQUA, VGA_TEAL, VGA_NAVY, VGA_FUCHSIA, VGA_PURPLE, VGA_TRANSPARENT.

Выбор шрифта:

setFont( fontName );
Выбор шрифта для текста выводимого после данной функции.


setFont(SmallFont); // маленький шрифт

Параметр:
    По умолчанию в библиотеке есть 3 шрифта:
  • fontName: SmallFont - маленький шрифт
  • fontName: BigFont - большой шрифт
  • fontName: SevenSegNumFont - шрифт имитирующий семисегментный индикатор
#include <UTFT.h>                                      // подключаем библиотеку UTFT
extern uint8_t BigFont[];                              // обязательно подключаем шрифт
// UTFT myGLCD(TFT395UNO,   A2,A1,A3,A4,A0);           // тип дисплея 3,95 UNO  (480x320 chip ILI9327)
// UTFT myGLCD(TFT32MEGA,   38,39,40,41);              // тип дисплея 3,2  MEGA (480x320 chip ILI9481)
// UTFT myGLCD(TFT32MEGA_2, 38,39,40,41);              // тип дисплея 3,2  MEGA (480x320 chip HX8357C)
   UTFT myGLCD(TFT28UNO,    A2,A1,A3,A4,A0);           // тип дисплея 2,8  UNO  (320x240 chip ILI9341)
// UTFT myGLCD(TFT01_24SP,  5,4,8,7,6);                // тип дисплея 2,8  TFT  (240×320 chip ILI9341)
// UTFT myGLCD(TFT01_24SP,  5,4,8,7,6);                // тип дисплея 2,4  TFT  (240×320 chip ILI9341)
// UTFT myGLCD(TFT01_22SP,  5,4,8,7,6);                // тип дисплея 2,2  TFT  (320×240 chip ILI9340)
// UTFT myGLCD(TFT18SHLD,   5,4,8,7,6);                // тип дисплея 1,8  TFT  (128x160 chip ST7735S)
void setup()
{ 
  myGLCD.InitLCD ();                                   // инициируем дисплей (по умолчанию горизонтальная ориентация)
  myGLCD.clrScr  ();                                   // стираем всю информацию с дисплея
  myGLCD.setFont (BigFont);                            // устанавливаем большой шрифт
  myGLCD.setColor(VGA_BLUE);                           // устанавливаем синий цвет текста
  myGLCD.print   ("BigFont", CENTER, 100);             // выводим текст "BigFont" на дисплей
}
void loop(){
}

Вывод текста:

print( str , x , y [, r] );
Выводит на дисплей строки или содержимое строковых переменных.


print("iarduino", 50, 50); // текст "iarduino" горизонтально
print("iarduino", 50, 50, 90); // текст "iarduino" вертикально

Параметры:
  • str: строка или содержимое строковой переменной
  • x: координата X
  • y: координата Y
  • координаты верхнего левого угла области печати
    (x можно указать как число или LEFT / RIGHT / CENTER)
  • r: поворот текста в градусах, вокруг точки x,y
    r - необязательный параметр
printNumI( int , x , y [, len [, sym ] ] );
Выводит на дисплей целые числа или содержимое целочисленных переменных.


printNumI(2000,50,50); // результат: "2000"
printNumI(2000,50,50,0); // результат: "2000"
printNumI(2000,50,50,5); // результат: " 2000"
printNumI(2000,50,50,6,'0'); // результат: "002000"

Параметры:
  • int: целое число или содержимое целочисленной переменной
  • x: координата X
  • y: координата Y
  • координаты верхнего левого угла области печати
    (x можно указать как число или LEFT / RIGHT / CENTER)
  • len: количество выводимых разрядов числа int.
    игнорируется если len меньше количества разрядов int.
    необязательный параметр, по умолчанию: 0
  • sym: символ заменяющий недостающие разряды.
    необязательный параметр, по умолчанию: ' '
    (если len больше чем количество разрядов числа int, то недостающие разряды перед числом будут заменены на sym.)
printNumF( float , dec, x , y [, sym1 [, len [, sym2 ] ] ] );
Выводит на дисплей вещественные числа или содержимое переменных вещественного типа.


printNumF(-234.3442,2,50,50); // результат "-234.34"
printNumF(-234.3442,3,50,50); // результат "-234.344"
printNumF(-234.3442,4,50,50,'*'); // результат "-234*3442"
printNumF(-234.3442,1,50,50,',',1); // результат "-234,3"
printNumF(-234.3442,1,50,50,',',7); // результат " -234,3"
printNumF(-234.3442,1,50,50,',',7,'0'); // результат "-0234,3"

Параметры:
  • float: вещественное число или содержимое переменной вещественного типа.
  • dec: количество выводимых знаков после запятой.
    допускается только значение больше 0
  • x: координата X
  • y: координата Y
  • координаты верхнего левого угла области печати.
    (x можно указать как число или LEFT / RIGHT / CENTER)
  • sym1: символ заменяющий запятую при выводе.
    необязательный параметр, по умолчанию: '.'
  • len: количество всех выводимых знаков и символов числа int.
    игнорируется если len меньше количества знаков и символов.
    необязательный параметр, по умолчанию: 0
  • sym2: символ заменяющий недостающие разряды.
    необязательный параметр, по умолчанию: ' '
    (если len больше чем количество знаков и символов в числе int, то недостающие разряды перед числом будут заменены на sym2.)
#include <UTFT.h>                                      // подключаем библиотеку UTFT
extern uint8_t BigFont[];                              // обязательно подключаем шрифт
// UTFT myGLCD(TFT395UNO,   A2,A1,A3,A4,A0);           // тип дисплея 3,95 UNO  (480x320 chip ILI9327)
// UTFT myGLCD(TFT32MEGA,   38,39,40,41);              // тип дисплея 3,2  MEGA (480x320 chip ILI9481)
// UTFT myGLCD(TFT32MEGA_2, 38,39,40,41);              // тип дисплея 3,2  MEGA (480x320 chip HX8357C)
   UTFT myGLCD(TFT28UNO,    A2,A1,A3,A4,A0);           // тип дисплея 2,8  UNO  (320x240 chip ILI9341)
// UTFT myGLCD(TFT01_24SP,  5,4,8,7,6);                // тип дисплея 2,8  TFT  (240×320 chip ILI9341)
// UTFT myGLCD(TFT01_24SP,  5,4,8,7,6);                // тип дисплея 2,4  TFT  (240×320 chip ILI9341)
// UTFT myGLCD(TFT01_22SP,  5,4,8,7,6);                // тип дисплея 2,2  TFT  (320×240 chip ILI9340)
// UTFT myGLCD(TFT18SHLD,   5,4,8,7,6);                // тип дисплея 1,8  TFT  (128x160 chip ST7735S)
void setup()
{ 
  myGLCD.InitLCD  ();                                  // инициируем дисплей (по умолчанию горизонтальная ориентация)
  myGLCD.clrScr   ();                                  // стираем всю информацию с дисплея
  myGLCD.setFont  (SmallFont);                         // устанавливаем маленький шрифт
  myGLCD.setColor (VGA_RED);                           // устанавливаем красный цвет текста
  myGLCD.print    ("iarduino.ru",0,0)                  // выводим текст "iarduino.ru"
  myGLCD.printNumI(123456,0,100);                      // выводим целое число
  myGLCD.printNumF(-234.3442, 0, 200);                 // выводим вещественное число
}
void loop(){
}

Графические функции:

drawPixel( x , y );
Выводит на дисплей точку.


drawPixel(50,50);

Параметры:
  • x: координата X
  • y: координата Y
drawLine( x1 , y1 , x2 , y2 );
Выводит на дисплей линию заданную координатами двух точек.


drawLine(10,10,50,50);

Параметры:
  • x1: координата X, первой точки
  • y1: координата Y, первой точки
  • x2: координата X, второй точки
  • y2: координата Y, второй точки
drawRect( x1 , y1 , x2 , y2 );
Выводит на дисплей прямоугольник, заданный координатами двух противоположных углов.


drawRect(10,10,50,50);

Параметры:
  • x1: координата X, первого угла
  • y1: координата Y, первого угла
  • x2: координата X, второго угла
  • y2: координата Y, второго угла
drawRoundRect( x1 , y1 , x2 , y2 );
Выводит на дисплей прямоугольник со скругленными углами, заданный координатами двух противоположных углов.


drawRoundRect(10,10,50,50);

Параметры:
  • x1: координата X, первого угла
  • y1: координата Y, первого угла
  • x2: координата X, второго угла
  • y2: координата Y, второго угла
fillRect( x1 , y1 , x2 , y2 );
Выводит на дисплей закрашенный прямоугольник, заданный координатами двух противоположных углов.


fillRect(10,10,50,50);

Параметры:
  • x1: координата X, первого угла
  • y1: координата Y, первого угла
  • x2: координата X, второго угла
  • y2: координата Y, второго угла
drawCircle( x , y , R );
Выводит на дисплей окружность, определяемую координатами центра и радиусом.


drawCircle(50,50,25);

Параметры:
  • x: координата X, центра окружности
  • y: координата Y, центра окружности
  • R: радиус окружности
fillCircle( x , y , R );
Выводит на дисплей закрашенный текущим цветом круг, определяемый координатами центра и радиусом.


fillCircle(50,50,25);

Параметры:
  • x: координата X, центра окружности
  • y: координата Y, центра окружности
  • R: радиус окружности
#include <UTFT.h>                                      // подключаем библиотеку UTFT
// UTFT myGLCD(TFT395UNO,   A2,A1,A3,A4,A0);           // тип дисплея 3,95 UNO  (480x320 chip ILI9327)
// UTFT myGLCD(TFT32MEGA,   38,39,40,41);              // тип дисплея 3,2  MEGA (480x320 chip ILI9481)
// UTFT myGLCD(TFT32MEGA_2, 38,39,40,41);              // тип дисплея 3,2  MEGA (480x320 chip HX8357C)
   UTFT myGLCD(TFT28UNO,    A2,A1,A3,A4,A0);           // тип дисплея 2,8  UNO  (320x240 chip ILI9341)
// UTFT myGLCD(TFT01_24SP,  5,4,8,7,6);                // тип дисплея 2,8  TFT  (240×320 chip ILI9341)
// UTFT myGLCD(TFT01_24SP,  5,4,8,7,6);                // тип дисплея 2,4  TFT  (240×320 chip ILI9341)
// UTFT myGLCD(TFT01_22SP,  5,4,8,7,6);                // тип дисплея 2,2  TFT  (320×240 chip ILI9340)
// UTFT myGLCD(TFT18SHLD,   5,4,8,7,6);                // тип дисплея 1,8  TFT  (128x160 chip ST7735S)
void setup()
{
  myGLCD.InitLCD      ();                              // инициируем дисплей (по умолчанию горизонтальная ориентация)
  myGLCD.clrScr       ();                              // стираем всю информацию с дисплея
  myGLCD.setColor     (VGA_RED);                       // Устанавливаем красный цвет
  myGLCD.drawPixel    (5  , 5            );            // рисуем точку с координатами 5x5
  myGLCD.drawLine     (10 , 10 , 150, 10 );            // рисуем линию (через точки с координатами 10x10 - 150x10)
  myGLCD.drawRect     (10 , 20 , 150, 80 );            // рисуем прямоугольник (с противоположными углами в координатах 10x20 - 150x80)
  myGLCD.drawRoundRect(10 , 90 , 150, 160);            // рисуем прямоугольник со скруглёнными углами (с противоположными углами в координатах 10x90 - 150x160)
  myGLCD.fillRect     (10 , 170, 150, 230);            // рисуем закрашенный прямоугольник (с противоположными углами в координатах 10x170 - 150x230)
  myGLCD.drawCircle   (260, 60 , 40      );            // рисуем окружность (с центром в точке 260x60 и радиусом 40)
  myGLCD.fillCircle   (260, 160, 40      );            // рисуем закрашенную окружность (с центром в точке 260x160 и радиусом 40)
}
void loop(){
}

Вывод изображений

Выводим на дисплей картинки из массивов:

  • Картинки необходимо конвертировать с помощью специальной программы ImageConverter565, которая находится в папке Tools библиотеки UTFT, при сохранении выбрать тип файла «.c» под микроконтроллер AVR.
  • Сохранённый файл «Название.c» нужно поместить в папку со скетчем использующим этот файл. Название массива будет совпадать с названием файла.
  • Файл с массивом используемым в нашем примере вы можете найти в папке examples/дисплей/image_Array библиотеки UTFT.
drawBitmap( x1 , y1 , x2 , y2 , Name );
Вывод на дисплей картинки из массива.
Параметры:
  • x1: координата X, левого верхнего угла дисплея
  • y1: координата Y, левого верхнего угла дисплея
  • x2: размер картинки по оси X
  • y2: размер картинки по оси Y
  • Name: Название массива который содержит изображение
  • Изображение выводиться в прямоугольную область, верхний левый угол которой задан точкой с координатами x1,y1.
#include <UTFT.h>                                   // подключаем библиотеку UTFT для работы с дисплеем
// UTFT  myGLCD(TFT395UNO,   A2,A1,A3,A4,A0);       // тип дисплея 3,95 UNO  (480x320 chip ILI9327)
// UTFT  myGLCD(TFT32MEGA,   38,39,40,41);          // тип дисплея 3,2  MEGA (480x320 chip ILI9481)
// UTFT  myGLCD(TFT32MEGA_2, 38,39,40,41);          // тип дисплея 3,2  MEGA (480x320 chip HX8357C)
   UTFT  myGLCD(TFT28UNO,    A2,A1,A3,A4,A0);       // тип дисплея 2,8  UNO  (320x240 chip ILI9341)
// UTFT  myGLCD(TFT01_24SP,  5,4,8,7,6);            // тип дисплея 2,8  TFT  (240×320 chip ILI9341)
// UTFT  myGLCD(TFT01_24SP,  5,4,8,7,6);            // тип дисплея 2,4  TFT  (240×320 chip ILI9341)
// UTFT  myGLCD(TFT01_22SP,  5,4,8,7,6);            // тип дисплея 2,2  TFT  (320×240 chip ILI9340)
// UTFT  myGLCD(TFT18SHLD,   5,4,8,7,6);            // тип дисплея 1,8  TFT  (128x160 chip ST7735S)
                                                    //
extern unsigned short image_128x64[0x2000];         // объявляем массив image_128x64 который был определён во внешнем файле
                                                    // файл с массивом должен находиться в той же папке что и скетч
void setup(){                                       //
   myGLCD.InitLCD();                                // инициируем дисплей
   myGLCD.clrScr();                                 // стираем всю информацию с дисплея
   myGLCD.drawBitmap(176,128,128,64,image_128x64);  // выводим на дисплей картинку начиная с координаты 176,128 размером 128,64 из массива image_128x64
}                                                   //
                                                    //
void loop(){}                                       //

Выводим на дисплей картинки с SD карты:

  • Для вывода картинок, в дополнении к библиотеке UTFT, понадобится установить и подключить библиотеки: и: UTFT_SdRaw и SdFat.
  • Библиотека SdFat предназначена для работы с SD-картами. Поддерживаются SD-карты отформатированные под файловую систему FAT32 (максимальный объем SD-карты 32 ГГб) и FAT16 (максимальный объем SD-карты 2 ГГб).
  • Библиотека UTFT_SdRaw предназначена для вывода изображений на дисплей.
  • Картинки необходимо конвертировать с помощью специальной программы ImageConverter565, которая находится в папке Tools библиотеки UTFT, при сохранении выбрать тип файла «.raw». Сохранённый файл нужно записать на SD-карту.
  • Картинки используемые в нашем примере вы можете найти в папке image библиотеки UTFT.
load( x1 , y1 , x2 , y2 , "fileName.raw" );
Вывод на дисплей картинки из файла на SD карте.
Функция относится к объекту библиотеки UTFT_SdRaw а не UTFT.
Параметры:
  • x1: координата X, левого верхнего угла дисплея
  • y1: координата Y, левого верхнего угла дисплея
  • x2: размер картинки по оси X
  • y2: размер картинки по оси Y
  • NameFile: Название файла изображения на SD карте
  • Изображение выводиться в прямоугольную область, верхний левый угол которой задан точкой с координатами x1,y1.
#include   <SPI.h>                                  // подключаем библиотеку SPI            для общения с SD-картой по шине SPI
#include   <SdFat.h>                                // подключаем библиотеку SdFat          для работы с SD-картой
#include   <UTFT.h>                                 // подключаем библиотеку UTFT           для работы с дисплеем
#include   <UTFT_SdRaw.h>                           // подключаем библиотеку UTFT_SdRaw     для вывода изображений с SD-карты на дисплей
#define    SD_CHIP_SELECT SS                        // определяем константу  SD_CHIP_SELECT которой присваиваем номер вывода Arduino подключённого к линии выбора CS шины SPI SD-карты (номер используемый по умолчанию хранится в константе SS)
// UTFT    myGLCD(TFT395UNO,   A2,A1,A3,A4,A0);     // тип дисплея 3,95 UNO  (480x320 chip ILI9327)
// UTFT    myGLCD(TFT32MEGA,   38,39,40,41);        // тип дисплея 3,2  MEGA (480x320 chip ILI9481)
// UTFT    myGLCD(TFT32MEGA_2, 38,39,40,41);        // тип дисплея 3,2  MEGA (480x320 chip HX8357C)
   UTFT    myGLCD(TFT28UNO,    A2,A1,A3,A4,A0);     // тип дисплея 2,8  UNO  (320x240 chip ILI9341)
// UTFT    myGLCD(TFT01_24SP,  5,4,8,7,6);          // тип дисплея 2,8  TFT  (240×320 chip ILI9341)
// UTFT    myGLCD(TFT01_24SP,  5,4,8,7,6);          // тип дисплея 2,4  TFT  (240×320 chip ILI9341)
// UTFT    myGLCD(TFT01_22SP,  5,4,8,7,6);          // тип дисплея 2,2  TFT  (320×240 chip ILI9340)
// UTFT    myGLCD(TFT18SHLD,   5,4,8,7,6);          // тип дисплея 1,8  TFT  (128x160 chip ST7735S)
SdFat      mySD;                                    // объявляем объект mySD класса библиотеки SdFat для работы с его функциями и методами
UTFT_SdRaw myFiles(&myGLCD);                        // объявляем объект myFiles класса библиотеки UTFT_tinyFAT с передачей ссылки на объект myGLCD класса библиотеки UTFT
                                                    //
void setup(){                                       //
   myGLCD.InitLCD();                                // инициируем дисплей
   myGLCD.clrScr();                                 // стираем всю информацию с дисплея
   while(!mySD.begin(SD_CHIP_SELECT)){}             // инициируем работу с SD картой, ожидая завершения инициализации в цикле while (не даём войти в loop пока нет карты)
}                                                   //
                                                    //
void loop(){                                        //
// ВНИМАНИЕ!!!                                      // файлы картинок лежат в папке image библиотеки UTFT,
                                                    // их необходимо записать в корень SD карты и установить её в слот на плате дисплея
   myFiles.load(0,0,320,240,"image_320x240_a.raw"); // выводим на дисплей картинку начиная с координаты 0,0 размером 320,240 из файла image_320x240_a.raw
   delay(2000);                                     // ждём 2 секунды
   myFiles.load(0,0,320,240,"image_320x240_b.raw"); // выводим на дисплей картинку начиная с координаты 0,0 размером 320,240 из файла image_320x240_b.raw
   delay(2000);                                     // ждём 2 секунды
}                                                   //

Ссылки:

Обсуждение