График данных в реальном времени на Arduino Mega: TFT LCD + DHT11
Компоненты и расходные материалы
| Компонент | Количество |
|---|---|
| Arduino Mega 2560 | 1 |
| Датчик температуры/влажности DHT11 (4 пина) | 1 |
| TFT LCD Shield 2.8" (Elegoo, ILI9341) | 1 |
| Перемычки | 1 набор |
| Макетная плата | 1 |
Среда разработки
- Arduino Web Editor
О проекте
Обзор
Проект позволяет строить живой график («историю») показаний любого датчика на TFT-дисплее. Все расчёты координат, масштабирования и отрисовки уже сделаны — пользователю достаточно изменить 5 переменных. Демонстрируется на DHT11 (температура).
Функционал
- График строит точку каждые 6 секунд, соединяет линиями.
- Ось X — время (секунды от старта), ось Y — значение датчика.
- При заполнении экрана старые значения сдвигаются (scrolling).
- Полная настройка: размер, позиция, цвета, заголовок, диапазон Y.
Принцип работы
- Read Temperature — чтение DHT11.
- Process Data — маппинг значения в координаты экрана.
- Graph Data — отрисовка точки и линии к предыдущей.
Координатная система TFT
Экран — «холст». Функция tft.fillRect(originX, originY, sizeX, sizeY, color):
originX— отступ от левого края (на схеме «z»)originY— отступ от верхнего края («x»)sizeX— ширина фигурыsizeY— высота фигуры
Настраиваемые переменные (в начале скетча)
bool proDebug = 0; // 1 = вывод в Serial Monitor (требует открытого монитора)
uint16_t graphColor = BLUE; // цвет осей и разметки
uint16_t pointColor = BLACK; // цвет точек
uint16_t lineColor = GREEN; // цвет линий
String graphName = "Time Graph"; // заголовок
int graphRange = 50; // максимальное значение по Y (для температуры 50°C)
int markSize = 3; // размер точки (квадрат)
Остальные параметры (размеры осей, координаты меток) вычисляются автоматически.
Смена датчика
Можно графировать любую величину (влажность, освещённость, влагу почвы). Нужно только:
- Подключить другой датчик.
- Изменить код чтения в блоке
Read Temperature. - Выставить
graphRangeпод максимум датчика (напр., 1024 для АЦП).
Сборка
- Установите TFT Shield на Arduino Mega.
- Подключите DHT11: VCC→5V, GND→GND, DATA→Pin 22 (в примере).
- Установите библиотеки: Elegoo TFT (Adafruit GFX совместимая), DHT (Rob Tillaart).
Библиотеки
- Elegoo Libraries (BSD License, based on Adafruit)
- DHT Library (Public Domain)
Исходный код
Полный скетч TFTHistoryGraph.ino прилагается к проекте. Содержит три части: инициализацию графика, чтение датчика, отрисовку с прокруткой.
Схемы
- Изображение схемы подключения
- Файл для Fritzing:
schematics_g5pey3GWqv.fzz
Производственный процесс
- Профессиональное руководство по анимации битмапов на TFT-экране ILI9341 2.4" с Visuino
- Сборка Bluetooth-робота-шпиона на Arduino с управлением с телефона
- FlickMote: жестовое IR-пульт для умного дома на Arduino 101 и ультразвуковом датчике
- DIY Arduino TV-B-Gone: универсальный пульт для выключения любого телевизора
- Создание пользовательских LED-часов с будильником — видно с 12 метров
- Find Me: Умный поисковик вещей на Arduino и Bluetooth
- Оптимизированные решения питания для проектов на Arduino
- Крестики-нолики на Arduino с матрицей MAX7219 и картонным корпусом
- Вывод изображений на 1.17-дюймовый TFT LCD с Arduino UNO
- Пошаговое руководство: сборка умного четырёхногого робота на Arduino