====== Дисплей 3,5' TFT LCD 320х480 ======
===== Описание =====
Данный дисплей представляет из себя ЖК монитор с диагональю 3,5 дюйма. Основная задача дисплея - работа с простой графикой (рисование фигур, текста, линий), однако, также предусмотрен вывод на дисплей полноцветных фотографий и анимации. Данный дисплей выполнен в форм-факторе шилда для контроллеров линеек UNO, Mega, Leonardo, Due, что представляет дополнительное удобство в подключении.

На плате также расположен разъём для размещения SD-карт памяти, таким образом данный дисплей совмещает в себе три устройства - экран, шилд и модуль карт памяти.

==== Технические характеристики ====
  * Рабочее напряжение: 5 В
  * Потребляемый ток: 300 мА
  * Диагональ: 3,5'
  * Разрешение: 320 х 480
  * Тип карты памяти: microSD
  * Максимальный объём карты памяти: 32 Гб
  * Модель контроллера экрана: ILI9481 (8 бит)

==== Физические размеры ====
  * Модуль с дисплеем и выводами (Д х Ш х В): 86 х 56 х 14 (мм)

==== Плюсы использования ====
  * Удобство подключения к контроллерам в качестве шилда
  * Наличие разъёма для подключения карт памяти

==== Минусы использования ====
  * Невозможность подключения к маленьким контроллерам напрямую

