Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/TFTDisplayText

Материал из Онлайн справочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Отображение текста на TFT-экране [1]

GLCD DisplayTextDemo.png

Этот пример демонстрирует, как отобразить текст на TFT-экране Arduino, подключенном к плате Arduino. Плата считывает значения с датчика, подключенного к 0-ому аналоговому контакту (A0), а затем показывает их на TFT-экране, обновляя данные каждую четверть секунды.

Необходимое оборудование

  • Плата Arduino Uno;
  • TFT-экран Arduino;
  • Макетная плата Breadboard;
  • Провода-перемычки;
  • 10 кОм-овый потенциометр;

Цепь

Подключите контакты с питанием и «землей» к макетной плате.

GLCD text1.png

Подключите к макетной плате потенциометр: боковые контакты к «земле» и питанию, а центральный – к 0-ому аналоговому контакту.

GLCD text2.png

Подключите TFT-экран к макетной плате. Подключить его нужно той стороной, где находятся стрелочка и маленькая голубая полоска. Также обратите внимание на ориентацию экрана. На этих рисунках он подсоединен вверх тормашками.

GLCD text3.png

Контакты BL и +5V подключите к питанию, а GND – к «земле». CS-LD подключите к 10-ому контакту, DC – к 9-ому, RESET – к 8-ому, MOSI – к 11-ому, а SCK – к 13-ому. В случае с Leonardo вам надо будет использовать другие контакты, читайте об этом на странице о TFT-экране или в коде ниже.

GTFT text large.png

Код

Чтобы использовать экран, сначала подключите библиотеки TFT и SPI.

  1. #include <SPI.h>
  2. #include <TFT.h>

Далее определяем контакты, которые будем использовать для управления экраном, а затем создаем экземпляр класса TFT под названием TFTscreen. Вы будете отсылать к этому объекту всякий раз, когда будете работать с экраном.

  1. #define cs   10
  2. #define dc   9
  3. #define rst  8  
  4.  
  5. TFT TFTscreen = TFT(cs, dc, rst);

Чтобы обновлять текст на экране, вам понадобится char-массив, в котором будет храниться динамический контент.

  1. char sensorPrintout[4];

В секции setup() инициализируем экран и очищаем фон. При помощи функции stroke() задаем цвет статической надписи, а затем рисуем ее на экране – в данном случае это будет надпись «Sensor Value :» (т.е. «Значение от датчика :»).

Она будет постоянно висеть в верхней части экрана и все время работы скетча будет оставаться неизменной. Перед тем, как перейти к циклу loop(), задаем размер текста – такой, чтобы нижняя надпись (о ней позже) сильно выделялась на его фоне.

  1. void setup() {
  2.   TFTscreen.begin();
  3.  
  4.   TFTscreen.background(0, 0, 0);
  5.  
  6.   TFTscreen.stroke(255,255,255);
  7.   TFTscreen.setTextSize(2);
  8.   TFTscreen.text("Sensor Value : ",0,0);
  9.   TFTscreen.setTextSize(5);
  10. }

В блоке loop() считываем значение потенциометра и сохраняем его в строку. Затем конвертируем содержимое строки в глобальный char-массив, объявленный вами в начале скетча.

  1. void loop() {
  2.  
  3.   String sensorVal = String(analogRead(A0));
  4.  
  5.   sensorVal.toCharArray(sensorPrintout, 4);

Задаем цвет текста (хорошая идея – менять цвет в зависимости от значений, полученных от потенциометра), а затем отображаем его ниже статической надписи «Sensor Value».

  1. TFTscreen.stroke(255,255,255);
  2.   TFTscreen.text(sensorPrintout, 0, 20);

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

  1. delay(250);
  2.   TFTscreen.stroke(0,0,0);
  3.   TFTscreen.text(sensorPrintout, 0, 20);
  4. }

Весь код полностью – ниже:

  1. /*
  2. Отображение текста на TFT-экране Arduino
  3.  
  4. Этот пример демонстрирует, как напечатать текст на TFT-экране Arduino.
  5. Плата считывает данные с аналогового датчика, подключенного к 0-ому
  6. аналоговому контакту, а затем показывает их на TFT-экране,
  7. обновляя каждые четверть секунды.
  8.  
  9. Этот код не защищен авторским правом.
  10.  
  11. Создан 15 апреля 2013 Скоттом Фитцджеральдом (Scott Fitzgerald).
  12.  
  13. http://www.arduino.cc/en/Tutorial/TFTDisplayText
  14. */
  15.  
  16. #include <TFT.h>  // библиотека TFT-экрана Arduino
  17. #include <SPI.h>
  18.  
  19. // Определяем контакты для Arduino Uno:
  20. #define cs   10
  21. #define dc   9
  22. #define rst  8
  23.  
  24. // Определяем контакты для Arduino Leonardo (в случае использования раскомментируйте):
  25. // #define cs   7
  26. // #define dc   0
  27. // #define rst  1
  28.  
  29. // Создаем экземпляр класса TFT:
  30. TFT TFTscreen = TFT(cs, dc, rst);
  31.  
  32. // Создаем char-массив для информации, которую будем печатать на экране:
  33. char sensorPrintout[4];
  34.  
  35. void setup() {
  36.  
  37.   // Эта строка необходима в начале каждого скетча, где используется TFT-экран:
  38.   TFTscreen.begin();
  39.  
  40.   // Очищаем фон экрана, заливая его черным цветом:
  41.   TFTscreen.background(0, 0, 0);
  42.  
  43.   // Пишем на экране статическую надпись и делаем ее белой:
  44.   TFTscreen.stroke(255, 255, 255);
  45.   // Задаем размер шрифта:
  46.   TFTscreen.setTextSize(2);
  47.   // Размещаем эту надпись в верхнем левом углу экрана:
  48.   TFTscreen.text("Sensor Value :\n ", 0, 0);  //  "Значение от датчика :"
  49.   // Размер надписи с данными от потенциометра делаем гораздо больше:
  50.   TFTscreen.setTextSize(5);
  51. }
  52.  
  53. void loop() {
  54.  
  55.   // Считываем данные с датчика на 0-ом аналоговом контакте (A0):
  56.   String sensorVal = String(analogRead(A0));
  57.  
  58.   // Конвертируем их в char-массив:
  59.   sensorVal.toCharArray(sensorPrintout, 4);
  60.  
  61.   // Задаем цвет надписи:
  62.   TFTscreen.stroke(255, 255, 255);
  63.   // Печатаем текст:
  64.   TFTscreen.text(sensorPrintout, 0, 20);
  65.   // Немного ждем:
  66.   delay(250);
  67.   // Стираем только что написанный текст:
  68.   TFTscreen.stroke(0, 0, 0);
  69.   TFTscreen.text(sensorPrintout, 0, 20);
  70. }

См.также

Внешние ссылки

  1. Arduino - TFT Display Text