Arduino:Примеры/Esplora TFT Graph

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

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


Построение графика на TFT-экране Esplora [1]

Этот пример для Esplora (и подключенного к ней TFT-экрана Arduino) считывает данные о яркости, исходящие от встроенного светового датчика, а затем в графическом виде отображает их на экране. То есть этот пример аналогичен примеру «График», использующему последовательную передачу данных.

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

  • Плата Arduino Esplora;
  • TFT-экран Arduino;

Цепь

Esplora GLCDGraph.png

Подключите TFT-экран к сокету на Esplora, но так, чтобы надпись «SD Card» была вверху.

Код

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

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

Создаем переменную, которая будет хранить информацию о Х-оси графика. Мы будем увеличивать это значение при каждом проходе через цикл loop(). В блоке setup() инициализируем экран и окрашиваем фон в приятный цвет.

1 int xPos = 0;
2 
3 void setup(){
4   EsploraTFT.begin();
5   EsploraTFT.background(250,16,200); 
6 }

В блоке loop() считываем данные от светового датчика, а затем приспосабливаем их к высоте экрана.

1 void loop(){
2   int sensor = Esplora.readLightSensor();
3   int graphHeight = map(sensor,0,1023,0,EsploraTFT.height());

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

1 EsploraTFT.stroke(250,180,10);
2   EsploraTFT.line(xPos, EsploraTFT.height() - graphHeight, xPos, EsploraTFT.height());

Перед закрытием loop() проверяем, не заскочил ли наш график за край экрана. Если да, стираем все и начинаем с нуля по оси X.

1 if (xPos >= 160) {
2     xPos = 0;
3     EsploraTFT.background(250,16,200); 
4   } 
5   else {
6     xPos++;
7   }
8   delay(16);
9 }

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

 1 /*
 2 Построение графика на TFT-экране, подключенном к Esplora
 3 
 4 Этот пример использует плату Esplora и TFT-экран Arduino.
 5 Он считывает данные, идущие от светового датчика,
 6 а затем в графическом виде выводит их на экран.
 7 
 8 Этот код не защищен авторским правом.
 9 
10 Создан 15 апреля 2013 Скоттом Фитцджеральдом (Scott Fitzgerald)
11 
12 http://www.arduino.cc/en/Tutorial/EsploraTFTGraph
13 */
14 
15 #include <Esplora.h>
16 #include <TFT.h>  // библиотека LCD-экрана Arduino
17 #include <SPI.h>
18 
19 // Позиция линии на экране:
20 int xPos = 0;
21 
22 void setup() {
23 
24   // Инициализируем экран:
25   EsploraTFT.begin();
26 
27   // Очищаем экран, «заливая» его приятным цветом:
28   EsploraTFT.background(250, 16, 200);
29 }
30 
31 void loop() {
32 
33   // Считываем значение от светового датчика:
34   int sensor = Esplora.readLightSensor();
35   // Приспосабливаем данные от датчика к высоте экрана:
36   int graphHeight = map(sensor, 0, 1023, 0, EsploraTFT.height());
37 
38   // Рисуем линию контрастирующего цвета:
39   EsploraTFT.stroke(250, 180, 10);
40   EsploraTFT.line(xPos, EsploraTFT.height() - graphHeight, xPos, EsploraTFT.height());
41 
42   // Если график достигает края экрана, стираем его,
43   // а затем заново начинаем с другой стороны:
44   if (xPos >= 160) {
45     xPos = 0;
46     EsploraTFT.background(250, 16, 200);
47   } else {
48     // Увеличиваем позицию по горизонтали:
49     xPos++;
50   }
51 
52   delay(16);
53 }

См.также

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