Дисплей Geegrow 2.4" 240*320

Цветной TFT дисплей 2.4", разрешением 240х320 точек и глубиной цвета 65 тысяч цветов на пиксель. TFT дисплей построен на базе чипа ILI9341, который позволяет выводить цветную графическую информацию на матрицу дисплея. Помимо матрицы, на обратной стороне модуля расположен слот под microSD карту память, на которой можно хранить графические данные. Управление осуществляется по SPI интерфейсу.

Подключение

Для вывода информации на дисплей с микроконтроллера используются следующие выводы

5V — для подачи внешнего питанющего напржения +5V
3.3V — выход от установленного на плате стабилизатора +3.3V 300мА. (Можно использовать для питания внешних потребителей)
LCD_MOSI — вывод интерфейса SPI дисплея (вывод SPI из разъема для программатора) 
LCD_SCK — вывод интерфейса SPI дисплея (вывод SPI из разъема для программатора)
LCD_SS — выбор устройства
LCD_WR — отправить данные на дисплей
LCD_DC — команда/данные
LCD_RES — сброс информации на дисплее
LCD_LED — подсветка дисплея
GND — земля (общий)

Чтобы запустить дисплей и вывести на него данные, его необходимо подключить к микроконтроллеру по схеме ниже.


Программа

Для работы с дисплеем мы написали свою библиотеку, её можно загрузить отсюда: https://github.com/geegrow/GeeGrow_ILI9341. Как скачивать и устанавливать библиотеки описано в нашем разделе: https://geegrow.ru/wiki/programming/libraries/manual-setup/lib-setup/. После этого необходимо загрузить в микроконтроллер следующую программу, исходный код которой можно также найти в примерах к библиотеке.

#include "geegrow_ili9341.h"

#define LED   A0
#define RESET A3
#define DC    A1
#define WR    A4
#define SS    A2
GeeGrow_ILI9341 *display = new GeeGrow_ILI9341();
GeeGrow_ILI9341_objectCircle *circle = display->createCircleObj();

void setup() {
  // put your setup code here, to run once:
  display->init(LED, RESET, DC, WR, CS);
  display->setRotation(ROTATION_UP);
  display->attachLibs(LIB_NUMBERS_ASCII | LIB_LETTERS_ASCII | LIB_SYMBOLS_ASCII | LIB_LETTERS_CYRILLIC);
  circle->setColorBG(BLACK);
}

void loop() {
  // put your main code here, to run repeatedly:
  display->fillDisplay(BLACK);

  uint8_t inc = 5;
  for (uint16_t i = 0; i < 160; i += inc)
    display->drawLine(i, 0, 320 - i, 239, RED);
  for (uint16_t i = 160; i < 320; i += inc)
    display->drawLine(i, 0, 320 - i, 239, GREEN);
  for (uint16_t i = 0; i < 120; i += inc)
    display->drawLine(319, i, 0, 240 - i, YELLOW);
  for (uint16_t i = 120; i < 240; i += inc)
    display->drawLine(319, i, 0, 240 - i, BLUE);

  display->fillDisplay(WHITE);
  
  display->printStr("GEEGROW", 104, 104, 2, RED);
  delay(2000);
  display->printStr("Дисплей ILI9341.", 100, 150, 1, BLUE);
  display->printStr("Приятного использования!", 65, 170, 1, PURPLE);
  delay(5000);

  display->fillDisplay(BLACK);
  display->fillRect(0, 0, 40, 180, BLUE);
  display->fillRect(0, 230, 320, 10, BLUE);
  display->fillRect(40, 0, 200, 80, BLUE);
  display->fillRect(290, 0, 30, 240, BLUE);
  display->fillRect(90, 130, 150, 50, BLUE);

  circle->moveTo(25, 205, 20, YELLOW);
  for (uint16_t i = 0; i < 240/inc; i++)
    circle->moveRight(inc);
  for (uint16_t i = 0; i < 100/inc; i++)
    circle->moveUp(inc);
  for (uint16_t i = 0; i < 200/inc; i++)
    circle->moveLeft(inc);
  for (uint16_t i = 0; i < 100/inc; i++)
    circle->moveDown(inc);
  for (uint16_t i = 0; i < 200/inc; i++)
    circle->moveRight(inc);
  for (uint16_t i = 0; i < 180/inc; i++)
    circle->moveUp(inc);
}