5Скетч для управления сдвиговым регистром по интерфейсу SPI
Напишем скетч, реализующий «бегущую волну», последовательно зажигая светодиоды, подключённые к выходам сдвигового регистра.
#include <SPI.h> const int pinSelect = 8; // пин выбора регистра void setup() { SPI.begin(); // инициализация интерфейса SPI pinMode(pinSelect, OUTPUT); // digitalWrite(pinSelect, LOW); // выбор ведомого устройств (регистра) SPI.transfer(0); // очищаем содержимое регистра digitalWrite(pinSelect, HIGH); // конец передачи Serial.begin(9600); } void loop() { for (int i=0; i}
Сначала подключим библиотеку SPI и инициализируем интерфейс SPI. Определим пин 8 как пин выбора ведомого устройства SS. Очистим сдвиговый регистр, послав в него значение «0». Инициализируем последовательный порт.
Чтобы зажечь определённый светодиод с помощью сдвигового регистра, нужно подать на его вход 8-разрядное число. Например, чтобы загорелся первый светодиод – подаём двоичное число 00000001, чтобы второй – 00000010, чтобы третий – 00000100, и т.д. Эти двоичные числа при переводе в десятичную систему счисления образуют такую последовательность: 1, 2, 4, 8, 16, 32, 64, 128 и являются степенями двойки от 0 до 7.
Соответственно, в цикле loop() по количеству светодиодов делаем пересчёт от 0 до 7. Функция pow(основание, степень) возводит 2 в степень счётчика цикла. Микроконтроллеры не очень точно работают с числами типа «double», поэтому для преобразования результата в целое число используем функцию округления round(). И передаём получившееся число в сдвиговый регистр. Для наглядности в монитор последовательного порта выводятся значения, которые получаются при этой операции: единичка «бежит» по разрядам – светодиоды загораются волной.
Числа, посылаемые в сдвиговый регистр 74HC595
Элементы платы
Экран
Дисплей модуля выполнен по технологии LCD TFT с диагональю 2,8 дюйма. Разрешение экрана составляет 320×240 точек с глубиной 65536 цветов.
Матрица экрана подключена к встроенному чипу ILI9341, который выполняет роль моста между экраном и микроконтроллером.
Систему координат дисплея удобно представить в виде сетки, каждая ячейка которой является отдельным пикселем. Местоположение пикселя задается парой координат «x» и «y».
Контактные пины
Условно дисплейный модуль состоит из трёх устройств:
- Экран для отображения информации.
- Сенсорная панель для управления устройством.
- SD-карта для хранения пользовательских изображений.
Все линии питания и управления дисплейным модулем выведены на отдельную контактную колодку с 2×20 пинами.
Вывод | Сигнал | Устройство | Описание |
---|---|---|---|
1 | GND | Все | Земля |
2 | DB0 | Дисплей | Шина данных (16-ти битный режим) |
3 | VCC | Все | Питание |
4 | DB1 | Дисплей | Шина данных (16-ти битный режим) |
5 | NC | — | Не подключён |
6 | DB2 | Дисплей | Шина данных (16-ти битный режим) |
7 | RS | Дисплей | Выбор передачи: данные или команда |
8 | DB3 | Дисплей | Шина данных (16-ти битный режим) |
9 | WR | Дисплей | Сигнал записи. Активный низкий уровень. |
10 | DB4 | Дисплей | Шина данных (16-ти битный режим) |
11 | RD | Дисплей | Сигнал считывания. Активный низкий уровень. |
12 | DB5 | Дисплей | Шина данных (16-ти битный режим) |
13 | DB8 | Дисплей | Шина данных (8-ми или 16-ти битный режим) |
14 | DB6 | Дисплей | Шина данных (16-ти битный режим) |
15 | DB9 | Дисплей | Шина данных (8-ми или 16-ти битный режим) |
16 | DB7 | Дисплей | Шина данных (16-ти битный режим) |
17 | DB10 | Дисплей | Шина данных (8-ми или 16-ти битный режим) |
18 | T_CLK | Тачпад | Тактирование |
19 | DB11 | Дисплей | Шина данных (8-ми или 16-ти битный режим) |
20 | T_CS | Тачпад | Чипселект сенсорной панели. Активный низкий уровень. |
21 | DB12 | Дисплей | Шина данных (8-ми или 16-ти битный режим) |
22 | T_DIN | Тачпад | Входные данные |
23 | DB13 | Дисплей | Шина данных (8-ми или 16-ти битный режим) |
24 | T_BUSY | Тачпад | Статус |
25 | DB14 | Дисплей | Шина данных (8-ми или 16-ти битный режим) |
26 | T_DOUT | Тачпад | Выходные данные |
27 | DB15 | Дисплей | Шина данных (8-ми или 16-ти битный режим) |
28 | T_IRQ | Тачпад | Прерывание |
29 | CS | Дисплей | Чипселект дисплея. Активный низкий уровень. |
30 | SD_SO | SD-карта | Выходные данные |
31 | NC | — | Не подключён |
32 | SD_SCK | SD-карта | Тактирование |
33 | RST | Дисплей | Аппаратный сброс дисплея. Активный низкий уровень. |
34 | SD_SI | SD-карта | Входные данные |
35 | NC | — | Не подключён |
36 | SD_NSS | SD-карта | Чипселект карты памяти. Активный низкий уровень. |
37 | LED | Дисплей | Подсветка дисплея |
38 | NC | — | Не подключён |
39 | NC | — | Не подключён |
40 | NC | — | Не подключён |
Преобразователь напряжения
Понижающий линейный преобразователь LM1117 с выходом 3,3 вольта обеспечивает питание и подсветку дисплея. Максимальный выходной ток составляет 800 мА.
Introduction: Arduino and 3.5 Inch (320×480) TFT LCD (ILI9488) SPI Interface With DHT22 Temperature / Humidity Measurement
By PugazhMFollow
More by the author:
Abstract
Nowadays, the beautiful TFT LCD screens are getting cheaper and using it in an embedded design, makes it more user friendly.
In this instructable, explains connecting the 320×480, 3.5Inch TFT LCD, with ILI9488 driver and SPI interfacing into Arduino. The LCD can be connected to the Arduinos SPI bus. It needs minimum number of port pins (4).
The DHT22 (AM2302) is a high precision temperature sensor module, provide calibrated temperature and humidity which is connected to digital IO pin of Arduino.
The DHT22 provides the temperature in Celsius format. The Arduino program converts the temperature into Fahrenheit, Kelvin and Rankine, and sends via serial port also displays on TFT LCD.
Parts and components
Arduino Uno board = 1 No
DHT22 (AM2302) = 1 No
320×480 TFT LCD (SPI interface, ILI9488 LCD controller) = 1 No
10K Resistor = 1No
Introduction: Cheap TFT 2.2 Inch Display on Arduino (ILI9340C or ILI9341)
By tomk11Follow
More by the author:
I ordered a 240 x 320 pixel 2.2 inch TFT LCD display off of ebay for £3.86 which is dirt cheap compared to similar displays from some of the western companies. The only problem was that there wasn’t a guide to how to get it working! When I figured it out I thought I’d make an Instructable for anyone with the same issues. It actually turned out to be quite simple. This tutorial doesn’t show you how to use the SD card functionality.
The Ethics:A couple of users have complained that I am using adafruit libraries and I am not supporting adafruit. I’d like to point out that adafruit provide their libraries under The MIT License, which amoungst other things says:
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the «Software»),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute…
You can look up the entire license if you are interested.
I understand this to mean that adafruit are perfectly happy for their code to be edited to drive cheap chinese displays, and there is no point going to the effort of writing my own code to drive it. If you have an issue with the ethics, I’d like to point out that my behavior is perfectly legal so please keep your rant elsewhere. Thankyou.
Модуль OLED диспля на основе драйвера SSD1306
В основе модуля лежит мощный однокристальный CMOS контроллер SSD1306. Он может общаться с микроконтроллером несколькими способами, включая I2C и SPI .
Протокол SPI, как правило, быстрее, чем I2C, но требует большего количества контактов ввода/вывода микроконтроллера. В то время как I2C требует только два контакта и может использоваться совместно с другими периферийными устройствами I2C. Это компромисс между экономией выводов и скоростью.
Благодаря универсальности контроллера SSD1306, модуль поставляется в разных размерах и цветах: например, 128×64, 128 × 32, с белыми OLED, синими OLED и двухцветными OLED. Хорошей новостью является то, что все эти дисплеи взаимозаменяемы.
Требование к источнику питания
Для работы OLED-дисплею не нужна подсветка, поскольку он излучает свой собственный свет. Именно поэтому дисплей имеет такой высокий контраст, чрезвычайно широкий угол обзора и может отображать глубокий уровень черного цвета.
Отсутствие подсветки значительно снижает ток потребления. В среднем дисплей потребляет около 20 мА , хотя это зависит от того, какая часть дисплея задействована.
Рабочее напряжение контроллера SSD1306 составляет от 1,65 до 3,3 В, в то время как для OLED-панели требуется напряжение питания от 7 до 15 В. Все эти различные требования к питанию решаются путем использования схемы Charge Pump. Это позволяет легко подключить модуль к Arduino или любому 5-вольтовому логическому микроконтроллеру без использования преобразователя логического уровня.
Организация памяти SSD1306
Независимо от размера OLED модуля драйвер SSD1306 имеет встроенную память объемом 1 КБ (GDDRAM). Эта область памяти разбита на 8 страниц (от 0 до 7). Каждая страница содержит 128 столбцов / сегментов (блок от 0 до 127). И каждый столбец может хранить 8 бит данных (от 0 до 7):
8 страниц x 128 сегментов x 8 бит данных = 8192 бит = 1024 байт = 1 Кб памяти
Лабораторный блок питания 30 В / 10 А
Подробнее
Каждый бит представляет собой определенный OLED пиксель на экране, который может быть включен или выключен программно.
Базовые функции:
Все функции:
- 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); – Вывод на дисплей строк или содержимого строковых переменных.
- printNumI(int,x,y]); – Вывод на дисплей целого числа или содержимого целочисленной переменной.
- printNumF(float,dec,x,y]]); – Вывод на дисплей вещественного числа или содержимого переменной вещественного типа
- 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); – Вывод на дисплей картинки из массива.
- Для вывода на дисплей картинки из файла с SD-карты нужно вызвать функцию load(x1,y1,x2,y2,data); объекта библиотеки UTFT_SdRaw.Для работы функции load, нужно установить и подключить библиотеки: UTFT_SdRaw и SdFat.
Инициализация работы с дисплеем:
InitLCD( ); Инициализация работы с дисплеем, с указанием его положения. |
InitLCD(PORTRAIT); // инициализация (вертикальное положение)
Параметр:
- Положение может быть горизонтальным или вертикальным:
- положение: PORTRAIT – вертикальное
- положение: LANDSCAPE – горизонтальное (по умолчанию)
Очистка экрана:
clrScr();Очистка экрана с заливкой дисплея чёрным цветом | Параметр: Без параметров. |
fillScr( color ); Очистка экрана с заливкой заданным цветом. |
fillScr(VGA_RED); // красный цвет
Параметр:
- Цет можно задать тремя способами:
- color: По названию цвета – VGA_RED
- color: В формате RGB565 – 0x001F
- color: В формате RGB – 255,100,0
Выбор цвета:
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
Удобнее всего устанавливать цвет по его названию: Полный перечень цветов: 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 – шрифт имитирующий семисегментный индикатор
Графические функции:
drawPixel( x , y );Выводит на дисплей точку. | Параметры:
|
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 );Выводит на дисплей закрашенный текущим цветом круг, определяемый координатами центра и радиусом. | Параметры:
|
Потребление памяти
Интересно оценить объем памяти, потребляемой библиотекой uGFX. Это можно сделать, выполнив сборку различных демонстрационных проектов из состава uGFX, определяя размер получаемых двоичных файлов прошивки. Размер файла прошивки в байтах выводит компилятор GCC в окне Console в среде CoIDE. В таблице приведено потребление памяти для различных демонстрационных проектов.
Демонстрационное приложение |
Путь |
Объем памяти программ, байт |
|
Без оптимизации (–O0) |
Оптимизация по размеру кода (–Os) |
||
Окно Graph — двумерный график |
\demos\modules\gwin\graph\ |
27 388 |
21 328 |
Отображение текстовых строк двумя различными шрифтами высотой 10 и 11 пикселей. Шрифты хранятся в памяти программ |
\demos\modules\gdisp\fonts\ |
32 452 |
26 544 |
Полноценный графический интерфейс пользователя |
\demos\modules\gwin\widgets\ |
75 724 |
50 084 |
Компилятор ARM GCC позволяет оптимизировать получаемый файл прошивки. В таблице приведены полученные размеры прошивок для двух случаев — компиляция без оптимизации (опция компилятора –O0) и с оптимизацией по размеру файла (опция –Os).
Надо отметить, что автор не получил работающее приложение с полноценным графическим интерфейсом пользователя (таблица) по причине нехватки памяти ОЗУ (у выбранного микроконтроллера всего 8 кбайт).
Результаты, приведенные в таблице, подтверждают сказанное в начале статьи о необходимости выбора микроконтроллера с достаточно большими объемами памяти. При этом объемы памяти, указанные в таблице, — отправная точка, в реальном приложении дополнительная память потребуется как на само приложение, так и на хранение растровых графических объектов (например, шрифтов). Память ОЗУ также будет расходоваться на создание каждого графического элемента (окно, кнопка, консоль и т. п.).
Step 2: Install the Correct Libraries
Luckily for us, Adafruit have a very similar display that they have written libraries for. I have the display which is powered by the ILI9340 driver so I installed that library so I assume if you have a display with the ILI9341 driver it works exactly the same with the other library that I linked. I haven’t seen any other drivers used but if you do, I recommend searching the Adafruit libraries on github.
EDIT:
My arduino IDE updated and it didn’t like having hyphens/underscores in folder names of libraries. If you are getting an error message complaining about these characters try removing them from the folder names (but not the names of the .h and .cpp files).
3Стандартная библиотека для работы по интерфейсу SPI
Для Arduino написана специальная библиотека, которая реализует протокол SPI. Она устанавливается вместе со средой разработки Arduino IDE. Подключается она так: в начале программы добавляем #include SPI.h.
Чтобы начать работу по протоколу SPI, нужно задать настройки и затем инициализировать протокол с помощью процедуры SPI.beginTransaction(). Можно выполнить это одной инструкцией: SPI.beginTransaction(SPISettings(14000000, MSBFIRST, SPI_MODE0))
Это значит, что мы инициализируем протокол SPI на частоте 14 МГц, передача данных идёт, начиная с MSB (наиболее значимого бита), в режиме SPI_MODE0.
После инициализации выбираем ведомое устройство, переводя соответствующий пин SS в состояние LOW. Затем передаём ведомому устройству данные командой SPI.transfer(). После передачи возвращаем SS в состояние HIGH.
Временная диаграмма работы интерфейса SPI
Работа с протоколом завершается командой SPI.endTransaction().
Желательно минимизировать время выполнения передачи между инструкциями SPI.beginTransaction() и SPI.endTransaction(), чтобы не возникло накладок, если другое устройство попробует инициализировать передачу данных, используя другие настройки.
Если вы планируете в своём скетче использовать стандартные пины Arduino, можно не описывать их в начале программы, т.к. они уже определены в самой библиотеке и имеют следующие имена:
#define PIN_SPI_SS (10) #define PIN_SPI_MOSI (11) #define PIN_SPI_MISO (12) #define PIN_SPI_SCK (13)
Данные пины определены в файле pins_arduino.h , который находится по пути %programfiles%\arduino-(версия)\hardware\arduino\avr\variants\ (если вы устанавливали программу в стандартное расположение). То есть, например, чтобы опустить пин выбора ведомого в состояние «0», можно написать:
digitalWrite(PIN_SPI_SS, LOW);
Возможно, вам также будет интересно
При явном изобилии на рынке дешевых 32‑разрядных микроконтроллеров может возникнуть сомнение: зачем использовать 8‑разрядный процессор при доступности более современных 32‑разрядных версий? Реальные цифры показывают обратное: продажи 8‑битных микроконтроллеров продолжают расти, они активно закладываются в новые проекты. Причин тому несколько: стоимость микроконтроллера и решения на его основе, включая компоненты обвязки, ниже, чем у конкурирующих архитектур; сравнительная простота разработки и отладки кода; вычислительная
Задача получения правильных результатов измерения температуры в большинстве случаев может быть решена при применении резистивных датчиков температуры (РТД), которые представлены на рынке в большом количестве конструктивных исполнений и точностных характеристик. Они являются одними из наиболее стабильных и точных температурных датчиков, работающих в температурном диапазоне приблизительно от -200 до 800 °C, и используются там, где требуется
LTE Cat.4-смарт-модуль SC20 на базе операционной системы Android 5.1 от Quectel
Step 1: SChematic
The TFT LCD (3.5 inch, 320×480 pixel, ILI9488 LCD controller), is used for this instructable.
The LCD is easily interfaced with Arduino SPI bus, and it needs minimum of four Digital IO lines.
The ILI9488 LCD Controller is a 16.7M single-chip SoC driver for a-Si TFT liquid crystal display panels with a resolution of 320(RGB) x 480 dots.
The ILI9488 is comprised of a 960-channel source driver, a 480-channel gate driver, 345,600 bytes GRAM for graphic data of 320 (RGB) x 480 dots, and power supply circuit.
The LCD operates at 3.3 Volt Logic.
Arduino SPI port is connected to the LCD ( D13- SCLK, and D11 – MOSI).
Arduino Digital IO pin D9 and D10 is connected to RS and CS pin of LCD.
DHT22 digital temperature / humidity sensor delivers temperatures between -40°C and +80°C and humidity between 0% to 100%. The temperature accuracy is ±0.1°C (maximum).
The DHT22 data pin is connected with Arduino digital IO pin, and pulled up to Vcc, via 10K ohm resistor.
DHT22 (AM2302) outputs calibrated digital data signal. Every DHT22 sensor of this model is temperature compensated and calibrated in accurate calibration chamber and the calibration-coefficient is saved in internal OTP memory.
The sensor supports long transmission distance.
Arduino reads the temperature and humidity at 2 second interval and sends to the serial port as well as displays on LCD screen.
The conversion formula for Celsius to other scale are given below.
Fahrenheit:- T(°F) = T(°C) × 9/5 + 32
Kelvin:- T(K) = T(°C) + 273.15
Rankine:- T(°R) = (T(°C) + 273.15) × 9/5
Подготовка Raspberry Pi к подключению TFT ЖК дисплея
Когда вы подключите TFT ЖК дисплей к плате Raspberry Pi как описано в предыдущем пункте вы увидите на экране дисплея только пустой белый экран. Это вызвано тем, что у вас в плате не установлено никаких драйверов для работы с ЖК дисплеем. Поэтому откройте окно термина на плате Raspberry Pi и выполните следующую последовательность шагов.
Шаг 1. Зайдите в панель настроек платы.
Это можно сделать с помощью команды:
Shell
sudo raspi-config
1 | sudo raspi-config |
Шаг 2. В настройках выберите пункт Boot Options -> Desktop/CLI (настройки загрузки платы) и выберите там опцию B4 Desktop Autologin Desktop GUI – это позволит вашей плате при загрузке выполнять автоматический вход в операционную систему без ввода пароля.
Шаг 3. Снова перейдите в основное меню настроек и включите в них использование интерфейса SPI (с помощью данного интерфейса мы будем взаимодействовать с ЖК дисплеем) как показано на следующем рисунке.
Шаг 5. После того, как ZIP архив будет в необходимом для нас месте, установите этот драйвер с помощью команды:
Shell
tar xvf LCD-show-*.tar.gz
1 | tar xvf LCD-show-*.tar.gz |
Примечание: перед выполнением данной команды убедитесь в том, что ваша плата Raspberry Pi подключена к сети интернет.
Шаг 6. После установки драйвера вы можете включить использование (enable) дисплея в плате с помощью команды:
Shell
cd LCD-show/
1 | cdLCD-show |
Шаг 7. После этого перезагрузите плату.
Shell
sudo reboot
1 | sudo reboot |
В результате выполнения этой команды автоматически закроется окно терминала. Затем в процессе загрузки платы вы должны заметить что на ЖК дисплее также будет отображаться информация о загрузке и в конце завершения этого процесса вы должны увидеть на экране ЖК дисплея рабочий стол операционной системы как показано на следующем рисунке.
Более подробно все описанные в статье процессы вы можете посмотреть на видео, приведенном в конце статьи. В нашем случае мы были полностью удовлетворены настройками дисплея по умолчанию и не производили никакой калибровки дисплея. Но если вы хотите заняться этим, то посетите официальную , на которой описано как производить калибровку дисплея и как подключить трансляцию с камеры на экран дисплея.
Заключение
Небольшие подключаемые TFT-дисплеи для Raspberry Pi отлично подходят для работы с консолью в полевых условиях и способны стать заменой обычному полноразмерному монитору.
Также они могут использоваться в DIY-устройствах на базе Raspberry Pi (умный дом, медиацентр, 3d-принтер, станок с ЧПУ) для вывода информации и управления через специально созданный с учетом низкого разрешения и малой диагонали графический интерфейс.
Но для работы в Raspbian PIXEL они непригодны по причине отсутствия адаптации к разрешениям ниже 1024×600 в этом GUI.
К качеству работы обозреваемого в этой статье дисплея у меня претензий нет. Но на данный момент мне просто некуда его применить, так что он отправляется отдыхать на полку. Планирую в дальнейшем задействовать его в устройстве «умного дома».