Руководство по дисплею 1.8 TFT с Arduino
В этом руководстве мы покажем вам, как использовать дисплей 1.8 TFT с Arduino. Вы узнаете, как подключить дисплей, выводить текст, рисовать фигуры и отображать изображения на экране.
Знакомство с дисплеем 1.8 TFT
1.8 TFT — это цветной дисплей с разрешением 128 x 160 цветных пикселей. Дисплей может загружать изображения с SD-карты — на задней стороне есть слот для SD-карты. На следующем рисунке показан вид экрана спереди и сзади.
Этот модуль использует SPI-интерфейс — см. подключение ниже. Для управления дисплеем мы будем использовать библиотеку TFT, которая уже включена в Arduino IDE 1.0.5 и более поздние версии.
Где купить?
Вы можете приобрести дисплей 1.8 TFT примерно за $3 — проверьте цены на Maker Advisor.
Вы можете воспользоваться приведёнными выше ссылками или перейти напрямую на MakerAdvisor.com/tools, чтобы найти все детали для ваших проектов по лучшей цене!
Подключение выводов
В таблице ниже показано подключение дисплея 1.8 TFT к Arduino UNO.
1.8 TFT Display |
Подключение к Arduino Uno |
|---|---|
LED |
3.3 V |
SCK |
13 |
SDA |
11 |
A0 или DC |
9 |
RESET |
8 |
CS |
10 |
GND |
GND |
VCC |
5 V |
Примечание: у разных плат Arduino разные выводы SPI. Если вы используете другую плату Arduino, проверьте официальную документацию Arduino.
Инициализация дисплея
Дисплей TFT общается с Arduino по SPI-интерфейсу, поэтому вам нужно подключить библиотеку SPI в вашем коде. Мы также используем библиотеку TFT для записи и рисования на дисплее.
#include <TFT.h>
#include <SPI.h>
Затем вам нужно определить выводы CS, A0 (или DC) и RST:
#define cs 10
#define dc 9
#define rst 8
Создайте экземпляр библиотеки с именем TFTscreen:
TFT TFTscreen = TFT(cs, dc, rst);
Наконец, в функции setup() вам нужно инициализировать библиотеку:
TFTscreen.begin();
Вывод текста
Для вывода текста на дисплей вы можете настроить цвет фона экрана, размер и цвет шрифта.
Чтобы установить цвет фона, используйте:
TFTscreen.background(r, g, b);
Где r, g и b — это значения RGB для заданного цвета. Чтобы выбрать цвет шрифта:
TFTscreen.stroke(r, g, b);
Чтобы установить размер шрифта:
TFTscreen.setTextSize(2);
Вы можете увеличить или уменьшить число, переданное в качестве аргумента, чтобы увеличить или уменьшить размер шрифта.
Наконец, чтобы вывести текст на дисплей, используйте следующую строку:
TFTscreen.text("Hello, World!", x, y);
Где «Hello, World!» — это текст, который вы хотите отобразить, а координата (x, y) — это позиция, с которой вы хотите начать вывод текста на экране.
Код
Следующий пример выводит «Hello, World!» в середине экрана и меняет цвет шрифта каждые 200 миллисекунд.
Скопируйте следующий код в Arduino IDE и загрузите его на плату Arduino.
/*
* Rui Santos
* Complete Project Details https://randomnerdtutorials.com
*/
// include TFT and SPI libraries
#include <TFT.h>
#include <SPI.h>
// pin definition for Arduino UNO
#define cs 10
#define dc 9
#define rst 8
// create an instance of the library
TFT TFTscreen = TFT(cs, dc, rst);
void setup() {
//initialize the library
TFTscreen.begin();
// clear the screen with a black background
TFTscreen.background(0, 0, 0);
//set the text size
TFTscreen.setTextSize(2);
}
void loop() {
//generate a random color
int redRandom = random(0, 255);
int greenRandom = random (0, 255);
int blueRandom = random (0, 255);
// set a random font color
TFTscreen.stroke(redRandom, greenRandom, blueRandom);
// print Hello, World! in the middle of the screen
TFTscreen.text("Hello, World!", 6, 57);
// wait 200 miliseconds until change to next color
delay(200);
}
Вот ваш текст «Hello, World!» на дисплее 1.8 TFT.
Отображение фигур
Библиотека TFT предоставляет полезные функции для рисования фигур на дисплее:
TFTscreen. point(x, y) — отображает точку по координатам (x, y)
TFTscreen. line(xStart, yStart, xEnd, yEnd) — рисует линию, которая начинается в точке (xStart, yStart) и заканчивается в точке (xEnd, yEnd)
TFTscreen. rect(xStart, yStart, width, height) — рисует прямоугольник с верхним левым углом в точке (xStart, yStart) с заданной шириной и высотой
TFTscreen. .circle(x, y, radius) — рисует круг с центром в точке (x, y) с указанным радиусом
Код
Следующий пример отображает несколько фигур. Каждый раз, когда код проходит через цикл, фигуры меняют цвет.
Скопируйте следующий код в Arduino IDE и загрузите его на плату Arduino.
/*
* Rui Santos
* Complete Project Details https://randomnerdtutorials.com
*/
// include TFT and SPI libraries
#include <TFT.h>
#include <SPI.h>
// pin definition for Arduino UNO
#define cs 10
#define dc 9
#define rst 8
// create an instance of the library
TFT TFTscreen = TFT(cs, dc, rst);
void setup() {
//initialize the library
TFTscreen.begin();
// clear the screen with a black background
TFTscreen.background(0, 0, 0);
}
void loop() {
//generate a random color
int redRandom = random(0, 255);
int greenRandom = random (0, 255);
int blueRandom = random (0, 255);
// set the color for the figures
TFTscreen.stroke(redRandom, greenRandom, blueRandom);
// light up a single point
TFTscreen.point(80,64);
// wait 200 miliseconds until change to next figure
delay(500);
// draw a line
TFTscreen.line(0,64,160,64);
delay(500);
//draw a square
TFTscreen.rect(50,34,60,60);
delay(500);
//draw a circle
TFTscreen.circle(80,64,30);
delay(500);
//erase all figures
TFTscreen.background(0,0,0);
}
Вот фигуры на дисплее:
Отображение изображений
Дисплей 1.8 TFT может загружать изображения с SD-карты. Для чтения с SD-карты используется библиотека SD, уже включённая в программное обеспечение Arduino IDE. Выполните следующие шаги, чтобы отобразить изображение на дисплее:
1) Припаяйте штыревые разъёмы для SD-карты. На стороне, противоположной выводам дисплея, расположены четыре контакта, как показано на рисунке ниже.
2) Дисплей может загружать изображения больше или меньше размера дисплея (160 x 128 пикселей), но для лучших результатов измените размер вашего изображения до 160 x 128 пикселей.
3) Изображение должно быть в формате .bmp. Для этого вы можете использовать программу для редактирования фотографий и сохранить изображение в формате .bmp.
4) Скопируйте изображение на SD-карту и вставьте её в слот для SD-карты на задней стороне дисплея.
5) Подключите выводы SD-карты к Arduino, следуя таблице ниже:
SD-карта на TFT дисплее |
Подключение к Arduino Uno |
|---|---|
CS |
4 |
MOSI |
11 |
MISO |
12 |
SCK |
13 |
И дисплей, и SD-карта работают по SPI-интерфейсу, поэтому на Arduino у вас будут выводы с двумя подключениями.
6) В Arduino IDE перейдите в File > Examples > TFT > Arduino > TFTBitmaLogo.
7) Отредактируйте код так, чтобы он искал ваше изображение. Замените «arduino.bmp» на имя вашего изображения:
// now that the SD card can be access, try to load the image file
logo = TFTscreen.loadImage("arduino.bmp");
8) Загрузите код на Arduino.
Примечание: некоторые пользователи сталкиваются с проблемами при использовании этого дисплея при попытке чтения с SD-карты. Мы не знаем, почему это происходит. На самом деле, мы тестировали несколько раз, и всё работало хорошо, а затем, когда мы собирались записать видео, чтобы показать вам конечный результат, дисплей перестал распознавать SD-карту — мы не уверены, является ли это проблемой держателя SD-карты, который не обеспечивает надёжного контакта с SD-картой. Тем не менее, мы уверены, что эти инструкции работают, потому что мы их протестировали.
Заключение
В этом руководстве мы показали вам, как использовать дисплей 1.8 TFT с Arduino: выводить текст, рисовать фигуры и отображать изображения. Вы можете легко добавить красивый визуальный интерфейс в свои проекты, используя этот дисплей.
У вас есть проекты с дисплеем 1.8 TFT? Расскажите нам в комментариях ниже.
Если вам понравился этот пост, вам также могут быть полезны:
Спасибо за чтение.