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

Библиотека

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

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

Дисплеи Инициализация
Цветной графический дисплей 3.95 TFT 480x320 UNO
Данный дисплей совместим только с Arduino Uno.

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

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

UTFT myGLCD(TFT32MEGA, 38, 39, 40, 41);

Если Вы не планируете использовать 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
Данный дисплей совместим с любыми Arduino.

UTFT myGLCD(TFT01_22SP, 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).

Цветной графический дисплей 1.8 TFT 128x160
Данный дисплей совместим с любыми Arduino.

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

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

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

Подключение 1,8 дюймового TFT дисплея 128x160 к 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(TFT28UNO,   A2,A1,A3,A4,A0);            // тип дисплея 2,8  UNO  (320x240 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(TFT28UNO,   A2,A1,A3,A4,A0);            // тип дисплея 2,8  UNO  (320x240 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(TFT28UNO,   A2,A1,A3,A4,A0);            // тип дисплея 2,8  UNO  (320x240 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(TFT28UNO,   A2,A1,A3,A4,A0);            // тип дисплея 2,8  UNO  (320x240 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(TFT28UNO,   A2,A1,A3,A4,A0);            // тип дисплея 2,8  UNO  (320x240 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(TFT28UNO,   A2,A1,A3,A4,A0);            // тип дисплея 2,8  UNO  (320x240 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(TFT28UNO,   A2,A1,A3,A4,A0);        // тип дисплея 2,8  UNO  (320x240 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(TFT28UNO,   A2,A1,A3,A4,A0);      // тип дисплея 2,8  UNO  (320x240 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 секунды
}                                                   //

Ссылки:

Обсуждение

Присоединяйся

На главную