Дисплей TFT 1.8 SPI и Arduino

Сегодня я поведаю о том, как подключить к Arduino настоящий TFT дисплей. В качестве последнего будем использовать 1.8-дюймовый TFT с SPI интерфейсом, который был куплен мной на ebay за $5.65. 

Китайский экранчик имеет разрешение 128х160, и (скорее всего) управляется драйвером ST7735R, который обеспечивает отображение 18-битного цвета (262144 оттенков). На плате устройства также размещается регулятор напряжения 5->3.3 и слот для SD карт, который можно использовать для хранения изображений и последующего их вывода на дисплей.

Подключение

На плате имеется 16 выводов, три из которых не используются. Выводы 11-14 подключены к разъему SD карты.

Программный SPI

Существует два основных варианта подключения Arduino и дисплея через SPI. В первом случае, можно использовать любые из GPIO выводов Arduino, но при этом будет использован медленный программный SPI драйвер. Пример такой схемы подключения представлен ниже.

Аппаратный SPI

Как известно, Arduino имеет встроенный аппаратный SPI. На Arduino Nano для этого используются выводы с 10 по 13. 

Аппаратный SPI + SD карта

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

Программа

Для управления дисплеем воспользуемся библиотеками Adafruit_ST7735 и Adafruit_GFX. Первая непосредственно дружит с драйвером дисплея, а вторая предоставляет функции для рисования разных геометрических фигур.

Для установки этих библиотек, потребуется скачать соответствующие архивы о указанным ссылкам, распаковать их в папку с установленным Arduino IDE: .../arduino/libraries. И не забыть переименовать их, убрав из названия символ "-" (иначе либы не подключатся).

После установки указанных библиотек, в списке примеров появится новый раздел Adafruit_ST7735, из которого нам понадобятся только три примера.

Скетч "graphicstest" использует первый вариант подключения - программный SPI. Второй скетч "graphicstest_highspeed" использует аппаратный SPI и выполняется гораздо быстрее первого варианта. Наконец, третья программа "spitftbitmap" выводит на дисплей картинку, заранее сохраненную на SD карточку. Картинка должна быть битмапом (.bmp) с глубиной цвета 24бит и с разрешением, ясен пень, 128х160 пикселей.

Для первых двух тестов я снял небольшое кино, с тем чтобы было понятно, как влияет использование аппаратного SPI на скорость отрисовки геометрии.