Для работы над книгами и проектами мне приходится подключать различные дисплеи к платам Arduino. Обычно это один из трех дисплеев:

  1. TFT 240×320
  2. TFT 128×160
  3. OLED 128×64

Чтобы сэкономить время на сборку макетов и не вспоминать каждый раз схему подключения, я изготовил универсальный дисплейный шилд  для Arduino Uno R3:

Для подключения к Arduino Uno R3 применяются сквозные разъемы (Stackable Header), которые можно заказать на Aliexpress:

Благодаря сквозным разъемам, даже при установленном дисплее сохраняется полный доступ ко всем выводам платы Arduino.

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

С обратной стороны платы находятся четыре резистора сопротивлением 1,5 кОм для согласования пятивольтовой логики Arduino с трехвольтовой логикой дисплеев. Рекомендую использовать резисторы именно этого номинала, чтобы надежно работали разные дисплеи. С резисторами меньшего номинала не у всех дисплеев будет срабатывать сброс чипа, а с резисторами номиналом больше 2 кОм может ненадежно работать шина SPI.

Для дисплея TFT 240×320 нужен гасящий резистор 15-30 ом в цепи подсветки, подключенной к линии питания +3,3 вольт. Подсветка дисплея TFT 128×160 подключается напрямую к линии +5 вольт. Сброс TFT дисплеев подключен к линии сброса Arduino и не занимает лишний вывод GPIO.

Теперь для отладки проекта с разными дисплеями достаточно установить поверх Arduino Uno R3 дисплейный шилд и вставить в разъем один из дисплеев:

Оба дисплея TFT идеально вписываются в расстояние между линейками контактов Arduino и не мешают подключать соединительные провода. На шилде очень много свободного места. Во второй версии шилда хочу добавить модуль FLASH памяти, на котором можно развернуть имитацию файловой системы и компактный слот для карты памяти MicroSD. Дисплеи TFT оборудованы слотом для SD карт, но вставленная в него крупногабаритная карта памяти загораживает один из разъемов Arduino Uno. Да и вообще, формфактор SD уже изрядно устарел.

Изменения в стандартных скетчах

Для оптимизации разводки платы незначительно изменена нумерация выводов GPIO, к которым подключены выводы дисплеев RES, CS и DC.

Для скетчей с дисплеем 240×320 на чипе ILI9341 раскладка выводов выглядит так:

#include "SPI.h"
#include "Adafruit_GFX.h"
#include "Adafruit_ILI9341.h"

// Use THIS pins for universal display shield
#define TFT_DC 10
#define TFT_CS 9

Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);

Для дисплея 128×160 на чипе ST7735 добавляется определение вывода RST:

#include <Adafruit_GFX.h> // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library
#include <SPI.h>


// For the breakout, you can use any 2 or 3 pins
// These pins will also work for the 1.8" TFT shield
#define TFT_CS 9
#define TFT_DC 10
#define TFT_RST 0 // Display reset connected to Arduino Uno RESET

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);

Схема, печатная плата и примеры скетчей

Архив с исходниками схемы и платы в формате DipTrace, а также готовые картинки в PDF для печати фотошаблонов.

Архив с рабочими библиотеками дисплеев и тестовыми примерами скетчей.