==== Библиотеки для работы с дисплеем ====
  * [[http://files.smartelements.ru/know_libs/Adafruit_GFX.zip|Скачать Графическое ядро]]
  * [[http://files.smartelements.ru/know_libs/MCUFRIEND_kbv_master.zip|Скачать библиотеку для работы с дисплеем]]

===== Пример подключения и использования =====
**Пример:** В примере иллюстрируются основные возможности по выводу информации на дисплей с использованием контроллера Smart UNO. Дисплей подключается к контроллеру в качестве шилда.

**Для этого нам понадобится:**
^ Что нужно:                                                                                                                                                      ^ Кол-во, шт  ^
| [[http://smartelements.ru/collection/kontrollery/product/kontroller-smart-uno|Контроллер                              ]]                                        | 1           |
| [[http://smartelements.ru/collection/displei-i-indikatory/product/tft-lcd-35-displey|Дисплей]]  | 1           |

**Пример кода:**
<file Arduino>
#include <Adafruit_GFX.h>    // Ядро графической библиотеки
#include <Adafruit_TFTLCD.h> // Специфика аппаратного обеспечения
#include <MCUFRIEND_kbv.h>   // Специфика работы с разными чипами

// Ассоциируем шестнадцатиричные значения цветов в удобочитаемый вид
#define BLACK   0x0000 // черный
#define BLUE    0x001F // синий
#define RED     0xF800 // красный
#define GREEN   0x07E0 // зелёный
#define CYAN    0x07FF // голубой
#define MAGENTA 0xF81F // малиновый
#define YELLOW  0xFFE0 // жёлтый
#define WHITE   0xFFFF // белый

MCUFRIEND_kbv tft; //инициализация объекта дисплея

void setup(void) {

  tft.reset(); //сброс дисплея

  uint16_t identifier = tft.readID(); //чтение идентификатора чипа
  tft.begin(identifier); //инициализация дисплея
  tft.invertDisplay(true); //установка чёрной подсветки для ILI9481
}

void loop(void) {
  for(uint8_t rotation=0; rotation<4; rotation++) { //попеременно установка поворота дисплея

    tft.setRotation(rotation); //установить поворот
  
    //Заливка дисплея цветами
    tft.fillScreen(BLACK); //черным
    tft.fillScreen(RED); //красным
    tft.fillScreen(GREEN); //зелёным
    tft.fillScreen(BLUE); //синим
    tft.fillScreen(BLACK); //снова черным

    //Написание текста
    tft.setCursor(0, 0); //установить курсор в позицию 0,0 (левый верхний угол)
    tft.setTextColor(WHITE); //установка цвета текста (белый) 
    tft.setTextSize(1); //установка размера текста
    tft.println("Hello World!"); //вывести надпись

    //Вывод числовых значений
    tft.setTextColor(YELLOW); //установить цвет текста
    tft.setTextSize(2); //установить размер текста
    tft.println(1234.56); //вывести число
  
    //Вывод шестнадцатиричного значения
    tft.setTextColor(RED); //цвет текста (красный)    
    tft.setTextSize(3); //размер текста
    tft.println(0x9876BEEF, HEX); //вывод значения
    tft.println(); //вывод пустой строки
  
    //Надписи разным шрифтом 
    tft.setTextColor(GREEN); //установка цвета текста
    tft.setTextSize(5); //размер текста
    tft.println("Display"); //надпись
    tft.setTextSize(3); //размер текста
    tft.println("SmartElements"); //надпись
    tft.setTextColor(BLUE); //цвет текста
    tft.setTextSize(3); //размер текста
    tft.println("Visit our"); //надпись
    tft.setTextColor(BLUE); //цвет текста
    tft.setTextSize(2); //размер текста
    tft.println("ofificial store:"); //надпись
    tft.setTextColor(CYAN); //цвет текста
    tft.setTextSize(2); //размер текста
    tft.println("smartelements.ru"); //надпись
  
    delay(5000); //задержка 5 секунд
  
    //Начертить линию
    tft.fillScreen(BLACK); //дисплей залить черным
    //           х1     у1   х2    у2  цвет
    tft.drawLine(0,     0,    0,  100, GREEN); //нарисовать линию от точки 1 и точки 2, цвет
    tft.drawLine(0,   100,  100,  100, RED); //нарисовать линию от точки 1 и точки 2, цвет
    tft.drawLine(100, 100,  100,    0, BLUE); //нарисовать линию от точки 1 и точки 2, цвет
    tft.drawLine(100,   0,    0,    0, MAGENTA); //нарисовать линию от точки 1 и точки 2, цвет
  
    delay(5000); //задержка 5 секунд
  
    //Быстрые линии (на всю длину или высоту)
    tft.fillScreen(BLACK); //дисплей залить черным
    //5 горизонтальных линий
    int w = tft.width();
    tft.drawFastHLine(0, 0, w, GREEN);
    tft.drawFastHLine(0, 5, w, GREEN);
    tft.drawFastHLine(0, 10, w, GREEN);
    tft.drawFastHLine(0, 15, w, GREEN);
    tft.drawFastHLine(0, 20, w, GREEN);
  
    //5 вертикальных линий
    int h = tft.height();
    tft.drawFastVLine(0, 0, h, RED);
    tft.drawFastVLine(5, 0, h, RED);
    tft.drawFastVLine(10, 0, h, RED);
    tft.drawFastVLine(15, 0, h, RED);
    tft.drawFastVLine(20, 0, h, RED);
  
    delay(5000); //задержка 5 секунд
  
    //Рисование квадрата
    tft.fillScreen(BLACK); //дисплей залить черным
    tft.drawRect(0, 0, 100, 100, YELLOW); //пустой квадрат из точки (0, 0) со сторонами 100 пикселей
    tft.fillRect(0, 120, 100, 200, CYAN); //заполненный прямоугольник из точки (0, 120) со сторонами по Х - 100, по У - 200
    
    delay(5000); //задержка 5 секунд
  
    //Рисование кругов
    tft.fillScreen(BLACK); //дисплей залить черным
    tft.fillCircle(100, 100, 50, BLUE); //залитый круг радиусом 50 пикселей из точки (100, 100)
    tft.drawCircle(100, 100, 100, WHITE); //пустой круг радиусом 100 пикселей из точки (100, 100)
  
    delay(5000); //задержка 5 секунд
  
    //Рисование треугольников
    tft.fillScreen(BLACK); //дисплей залить черным
    tft.fillTriangle( //нарисовать заполненный треугольник
        100 ,  0, // верхняя точка
        50,  100, // нижняя левая
        150, 100, // нижняя правая
        tft.color565(65, 122, 23)); //залить цветом по схеме RGB
    tft.drawTriangle(
        100,   0, // верхняя точка
          0, 100, // нижняя левая
        200, 100, // нижняя правая
        tft.color565(0, 0, 255)); //залить цветом по схеме RGB
  
    delay(5000); //задержка 5 секунд    
  }
}

</file>