Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Графики TFT:графики живой истории

Компоненты и расходные материалы

Arduino Mega 2560
× 1
Датчик температуры и влажности DHT11 (4 контакта)
× 1
Elegoo 2,8-дюймовый ЖК-экран с TFT-экраном
× 1
Перемычки (общие)
× 1
Макет (общий)
× 1

Приложения и онлайн-сервисы

Веб-редактор Arduino

Об этом проекте

Обзор

Вы когда-нибудь хотели профессионально отобразить свои данные на ЖК-экране 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

Производственный процесс

  1. Растровая анимация на сенсорном экране TFT ILI9341
  2. Arduino Spybot
  3. FlickMote
  4. Самодельный телевизор B-Gone
  5. Основные часы
  6. Найди меня
  7. Arduino Power
  8. Tech-TicTacToe
  9. Отображение изображения на ЖК-экране TFT с помощью Arduino UNO!
  10. Четвероногий Arduino