Графики TFT:графики живой истории
Компоненты и расходные материалы
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Приложения и онлайн-сервисы
|
Об этом проекте
Обзор
Вы когда-нибудь хотели профессионально отобразить свои данные на ЖК-экране TFT? Но есть проблема, особенно сложно создать график из-за всех необходимых вычислений.
Этот проект направлен на то, чтобы снять с ваших плеч весь этот стресс и позволить вам создать свой собственный персонализированный график истории, отображающий все, что вы хотите, за считанные секунды. Все, что вам нужно сделать, это отредактировать 5 переменных.
Видео
Изображение
Функциональность
Этот проект призван сделать построение графиков простым и увлекательным для всех, все сложные вычисления выполнены, все, что нужно сделать пользователю, - это отредактировать 2 переменные и выбрать цвет для их графика. Вот несколько примеров, показывающих разнообразие графика.
График будет отображать температуру в реальном времени, с интервалом в 6 секунд, значение будет отображаться точкой, точка будет соединена с другими точками линией. Секунды, прошедшие с момента запуска кода, будут отображаться на оси x с диапазоном значений на оси y.
Проект работает просто:Arduino Mega считывает значение датчика DHT 11 и сохраняет температуру в переменной, а затем отображает значение на настраиваемом графике. Вот диаграмма, иллюстрирующая обзор функций.
Вот изображение, показывающее обзор кода проекта.
-
Считать температуру
будет считывать температуру с датчика
-
Данные процесса
обработает показания датчика и отобразит их на графике.
-
Данные графика
отобразит сопоставленные значения на графике.
Все, что вам нужно знать, чтобы продолжить этот проект, - это общее представление о том, как все расположено на TFT LCD, это объясняется ниже.
Я называю весь ЖК-дисплей холстом, здесь все прорисовывается, все библиотеки ЖК-дисплея TFT работают аналогично, поэтому функции в этом коде также должны работать с другими библиотеками. Ниже представлен эскиз четырехугольника (прямоугольника), нарисованного на ЖК-экране TFT.
В этом эскизе нарисован прямоугольник, каждая точка помечена, строка кода, которая используется для рисования прямоугольника, выглядит следующим образом:
tft.fillRect (originX, originY, sizeX, sizeY, Color);
-
originX
Обозначается буквой z на диаграмме выше, это расстояние от правой части экрана до фигуры.
-
originY
обозначается на эскизе знаком "x", это расстояние от верхней части экрана до формы.
-
sizeX
- размер фигуры по оси x, это длина фигуры.
-
sizeY
- размер фигуры по оси Y, это высота фигуры.
Преимущества
пользователь работает это проект будет выгода В:
- Графические данные датчика на ЖК-дисплее TFT
- Сделайте это за секунды.
Создание проекта
Шаг 1: Обязательно Аппарат
В этом проекте для получения данных о температуре используется датчик температуры и влажности DHT 11, но можно использовать любой датчик, замена датчика будет объяснена ниже.
- 1, Arduino Mega
- 1, ЖК-экран Elegoo 2,8 'TFT
- 1, датчик DHT 11
- 1, макет
- Проволочные перемычки
Шаг 2: Подключение the Схема
Вот схемы для проекта, просто прикрепите датчик DHT 11 к Arduino Mega, и все готово.
Шаг 3. Подтверждение кода
Код состоит из трех основных частей:
- Настроить график
- Считать температуру
- Нарисуйте график
Эти разделы описаны ниже.
- Настроить график
// рисуем заголовок tft.setCursor (10, 10); // устанавливаем курсор tft.setTextColor (BLUE); // устанавливаем цвет текста tft.setTextSize (4); // устанавливаем размер текста tft.println (graphName); // рисуем контур tft.drawLine (originX, originY, (originX + sizeX), originY, graphColor); tft.drawLine (originX, originY, originX, (originY - sizeY), graphColor); // рисуем метки для (int i =0; i
Эта часть кода рисует контур графика, линии осей x и y, а также метки и метки оси y значениями.
- Прочитать Температура
chk =DHT.read11 (22); temp =(DHT.temperature);
Эта короткая строка кода считывает температуру с датчика DHT 11 и затем сохраняет ее в переменной.
- Рисовать График
if (blockPos <8) {// выводим время tft.setCursor ((mark [valuePos] - 5), (originY + 16)); tft.setTextColor (graphColor, БЕЛЫЙ); tft.setTextSize (1); tft.println (timeBlock [valuePos]); // сопоставляем значение locationBlock [valuePos] =map (temp, 0, graphRange, originY, (originY - sizeY)); // рисуем точку tft.fillRect ((mark [valuePos] - 1), (locationBlock [valuePos] - 1), markSize, markSize, pointColor); // пытаемся подключиться к предыдущей точке if (valuePos! =0) {tft.drawLine (mark [valuePos], locationBlock [valuePos], mark [(valuePos - 1)], locationBlock [(valuePos - 1)], lineColor); } blockPos ++; } else {// очищаем холст графика tft.fillRect ((originX + 2), (originY - sizeY), sizeX, sizeY, WHITE); // отображаем значение - текущая точка locationBlock [valuePos] =map (temp, 0, graphRange, originY, (originY - sizeY)); // рисование точки - текущая точка tft.fillRect ((mark [7]), (locationBlock [valuePos] - 1), markSize, markSize, pointColor); // рисуем все точки для (int i =0; i <8; i ++) {tft.fillRect ((mark [(blockPos - (i + 1))] - 1), (locationBlock [(valuePos - i)] - 1), markSize, markSize, pointColor); } // рисуем все линии для (int i =0; i <7; i ++) {tft.drawLine (mark [blockPos - (i + 1)], locationBlock [valuePos - i], mark [blockPos - (i + 2)], locationBlock [valuePos - (i + 1)], lineColor); } // меняем метки времени для (int i =0; i <=8; i ++) {tft.setCursor ((mark [(blockPos - i)] - 5), (originY + 16)); tft.setTextColor (graphColor, БЕЛЫЙ); tft.setTextSize (1); tft.println (timeBlock [valuePos - i]); }} valuePos ++;
Эта длинная часть кода нарисует точки графика на их значениях, а затем соединит их линиями, код проверяет, заполнен ли холст графика, если это так, он начнет выталкивать первое значение графика. и перемещая остальные вверх, чтобы освободить место для вставки нового значения, если еще осталось место, устройство будет продолжать добавлять значения через определенные промежутки времени.
Персонализация графика
Самое интересное в этом графике то, что он на 100% редактируется, поэтому пользователь может редактировать размер графика, его расположение и цвет, а благодаря его гибкости пользователь также может отображать любые данные на графике. Это все переменные, о которых вам следует позаботиться.
bool proDebug =0; uint16_t graphColor =СИНИЙ; uint16_t pointColor =ЧЕРНЫЙ; uint16_t lineColor =ЗЕЛЕНЫЙ; String graphName ="Временной график"; int graphRange =50; int markSize =3;
-
proDebug
- это утилита отладки, встроенная в проект, по умолчанию она установлена на 0, при установке на 1 / true она будет печатать текущую температуру в Serial Monitor, это утилита отладки, обратите внимание, что если она включена, Serial Monitor должен быть открыт для запуска кода.
-
graphColor
задает цвет графика, линии x и y и их метки устанавливаются на этот цвет.
-
pointColour
представляет цвет точки, показывающей значение на графике.
-
lineColour
устанавливает цвет линии, соединяющей точки на графике, на выбранный цвет.
-
graphRange
является основой графика, обратите внимание, что действительно важно, чтобы он был установлен правильно, он представляет максимальное значение, которое можно изобразить, я использую датчик температуры, я не ожидал, что значение превысит 50 ° C, поэтому я установил значение 50, если вы хотите построить график аналогового входа Raw, вы можете установить для graphRange значение 1024, максимальное значение, которое может отображать аналоговый вывод.
-
markSize
представляет размер точки, обозначающей значение датчика на графике, значение представляет длину квадрата.
И это все, о чем вам нужно беспокоиться, остальные переменные будут вычислены автоматически Arduino.
Изменение the Значение
Приятно изобразить температуру в вашей комнате, но еще лучше, если вы можете отобразить любые данные датчиков на графике, и вы можете, просто отредактировав несколько строк кода, вы могли бы построить график любых данных от влажности почвы до света. интенсивность. Вот как это сделать.
Собираюсь Далее
Вы можете продолжить эксперименты с проектом, попробовать отредактировать константы originX, originY, sizeX и sizeY, чтобы изменить размер и положение вашего графика на экране. К основному эскизу прикреплен заголовочный файл, он содержит цветовые коды некоторых цветов, попробуйте изменить цвет диаграммы и полос. Вот и все, ваш персональный график готов.
Библиотеки
- Библиотеки Elegoo - Copyright (c) Adafruit Industries, 2012 г., под лицензией BSD.
- DHT - Автор Роб Тиллаарт, эта библиотека находится в общественном достоянии.
Фон
Недавно я опубликовал проект, который отображает 1, 2, 3 или 4 значения на гистограмме. Решил опубликовать еще один шаблон для построения графиков. Не существует шаблонов для гистограмм, в которых бы не было линий, которые могли бы запутать, поэтому я решил снова посчитать и опубликовать простой проект, который позволяет каждому изобразить свои данные на графике истории в реальном времени.
Код
TFTHistoryGraph
Весь КодСхема
schematics_g5pey3GWqv.fzzПроизводственный процесс